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

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:
...
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):

...
 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

1

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

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ą...

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ę?

Komunikat błędu przy wpisaniu danych innego typu niż Integer

1 użytkowników online, w tym zalogowanych: 0, gości: 1