Małpożer Opublikowano 11 Lutego 2011 Zgłoś Opublikowano 11 Lutego 2011 Witam, Ostatnio w szkole zadano mi do zrobienia kilka zadan z main.edu.pl. Mam maly problem z jednym z zadan, tj. Prostokat (opisa zadania tutaj). Problem lezy w samym obliczeniu pola prostokata, bo jakiekolwiek dzialania na longincie daje mi ujemny wynik, np. zamiast 10 wypisuje -10. Probowalem juz mnozenia przez (-1), jednak nic to nie daje, natomiast na longword wystepuja jakies problemy. Ponizej kod mojego programu: var z,min_y,min_x,max_y,max_x,x,y,i,n,a:longint;begin readln(n); // ile elementow ma byc wczytanych read(x,y); // wczytanie pierwszych wspolrzednych min_x:=x; max_x:=x; // ustawienie MIN i MAX dla osi X min_y:=y; max_y:=y; // to samo co wyzej, tyle ze dla osi YIF n>1 THEN begin FOR i:=2 TO n DO // petla wczytujaca reszcze wspolrzednych pkt. begin read(x,y); // wczytywanie wspolrzednych poszczegolnych pkt. // Poszukiwanie nowych MIN i MAX dla obu osi IF min_x<x THEN min_x:=x; IF max_x>x THEN max_x:=x; IF min_y<y THEN min_y:=y; IF max_y>y THEN max_y:=y; readln(); // przejscie do nowej linijki end; // koniec petli FOR end; // koniec IF (n>1)// wypisanie w tym miejscu MAX i MIN ukazuje ze ich wartosci sa dodatnie write(2*(max_x-min_x)+2*(max_y-min_y)); // obliczenie obw. prostokata i mala niespodzianka w postaci '-' przed liczbaend. // koniec programu Wynik jaki dostaje na mainie to: 1 wiersz 1: wczytano '-10', a oczekiwano '10' 2 wiersz 1: wczytano '-18', a oczekiwano '18' 3 wiersz 1: wczytano '-1956', a oczekiwano '1956' 4 wiersz 1: wczytano '-3948396', a oczekiwano '3948396' 5 wiersz 1: wczytano '-1996', a oczekiwano '1996' 6 wiersz 1: wczytano '-200', a oczekiwano '200' 7 wiersz 1: wczytano '-1999554', a oczekiwano '1999554' 8 wiersz 1: wczytano '-164040', a oczekiwano '164040' 9 wiersz 1: wczytano '-1999976', a oczekiwano '1999976' 10 wiersz 1: wczytano '-3999936', a oczekiwano '3999936' 11 wiersz 1: wczytano '-4000000', a oczekiwano '4000000' 12 wiersz 1: wczytano '-3999870', a oczekiwano '3999870' Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kfgz Opublikowano 11 Lutego 2011 Zgłoś Opublikowano 11 Lutego 2011 var i,n,min_y,min_x,max_y,max_x,x,y:longint;begin readln(n); // ile elementow ma byc wczytanych read(x,y); // wczytanie pierwszych wspolrzednych min_x:=x; max_x:=x; // ustawienie MIN i MAX dla osi X min_y:=y; max_y:=y; // to samo co wyzej, tyle ze dla osi YIF n>1 THEN begin FOR i:=2 TO n DO // petla wczytujaca reszcze wspolrzednych pkt. begin read(x,y); // wczytywanie wspolrzednych poszczegolnych pkt. // Poszukiwanie nowych MIN i MAX dla obu osi IF min_x>x THEN min_x:=x; IF max_x<x THEN max_x:=x; IF min_y>y THEN min_y:=y; IF max_y<y THEN max_y:=y; readln(); // przejscie do nowej linijki end; // koniec petli FOR end; // koniec IF (n>1)// wypisanie w tym miejscu MAX i MIN ukazuje ze ich wartosci sa dodatnie writeln(2*(max_x-min_x)+2*(max_y-min_y)); // obliczenie obw. prostokata i mala niespodzianka w postaci '-' przed liczbaend. // koniec programu Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Małpożer Opublikowano 11 Lutego 2011 Zgłoś Opublikowano 11 Lutego 2011 Kurcze, jak zwykle jakies bledy przez moje niedopatrzenia :/ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...