Как защитить программу от ввода не числового значения? - 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.8 из 5
Похожие ответы