Skocz do zawartości
Małpożer

[pascal] problem z obliczeniami na longint'ach

Rekomendowane odpowiedzi

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'

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...