Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mały problem z Pascalem
Forum PHP.pl > Inne > Hydepark
kajzur
Witam, piszę, z nadzieją, że ktoś zna Pascala biggrin.gif

Co tu jest źle? O.o

[PASCAL] pobierz, plaintext
  1. program kalkulator;
  2. uses crt;
  3. var wybor, wynik, liczba1, liczba2:integer;
  4.  
  5. begin
  6. writeln('Wybierz mozliwe dzialanie:');
  7. writeln('1 - Dodawanie.');
  8. writeln('2 - Odejmowanie. ');
  9. writeln('3 - Mnozenie. ');
  10. writeln('4 - Dzielenie. ');
  11.  
  12. readln(wybor);
  13. clrscr;
  14.  
  15. writeln('Wpisz 1 liczbe: ');
  16. readln(liczba1);
  17. writeln('Wpisz 2 liczbe: ');
  18. readln(liczba2);
  19.  
  20. if (integer(wybor) = 1) then
  21. wynik:= liczba1 + liczba2;
  22.  
  23. if (integer(wybor) = 2) then
  24. wynik:= liczba1 - liczba2;
  25.  
  26.  
  27. if (integer(wybor) = 3) then
  28. wynik:= liczba1 * liczba2;
  29.  
  30.  
  31. if (integer(wybor) = 4) then
  32. wynik:= liczba1 / liczba2;
  33.  
  34. repeat until keypressed;
  35. write(wynik);
  36.  
  37. end.
[PASCAL] pobierz, plaintext

Nie idzie go skompilować.. Krzyczy że błąd w linii gdzie jest if co do wartosci wybor = 4 O.o

kalkulator.pas(40,25) Error: Incompatible types: got "Extended" expected "SmallInt"
kalkulator.pas(53,6) Fatal: There were 1 errors compiling module, stopping
kalkulator.pas(0) Fatal: Compilation aborted
Fafu
Hmm może o to chodzi że jak dzielisz to może być reszta a ty dałeś integer (liczba całkowita). Więc albo zaokrąglić albo zmienić typ zmiennej "wynik".
Nie mam pojęcia czy o to chodzi bo pascala słabo znam tongue.gif
Spawnm
wywal integer i brak ci end; ów po ifach ale chyba nie są obowiązkowe, ale za to widzę że robisz if() then , zobacz bez tego nawiasu .
http://www.pascal.eu.org/lekcja2.htm#if_then
magnus
Skoro zmienna wybór jest zadeklarowana jako integer to nie ma sensu jej jeszcze raz na integer zamieniać, zresztą to chyba nie tak w pascalu się robi.
Zamiast if-ów zastosuj case ... of.
W pascalu nie trzeba nawiasu po if, ale szkodzić nie będzie. Natomiast jeśli masz dzielenie, to zmienna przechowująca wynik dzielenia musi być zmiennoprzecinkowa (czyli zm. "wynik" musi być typu double czy podobnego). Potem ew. można przy wyświetlaniu sformatować (write(wynik:5:2) - 2 miejsca po przecinku).
kajzur
Dzięki, paca smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.