[Pascal] - Paskudny błąc

0

Mam jakiś głupi błąd w Pascalu. Oto <ort>mÓj </ort>problem:
<ort>Nie</ort>chce aby pokazywała mi się ta głupia szara linia. Oto kod ort!:

////Calc v1.0
////Autor:iYYa24
uses
crt;
var
wart1, wart2, wart3 : extended;
koniec , oper : char;
nic : real;
menu : integer;
procedure s;
begin
textcolor(white);
textbackground(black);
end;
procedure z;
begin
textcolor(red);
textbackground(red);
end;
procedure w;
begin
textcolor(black);
textbackground(white);
end;
label re, start;
begin
start:
clrscr;                      { /////początek programu      }
z;
writeln('11111111111111111111111111111');


            w;
writeln('Calc v1.1');
writeln;
writeln('Autor: iYYa24');
writeln;
s;
   writeln('1.Uruchom kalkulator');
   writeln;
   writeln('2.Pomoc programu');
   writeln;
   writeln('3.Zakończ działanie programu');
   writeln;
   w;
   writeln('Wybierz od 1 do 3 ?');
   s;
   readln(menu);
   case menu of
  1 : begin
   s;
writeln('Podaj wartość: ');
readln(wart1)  ;
re:
writeln('Podaj operator:');
readln(oper);
case oper of
'^'  : begin
wart3 := sqrt(wart1);
w;
writeln(wart3:5:5);
s;
goto re;
end;
'<' : begin
wart3 :=  sqr(wart1);
w;
writeln(wart3:5:5);
s;
goto re;
         end;
'>' : begin
wart3 := abs(wart1) ;
w;
writeln(wart3:5:5);
s;
goto re;
end;
else
writeln('Podaj wartość:');
readln(wart2);
case oper of
'+' : wart3 := wart1 + wart2;
'-' : wart3 := wart1 - wart2;
'*' : wart3 := wart1 * wart2;
'/' : wart3 := wart1 / wart2;
'^'  : begin
wart3 := sqrt(wart1);
w;
writeln(wart3:5:5);
s;
goto re;
end;
'<' : begin
wart3 :=  sqr(wart1);
w;
writeln(wart3:5:5);
s;
goto re;
         end;
'>' : begin
wart3 := abs(wart1) ;
w;
writeln(wart3:5:5);
s;
goto re;
end;
end;
w;
writeln(wart3:5:5);
 s;
writeln('Podaj operator:');
readln(oper);
if oper = '=' then            begin
w;
writeln('Wynik to :',wart3:5:5,'');
s;
read(nic);
goto start;
end;
case oper of
'^'  : begin
wart3 := sqrt(wart1);
w;
writeln(wart3:5:5);
s;
goto re;
end;
'<' : begin
wart3 :=  sqr(wart1);
w;
writeln(wart3:5:5);
s;
goto re;
         end;
'>' : begin
wart3 := abs(wart1) ;
w;
writeln(wart3:5:5);
s;
goto re;
end;
else
end;
writeln('Podaj wartość:');
readln(wart1);
case oper of
'+' : wart3 := wart3 + wart1;
'-' : wart3 := wart3 - wart1;
'*' : wart3 := wart3 * wart1;
'/' : wart3 := wart3 / wart1;
end;
w;
writeln(wart3:5:5);
s;
goto re;

readln;
end;
end;
2 : begin
writeln;
w;
writeln('Pomoc:::');
s;
writeln;
writeln('Tu przedstawie kolejne kroki postępowania:');
writeln('1.Naciskasz odpowiedni klawisz aby uruchomić kalkulator.');
writeln('2.Wprowadzasz dowolną wartość');
writeln('3.wprowadzasz operator np.:');
writeln('Dodawanie           - "+"');
writeln('Odejmowanie         - "-"');
writeln('Mnożenie            - "*"');
writeln('Dzielenie           - "/"');
writeln('Pierwiastkowanie    - "^"');
writeln('Potengowanie        - "<"');
writeln('Wartość bezwględna  - ">"');
writeln('Koniec              - "="');
writeln('Wprowadziasz drugą dowolną wartość');
writeln('.............');
writeln('Naciśnij dowolny klawisz i naciśnij ENTER');
readln(nic);
goto start;

end;
3 : begin
clrscr;
w;
writeln('Czy na pewno chcesz wyjść z tego programu[T/N] ?');
s;
koniec:= readkey;
if (koniec = 'T') or (koniec = 't') then halt
else if (koniec = 'N') or (koniec = 'n') then goto start;

   end;
   end;
   readln;
end.

Błagam, <ort>pomużcie </ort>mi. To jest <ort>mÓj </ort>jedyny problem. Jeżeli go <ort>rozwiąże </ort>to skończe ten program i biore się za wyższą wersję. HeYaH ?


0

po pierwsze słownik, po drugie nie używaj labeli, po trzecie debugger.

[dopisane]
ORTOGRAFICZNY słownik.
nie używaj składni label/goto, bo to świadczy tylko o Twoim niskim poziomie programistycznym. pascal jest językiem proceduralnym, więc używaj procedur.

[dopisane]
popraw wreszcie te orty, bo wątek wyleci.

0

ŁF !!!
Jaki słownik ???
Czym mam zastąpić labele ???

0

">Jeden. Podejrzewam ze chodzi Ci o ta linie:
writeln('11111111111111111111111111111');

Przed nia deklarujesz tylko procedure "z" w ktorej zawarte jest zmienienie koloru na czerwony i tla na czerwony wiec jak moze byc to kolor szary? Zmien TextColor() na Gray.

Dwa. Stosuj wciecia, bo twoj program wyglada jak krowie z gardla wyciagniety.

Trzy. Zamiast if (koniec = 'N') or (koniec = 'n') then mozesz zastosowac if UpCase(Koniec) = 'N' then. Funkcja ta podnosi wartosc Koniec do samych wielkich liter.

Cztery. Na poczatku przy wyborze opcji nie pisz ReadLn(Wybor) tylko zastosuj Wybor := ReadKey w petli tzn:

... {Wyswietlenie tekstu}
repeat
    Wybor := ReadKey;
    if ((Wybor = '1') or (Wybor = '2') or (Wybor = '3')) then else WriteLn('Wybierz poprawna opcje');
until ((Wybor = '1') or (Wybor = '2') or (Wybor = '3'));

Piec. Zaprzyjaznij sie ze slownikiem ortograficznym ;)

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