Goodnight. I work with PascalABC.Net. Interested in controlling the data input by the user (so that only a number could be entered, and when entering not a number, but any character, the message “Not a number entered” was returned and returned to correct the line where the error was made) how to implement it in my program and where to insert, so to speak? Currently displays such an error when entering for example the letter "a"
But actually the code itself:
program Gauss1; {Решение СЛАУ по методу Гаусса} uses crt; const num=5; c=0.00000001; {Константа для обхода деления на 0} var a: array [1..num,1..num] of real; b, x: array [1..num] of real; n, i, j, k: integer; delenie: real; var s:string; err:integer; v:integer; begin val(s,v,err); if err<>0 then writeln('Введено не число'); writeln; clrscr; writeln('Решение СЛАУ по методу Гаусса.'); writeln; writeln('Введите колич-во неизвестных величин и нажмите ENTER:'); readln(n); writeln; writeln('Вводите коэфф-ты матpицы A по стpокам нажимая ENTER:'); for k:=1 to n do for j:=1 to n do begin write ('a[',k,',',j,']='); read(a[k,j]); end; writeln; writeln('Введите вектоp В свободных членов нажимая ENTER:'); for k:=1 to n do begin write ('b[',k,']='); read (b[k]); end; writeln; writeln('Расширеная матрица:'); for i:=1 to n do begin for j:=1 to n do write (a[i, j]:5:3,' ':2); {Вывод матрицы с отступами} write (b[i]:5:3,' ':2); {Вывод вектора с отступами} writeln; end; writeln; writeln(' Прямой ход '); for i:=1 to n-1 do {Строки} begin for k:=i+1 to n do {Стобцы} begin if a[i,i]=0 then a[i,i]:=c; {Обход деления на 0} delenie:= -1*(a[k,i] / a[i,i]); {Элемент след. урав-я делим на элемент ведущего урав-я и умнож. на -1} for j:=1 to n do {Еще счетчик} a[k,j]:= a[k,j] + a[i,j] * delenie; {К след. уравнению прибавляем ведущее...} b[k]:= b[k] + b[i] * delenie; {и умножаем на рез-тат деления} end; end; writeln(' Результат прямого хода: '); for i:=1 to n do begin for j:=1 to n do write (a[i, j]:5:3,' ':2); {Выводим на экран...} write (b[i]:5:3,' ':2); {результат прямого хода} writeln; end; writeln; writeln('обратный ход'); for i:=n downto 1 do begin for j:= i+1 to n do b[i]:= b[i] - a[i,j] * x[j]; {Раскурчиваем уравнение...} x[i]:= b[i] / a[i,i]; {в обратном порядке} end; writeln('ОТВЕТ:'); for i:=1 to n do writeln('X[',i:1,']=', x[i]:1:2, '.'); readkey; end.