Другие языки программирования и технологии

Программисты, подскажите алгоритм, пожалуйста, очень нужно(Паскаль)!

Удалить все строки, содержащие максимальный элемент массива.Соглашусь с вами, задача не очень трудная....Но то ли сегодня я не выспалась, то ли какие-то другие причины, но у меня не получается решить...Подкажите пожалуйста алгоритм, буду очень благодарна)))
uses crt;
var a:array{1..10,1..10} of integer;
i,j,n,m,max,k:integer;r:boolean;
begin
clrscr;
m:=5; \\число строк
n:=3; \\число столбцов
for i:=1 to m do
for j:=1 to n do
readln(a{i,j});
for i:=1 to m do
begin
for j:=1 to n do
write(a{i,j},' ');
writeln;
end;
поиск максимального
r:=false;
i:=1; j:=1;
while i меньшt или равно m do
begin
for j:=1 to n do
if a{i,j}=max then r:=true; \\r истинно если в строке есть максимальный
if r=true then
begin
for k:=i to m do
for j:=1 to n do
a{k,j}:=a{k+1,j}; \\копируем нижние строки
m:=m-1; \\уменьшаем количество строк
end
else i:=i+1; \\переход к следующей строке
r:=false;
end;
writeln;
for i:=1 to m do
begin
for j:=1 to n do
write(a{i,j},' ');
writeln;
end;
readln;
end.
Мурат Шулаков
Мурат Шулаков
1 019
Лучший ответ
Таргин Кырыкбаев Спасибо за идею))) Программу я написала по-другому))
1)Ищешь максимальный элемент
2)Идешь счетчиком по строке, и если находишь сей элемент, проходишь по етой строке и всю её зануляешь
Yuri M
Yuri M
1 510
Таргин Кырыкбаев Надо удалить, а не занулить...
1) Нахожу максимальный элемент.
2) for i:=1 to n do
begin
for j:= 1 to n do
begin
If a[i,j]=max then begin
{здесь надо подсчитывать кол-во удаленных элементов и перемещать строки , но как... Как одну строку из массива удалить я знаю, но несколько...}
end;
end;
end;
1)Создаем одномерный массив, в котором будем хранить признак удаляемости для кадой строки массива (Например mas[1]=0 - будет означать что первую строку не нужно будет удалять, mas[2]=1 - означает что строку номер 2 в массиве необходимо будет удалить) . Заполним его нулями, т. е. пока для всех строк признак удаляемости 0 - не удалять.
2)Для начала найдем макисмальный элемент: создадим переменную Max и запишем туда для начала 0, переберем весь массив, при переборе массива каждый элемент будем сравнивать с значением переменной Max, если элемент больше значения Max, то в переменную Max будем записывать значение текущего элемента, если же не больше переменной Max, то берем следующий элемент массива. В итоге в переменной Max окажется максимальное значение массива.
3) Теперь переберем весь массив. При переборе массива если элемент равен максимальному значению, то в одномерный массив для соответствующей строчки запишем признак удаляемости, т. е. 1 (например если в массиве в третьей строчке есть максимальный элемент, то запишем в Mas[3]=1)
4) создатим такой же 2-х мерный массив как и дан. Теперь переберем одномерный массив и будем смотреть какие строчки перенести в новый массив (переносим те строчки которые удалять не надо, т. е. там где mas[x]=0). если строка не удаляется, то перекидываем строчку из оригинального массива в новый.
В итоге мы получим новый массив без удаленных строчек
Лена Дойч
Лена Дойч
1 123