procedura val

0

mój problem dotyczy turbo pascala polega na tym że gdy w poniższym programie wpiszę literę np.a to wyskakuje błąd i program się zamyka wiem że aby to naprawić trzeba użyć procedury "val" ale nie wiem jak o informacje proszę na maila(to bardzo bardzo pilne): [email protected]
(najlepiej prosiłbym o przesłanie mi procedury bez błędu)

procedure tmnoz;
var i,g,m,k,d,a,c,b,x,l:integer;

begin
clrscr;
randomize;
l:=0;
textcolor(11);
writeln('*********************************** T E S T ******************************');
for i:=1 to 6 do
begin
a:=random(9)+1;
b:=random(9)+1;
c:=random(9)+1;
d:=random(9)+1;
g:=a
b;
m:=c
d;
textcolor(13);
gotoxy(35,16);
clreol;
gotoxy(31,4);
writeln(' Pytanie : ',i,' z 6' );
gotoxy(20,15); write('ÄÄÄÄ ');
gotoxy(25,15); write('
');
gotoxy(28,15); write('ÄÄÄÄ ');
gotoxy(31,15); write('=');
gotoxy(34,15); write('ÄÄÄÄ');
textcolor(11);
gotoxy(21,14); write(a);
gotoxy(29,14); write(b);
gotoxy(21,16); write(c);
gotoxy(29,16); write(d);
gotoxy(35,14);
clreol;
read(x);
gotoxy(35,16);
read(k);
if(x=g) and (k=m) then
begin
gotoxy(50,10);
textcolor(10+blink);
sound(1000);
write(' * DOBRZE * ');
delay(500);
nosound;
gotoxy(39,10);
write(' ');
gotoxy(39,10);
l:=l+1;
end;
if(x&lt&gtg) or (k&lt&gtm) then
begin
gotoxy(50,10);
textcolor(60+blink);
sound(300);
write('! ZLE !');
delay(500);
nosound;
gotoxy(39,10);
write(' ');
gotoxy(39,10);
textcolor(11);

 end;
 end;
 gotoxy(28,12);
 textcolor(11);
 write(' Poprawnych odpowiedzi: ', l );
 if l=0 then

begin
textcolor(10);
gotoxy(25,20);
write(' T W O J A O C E N A T O: 1 ');
delay(1000);
gotoxy(27,22);
write(' MU-ISZ JESZCZE POŹWICZYŹ ');
end;
if l=1 then
begin
textcolor(10);
gotoxy(25,20);
write(' T W O J A O C E N A T O: 1 ');
delay(1000);
gotoxy(27,22);
write(' MU-ISZ JESZCZE POŹWICZYŹ ');
end;
if l=2 then
begin
textcolor(10);
gotoxy(25,20);
write(' T W O J A O C E N A T O: 2 ');
end;
if l=3 then
begin
textcolor(10);
gotoxy(25,20);
write(' T W O J A O C E N A T O: 3 ');
end;
if l=4 then
begin
textcolor(10);
gotoxy(25,20);
write(' T W O J A O C E N A T O: 4 ');
end;
if l=5 then
begin
textcolor(10);
gotoxy(25,20);
write(' T W O J A O C E N A T O: 5 ');
end;
if l=6 then
begin
textcolor(10);
gotoxy(25,20);
write(' T W O J A O C E N A T O: 6 ');
delay(1000);
gotoxy(32,22);
write('GRATULACJE ',s);
end;
delay(1000);
wcisent;
readkey;
end; {hello}

0

Jak widac z Twojego kodu zmienna x zadeklarowales jako integer wiec gdy read(x) czeka na wprowadzenie danych, a uzytkownik poda np. "ab" to kompilator zglasza blad Invalid Numeric Format, co oznacza ze nie zostala wprowadzona poprawna liczba. Mozliwym rozwiazaniem moze byc np.

{ musisz dodac ta funkcje to programu}
function StrToInt(Value: String): Integer;
var I, Code: Integer;
begin
Val(Value, I, Code);
if Code &lt&gt 0 then StrToInt:=-1 else StrToInt:=I;
end;

{zmodyfikowac zmienne procedure tmnoz}
var
i,g,m,k,d,a,c,b,l,x:integer;
xx,kk: string;

{i ostatnia zmiana w kodzie, pierwsza i ostatnia linijka oznacza odkad i dokad jest zmiana}

gotoxy(29,16); write(d);
clreol;
repeat
gotoxy(35,14);
write(' ');
read(xx);
x:=StrToInt(xx);
until x&lt&gt-1;
repeat
gotoxy(35,16);
write(' ');
read(kk);
k:=StrToInt(kk);
until k&lt&gt-1;
if(x=g) and (k=m) then
-------[ Delphi 6 Rulez 4 Ever!, przynajmniej do czasu gdy naucze sie C++ :) ]------

0

Ups zostawilem tutaj blad:

read(xx) --&gt readln(xx)
read(kk) --&gt readln(kk)

gdy jest read to program po prostu pada :)-------[ Delphi 6 Rulez 4 Ever!, przynajmniej do czasu gdy naucze sie C++ :) ]------

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