Как защитить программу от ввода не числового значения? - Pascal
Формулировка задачи:
Помогите пожалуйста, программу я написала, но не могу написать защиту от ввода нечисловых значений, т.е. при заполнении матрицы нужно чтоб отслеживался процесс и если ввести не число, например, то чтобы он выдавал на экран сообщение типа: "ошибка! введено неверное значение. Повторите ввод", и нужно чтоб после сообщения программа не заканчивала работу, а продолжила с новым значением, ну как-то так. Вот сама прога:
Решение задачи: «Как защитить программу от ввода не числового значения?»
textual
Листинг программы
uses crt; const NMAX=4; type matr=array[1..NMAX+2,1..NMAX] of integer; procedure Vvod_B(var B:matr); var i,j,m,n:integer; begin {$I-} repeat writeln('Vvedite kol-vo strok v matrice B '); readln(m); if (IOResult<>0)or not(m in [1..nmax]) then writeln('Error! Povtorite vvod.'); until (IOResult=0)and(m in [1..nmax]); {$I+} {$I-} repeat writeln('Vvedite kol-vo stolbcov v matrice B '); readln(n); if (IOResult<>0)or not(n in [1..nmax]) then writeln('Error! Povtorite vvod.'); until (IOResult=0)and(n in [1..nmax]); {$I+} writeln; i:=1; while i<=m do{здесь нельзя применять цикл for, т.к. не знаем заранее сколько раз ошибемся} begin j:=1; while j<=n do begin {$I-} repeat write('B[',i,',',j,']: '); readln(B[i,j]); if IOResult<>0 then writeln('Error! Povtorite vvod.') else j:=j+1; until IOResult=0; {$I+} end; i:=i+1; end; writeln; writeln(' matrica B :'); writeln; for i:=1 to m do begin for j:=1 to n do write(B[i,j]:9,' '); writeln; end; end; procedure Summ_Stb(var B:matr); var i,j,sm,m,n:integer; begin for j:=1 to n do begin sm:=0; for i:=1 to m do sm:=sm+B[i,j]; B[m+1,j]:=sm; B[m+2,j]:=j; end; end; procedure Sort_Stb(var B:matr); var i,j,l,x,m,n:integer; begin for i:=1 to n-1 do for j:=i+1 to n do if B[m+1,i]>B[m+1,j]then for l:=m+1 to m+2 do begin x:=B[l,i]; B[l,i]:=B[l,j]; B[l,j]:=x; end; end; procedure Vyvod_C(var B,m1:matr); var i,j,m,n:integer; begin writeln('Matrica C:'); writeln; for i:=1 to m do begin for j:=1 to n do begin m1[i,j]:=B[i,B[m+2,j]]; write(m1[i,j]:4); end; writeln; end; end; var B,C:matr; begin clrscr; randomize; Vvod_B(B); Summ_Stb(B); Sort_Stb(B); Vyvod_C(B,C); readln; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д