Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на матрицы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Warn
Здравствуйте! Помогите, пожалуйста, решить задачу на матрицы с помощью процедур и функций.
Нужно удалить из матрицы А(5*7) все столбцы, содержащие не менее 2-х отрицательных элементов, в из матрицы В(7*7) удалить столбцы, сод. не менее трёх отрицательных элементов. Решаю эту задачку второй вечер, но получается какой-то бред. sad.gif Она, видимо, должна быть универсальной; в процедуру поиска нужно передавать сам массив, значения размерности массива M x N и число отрицательных элементов, необходимое для того, чтобы решить, удалять столбец или нет; в процедуру удаления стоблца должен передаваться массив, его размерность и номера столбцов для удаления. Но как это реализовать? Не получается у меня.. sad.gif
klem4
Цитата
Не получается у меня..


Не получается, значит что-то пробовал делать, выложи что сделал, поправим, наставим на путь истинный ... а вообще-то таких задач решалос ууу сколько много, так что
FAQ : Массивы, матрицы, типичные задачи
и конечно поиск по форуму
Гость
Да млин.. Код криворукий, стыдно мне за него. Я пробовал писать хотя бы для одного массива, а как написать универсальную программу? Вот вопрос. В факе был, ответа не нашел. Сижу, решаю.
Warn
Помогите мне в следующем топике, пожалуйста, тогда для меня эта задача прояснится. Сейчас напишу smile.gif
klem4
вот пример, как удлить к-ый столбец

uses crt;
const
n = 5;
m = 7;

x : array[1..n,1..m] of integer =
(
(1,9,1,5,2,1,0),
(1,9,3,1,5,2,0),
(1,9,1,6,7,2,0),
(1,9,4,2,1,6,0),
(1,9,2,6,8,1,0)
);

var
i,j,t,k : byte;

begin

clrscr;

for i := 1 to n do begin
writeln;
for j := 1 to m do write(x[i,j],' ');
end;

writeln;

write('k='); readln(k);

for j := k to m-1 do
for i := 1 to n do
x[i,j] := x[i,j+1];

writeln;

for i := 1 to n do begin
writeln;
for j := 1 to m-1 do write(x[i,j],' ');
end;

readln
end.

Warn
Эм.. И в продолжение темы
Решил пойти не универсальным способом, в лоб так сказать. Помогите найти ошибку в коде

Procedure DeleteCol(Var MasA: Mas1; Var MasB: Mas2);
Var Count, i, j, t, k: Integer;
Begin
Count:=0;
For j:=1 To n Do
Begin
For i:=1 To m Do
If MasA[i,j]<0 Then Count:=Count+1;
If Count>1 Then
Begin
For t:=i To n-1 Do
Begin
For k:=1 To m Do
Begin
MasA[k, t]:=MasA[k, t+1];
MasA[k, n]:=0;
End;
End;
End;
End;
End;


В этом коде мне нужно найти столбец, содержащий более одного отриц. элемента, и удалить его.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.