infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Muntean Lucian din Octombrie 07, 2012, 12:10:39



Titlul: Problema Multimi
Scris de: Muntean Lucian din Octombrie 07, 2012, 12:10:39
Salutare!
Am o problema cu rezolvarea problemei multimi (http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=784) 
pentru multimile 5-10, 4-11, 2-9 imi afiseaza intersectia 2-9, n-am reusit sa gasesc greseala facuta...
Las fragmentul corespunzator.
Cod:
if n>2 then begin
   read(a);
   read(b);
   read(c);
   read(d);
   if a<c then
      x:=c;
   if b<d then
      y:=b;

   for i:=1 to (n-2) do begin
       read(a);
       read(b);
       if a>x then
          x:=a
       if b<y then
          y:=b
   end;

   if x>=y then begin
      writeln('Intersectia este multimea vida');
      readln;
      readln;
   end
   else begin
        writeln('Intersectia celor ',n,' multimi este: ',x,',',y);
        readln;
        readln;
   end;
end;


Titlul: Răspuns: Problema Multimi
Scris de: Vidrean Mihai din Octombrie 07, 2012, 13:04:12
Pai gandestete un pic tu faci urmatoarea chestie.Daca a<c rezulta x:=c dar pentru exemplu a>c(5>4) si atunci lui x nu i se atribuie nici o valoare pana cand il citesti pe 2.Si astfel tie iti ramane multimea de la 2 la 9 in loc sa fie de la  5 la 9.Ai putea face un else la primele if-uri sau sa citesti doar valorile a si b la inceput dupa care x:=a , y:=b si faci for-ul la fel doar ca pana la n-1. :wink:(sper ca am fost de ajutor)


Titlul: Răspuns: Problema Multimi
Scris de: Muntean Lucian din Octombrie 07, 2012, 13:06:07
Multumesc! :D
Vai  :aha: nu mi-as fi dat seama...
Am corectat, acum functioneaza!
Cod:
   if a<c then
      x:=c
   else x:=a;
   if b<d then
      y:=b
   else y:=d;