всегда пожалуйста:rose:Пух, огромное спасибо!:razz:
Не думаю что на таком уровне можно использовать что-то ещё (если использовать процедуры, то получится раза в 2 меньше текста, но не думаю что они ещё их учили).по-моему слишком громоздкая задача у тебя получается, там можно буквально в 10-15 строчек(не используя модуля и т.п.), хотя это тоже метод, но сложнее для пониманя
const m=5; {описуем константу, размер будущей матрицы}
var a:array[1..m,1..m] of integer; {описуем матрицу 5х5}
i,j:byte; {переменные для прохода матрицы}
g:integer; {переменные для вывода матрицы и вспомогательная}
begin
{рандомом заполняем матрицу}
randomize;
for i:=1 to 5 do
for j:=1 to 5 do
begin
g:=random(20);
a[i,j]:=5-g;
end;
{закончили заполнение. Начинаем вывод матрицы на экран}
for i:=1 to m do
begin
for j:=1 to m do
write(a[i,j]);
writeln;
end;
{закончили вывод}
{Ищем произведение положительных чисел}
g:=1;
for i:=1 to m do
for j:=1 to m do
begin
if a[i,j]>0 then
g:=g*a[i,j]
end;
{заменяем диагонали на произведение}
j:=m;
for i:=1 to m do
begin
a[i,i]:=g; {диагональ с слевого верхнего до правого нижнего угла}
a[i,j]:=g; {с правого верхнего в левый нижний}
dec(j);
end;
{выводим новую матрицу на экран}
for i:=1 to m do
begin
for j:=1 to m do
write(a[i,j]);
writeln;
end;
readln;
end.
все дело в том, что очень не красиво и не понятно выводится матрица на экран. По этому приходится писать таким способом.Я поправил твой код, ну не 15 строчек, но можно укратить еще больше, я редактировал прямо в браузере, но в основоном вот так то проще, без модулей и прочего добра
ага, сколько это пробелов между столбиками нужно ставить? штук 5? (произведение ведь большое может быть) + между строками тоже желательно пробелы ставить. Если бы бы сказано, чтобы время выполнения было минимальным, то понятное дело, что писал бы примерно как ты,а так главное было написать ввод, вывод, посчёт произведения, замена диагонали. Остальное можно уже и самому дописать/убрать =)write(a[i,j],' '); -вывод матрици в такой способ, и будет тебе счастье =) с пробелами и всем таком. Дело не в красоте, а в качестве и времени
ну эта задача далеко не турнирная и многи преподаватели в школе поощряют красивый вывод информации...На турнирах по программированию играет роль колличество пробелов. Больше одного - считается ошибкой, так что я привык делать так =) Хотя поиздеваться над программами я тоже не против)