Problem z funkcją "if" i pętlą repeat

Problem z funkcją "if" i pętlą repeat
MA
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:1
0

Witam waszystkich. Otóż pisze z moim problem który dotyczy funkcji IF i pętli REPEAT

  1. Funkcja If
    Tworze program na równanie kwadratowe, "wszystko" już prawie zrobiłem ale problem podczas wpisywania liter.
    Funkcja Begin początkowego programu wygląda tak:
Kopiuj
...
Begin
 repeat
    Clrscr;
    TextColor(3);
    WriteLn('Podaj liczbe a');
    ReadLn(a)
    WriteLn('Podaj liczbe b');
    ReadLn(b)
    WriteLn('Podaj liczbe c');
    ReadLn(c)
    ....

Głównie rozchodzi mi się o to że gdy wpisuje jakąś litere i po zatwierdzeniu ją (wciśnięciu klawisza Enter) wyskakuj error "Exitcode = 106"
Co w takim raze musiałbym wprowadzić za funkcje, aby program wyświetlił wiadomość by powtórzyć program, ponieważ wpisaną zły znak/liczbę?
Tego samego tyczy się gdy wpisze liczbe 0 pod (a) - Exitcode = 200
Próbowałem coś z funkcją if, ale tylko pogarszałem sytuacje.

  1. Pętla repeat

Jeśli chodzi o pętle repeat, to problem tkwi w momencie powtarzania programu.
Kod częściowo wygląda mniej więcej tak (to samo co na górze + to):

Kopiuj
...
 If (delta<0) then
 Begin
   WriteLn('Odpowiedź:Nie ma miejsc zerowych');
   Delay(1500);
   WriteLn('');
   WriteLn('Chcesz powtorzyc program?');
   WriteLn('Enter - Tak');
   WriteLn('Esc - Nie');
 End;
 ...
 until readkey=#27;
End.

Chodzi o to że gdy następuje wybór czy chcemy powtórzyć program, musze wcisnąć dwa razy Enter aby uruchomić program lub Enter a potem Esc żeby go zamknąć.
Coś czytałem że w funkcji Repeat nie może być Begin i End; ale bez tego moj program bedzie bez użyteczny, ponieważ w przypadku usunięcia Begin i End; cały program się zlewa i zamiast zatrzymać i skończyć program na funkcji If (delta<0) on rozpoczyna działanie na funckje If (delta>0) i If (delta=0)

Wiem że się rozpisałem ale czekam na jakąkolwiek pomoc.
Pozdrawiam

edytowany 2x, ostatnio: Maxoss
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:2 dni
1

google!!!
106 - invalid numeric format
200 - division by 0


Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

Aby zabezpieczyć się przed wpisywaniem liczb możesz wczytać stringa i wyjąć z niego wszystkie liczby, bądź sprawdzić go, czy nie zawiera liter.
Jeżeli zawiera poprosić o wpisanie liczby ponownie.

Funkcja Begin

Problem z funkcją "if"

<płacz>

Coś czytałem że w funkcji Repeat nie może być Begin i End;

Bullshit; Poza tym 'repeat' nie jest funkcją...


edytowany 2x, ostatnio: Patryk27
pelsta
  • Rejestracja:prawie 19 lat
  • Ostatnio:16 dni
  • Postów:819
1
Maxoss napisał(a)

Głównie rozchodzi mi się o to że gdy wpisuje jakąś litere i po zatwierdzeniu ją (wciśnięciu klawisza Enter) wyskakuj error "Exitcode = 106"
Co w takim raze musiałbym wprowadzić za funkcje, aby program wyświetlił wiadomość by powtórzyć program, ponieważ wpisaną zły znak/liczbę?

http://4programmers.net/Forum/Newbie/186742-komunikat_bledu_przy_wpisaniu_danych_innego_typu_niz_integer?p=781080#id781080

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.