Turbo Pascal

Le Edelweiss

Няяяяя.... ^_^
Відповідь: Turbo Pascal

по-моему слишком громоздкая задача у тебя получается, там можно буквально в 10-15 строчек(не используя модуля и т.п.), хотя это тоже метод, но сложнее для пониманя
 

Пух

كنت بلهاء
Модератор
Re: Відповідь: Turbo Pascal

по-моему слишком громоздкая задача у тебя получается, там можно буквально в 10-15 строчек(не используя модуля и т.п.), хотя это тоже метод, но сложнее для пониманя
Не думаю что на таком уровне можно использовать что-то ещё (если использовать процедуры, то получится раза в 2 меньше текста, но не думаю что они ещё их учили).
п.с. напиши свой вариант без процедур.
п.с.с. возможно показался громоздкий вывод массива, но написал(по памяти) так, как нас учили на информатике))
п.с.с.с возможно поиск произведения и замену диагоналей можно было обьединить, но я об этом не задумывался))
 
Останнє редагування:

Le Edelweiss

Няяяяя.... ^_^
Відповідь: Turbo Pascal

Код:
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 строчек, но можно укратить еще больше, я редактировал прямо в браузере, но в основоном вот так то проще, без модулей и прочего добра
 

Пух

كنت بلهاء
Модератор
Re: Відповідь: Turbo Pascal

Я поправил твой код, ну не 15 строчек, но можно укратить еще больше, я редактировал прямо в браузере, но в основоном вот так то проще, без модулей и прочего добра
все дело в том, что очень не красиво и не понятно выводится матрица на экран. По этому приходится писать таким способом.
1) твой исправленый вариант
2) мой вариант
 

Вкладення

  • 24.1 КБ Перегляди: 223
  • 23.2 КБ Перегляди: 230

Le Edelweiss

Няяяяя.... ^_^
Відповідь: Turbo Pascal

write(a[i,j],' '); -вывод матрици в такой способ, и будет тебе счастье =) с пробелами и всем таком. Дело не в красоте, а в качестве и времени
 

Пух

كنت بلهاء
Модератор
Re: Відповідь: Turbo Pascal

write(a[i,j],' '); -вывод матрици в такой способ, и будет тебе счастье =) с пробелами и всем таком. Дело не в красоте, а в качестве и времени
ага, сколько это пробелов между столбиками нужно ставить? штук 5? (произведение ведь большое может быть) + между строками тоже желательно пробелы ставить. Если бы бы сказано, чтобы время выполнения было минимальным, то понятное дело, что писал бы примерно как ты,а так главное было написать ввод, вывод, посчёт произведения, замена диагонали. Остальное можно уже и самому дописать/убрать =)
 

Le Edelweiss

Няяяяя.... ^_^
Відповідь: Turbo Pascal

На турнирах по программированию играет роль колличество пробелов. Больше одного - считается ошибкой, так что я привык делать так =) Хотя поиздеваться над программами я тоже не против)
 

Пух

كنت بلهاء
Модератор
Re: Відповідь: Turbo Pascal

На турнирах по программированию играет роль колличество пробелов. Больше одного - считается ошибкой, так что я привык делать так =) Хотя поиздеваться над программами я тоже не против)
ну эта задача далеко не турнирная и многи преподаватели в школе поощряют красивый вывод информации...
 
Зверху