Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Что делать с отрицательными элементами?

Автор: 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]); { <-- Все-таки это ФУНКЦИЯ }
Просто я торопился... smile.gif
А нельзя никак без maxint? Есть другой способ? Боюсь, информатик шуметь начнет.

Автор: volvo 26.05.2006 2:44

Тогда делай:

max := a[1, 1]; s := 1;

присвоение в S единицы тогда обязательно, ибо если элемент a[1, 1] будет максимальным, а этого присвоения не будет - то в S сохранится некорректное значение...