1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Дана матрица A размером m x n , состоящая из натуральных чисел, больших 1. В этой задаче требуется найти :
1). Строки матрицы упорядочить по невозрастанию произведения элементов строк 2). Составить одномерный массив B, в котором Bj , равен номеру столбца, содержащего только числа, кратные 5, в противном случае Bj = 0.
---------------
Как упорядочить по невозрастанию я знаю, а вот вопрос : Как найти произведение строк ?
for j := 1to n dobegin{ по столбцам }
count := 0;
for i := 1to m do{ перебор элементов в столбце }if (a[i, j] mod5) = 0then count := count + 1;
if count = m then B[j] := j else B[j]:=0;
end;
Program h;
const
m=5;
n=4;
a: array[1..m,1..n] of integer=
(
(3,2,4,6),
(2,5,3,5),
(5,7,3,5),
(4,6,3,2),
(9,5,2,6)
);
Var
i, j , P, count: integer;
B: array[1..100] of integer;
Begin{ Нахождение произведения элементов строк }for i:=1to m do
P:=1;
for j:=1to n dobegin
P:= P * a[i,j];
end;
{ Перестановка строк матрицы по невозрастанию произведений элементво строк }for i:=1to m dofor j:=m Down to i+1doif a[Pred[j] < a[j] tnen begin
temp:=a[j-1];
a[j-1]:=a[j];
a[j]:= temp;
end;
{ Выполнение 2-го пункта моего задания }for j := 1to n dobegin
count := 0;
for i := 1to m doif (a[i, j] mod5) = 0then count := count + 1;
if count = m then B[j] := j
else B[j]:=0;
end;
writeln('Полученный массив B=');
for i:=1to m dofor j:=1to n do
write( B[j]);
readln;
end.
Совсем запутался с перестановкой строк по невозрастанию... И кажется с произведением что то не так... Сам знаю что делаю неправильно, но где ошибка ?
Скажи мне, у тебя что, кнопки "Поиск" нет? Или ты считаешь, что тебе должны все на блюдечке принести, в том числе и ссылки? Воспользуйся в конце концов поиском !!! Задача уже не один раз решалась...
const nm=10; mm=10;
var n,m,i,j,tmp:longint;
a:array[1..mm,1..nm] of longint;
tta,psa:array[1..nm] of longint;
begin
readln(m,n);
for i:=1to m dobegin
psa[i]:=1;
for j:=1to n dobegin
read(a[i,j]);
psa[i]:=psa[i]*a[i,j];
end;
readln;
end;
for i:=1to m dofor j:=1to m dobeginif psa[i]>psa[j] thenbegin
tmp:=psa[i]; psa[i]:=psa[j]; psa[j]:=tmp;
for tmp:=1to n do tta[tmp]:=a[i,tmp];
for tmp:=1to n do a[i,tmp]:=a[j,tmp];
for tmp:=1to n do a[j,tmp]:=tta[tmp];
end;
end;
for i:=1to m dobeginfor j:=1to n do write(a[i,j],' ');
writeln;
end;
end.
А как мне его переделать, если мне нужно чтобы матрица была задана вот так :