Форум «Всё о Паскале» _ Задачи _ Что делать с отрицательными элементами?
Автор: Excl 26.05.2006 1:17
Вообщем-то, задача простая, но есть недоделка... Задание: дана матрица 10х10, найти в ней максимальный элемент, в той строке, где он есть, возвести все элементы этой строки в квадрат.
Код
Program prog; var a:array[1..10,1..10] of integer; i,j,max,s:integer; begin for i:=1 to 10 do for j:=1 to 10 do readln(a[i,j]); for i:=1 to 10 do for j:=1 to 10 do begin if a[i,j]>max then max:=a[i,j]; s:=i; end; for j:=1 to 10 do sqr(a[s,j]); end.
Но это все не будет работать, если в матрице будут только одни отрицательные элементы. Надо присвоить max:=??? Или еще что-то?
Автор: volvo 26.05.2006 1:22
Вообще-то всегда надо инициализировать переменные. Не полагайся на компилятор...
Program prog; var a: array[1 .. 10, 1 .. 10] of integer; i, j, max, s: integer; begin for i:=1 to 10 do for j:=1 to 10 do readln(a[i,j]);
max := -maxint; { минимально возможное для Integer число } for i:=1 to 10 do for j:=1 to 10 do begin if a[i,j]>max then max:=a[i, j]; s:=i; end;
for j:=1 to 10 do a[s, j] := sqr(a[s,j]); { <-- Все-таки это ФУНКЦИЯ } end.
Автор: Гость 26.05.2006 1:37
Цитата
for j:=1 to 10 do a[s, j] := sqr(a[s,j]); { <-- Все-таки это ФУНКЦИЯ }
Просто я торопился... А нельзя никак без maxint? Есть другой способ? Боюсь, информатик шуметь начнет.
Автор: volvo 26.05.2006 2:44
Тогда делай:
max := a[1, 1]; s := 1;
присвоение в S единицы тогда обязательно, ибо если элемент a[1, 1] будет максимальным, а этого присвоения не будет - то в S сохранится некорректное значение...