Другие языки программирования и технологии
Программисты, подскажите алгоритм, пожалуйста, очень нужно(Паскаль)!
Удалить все строки, содержащие максимальный элемент массива.Соглашусь с вами, задача не очень трудная....Но то ли сегодня я не выспалась, то ли какие-то другие причины, но у меня не получается решить...Подкажите пожалуйста алгоритм, буду очень благодарна)))
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.
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)Ищешь максимальный элемент
2)Идешь счетчиком по строке, и если находишь сей элемент, проходишь по етой строке и всю её зануляешь
2)Идешь счетчиком по строке, и если находишь сей элемент, проходишь по етой строке и всю её зануляешь
Таргин Кырыкбаев
Надо удалить, а не занулить...
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) Нахожу максимальный элемент.
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). если строка не удаляется, то перекидываем строчку из оригинального массива в новый.
В итоге мы получим новый массив без удаленных строчек
2)Для начала найдем макисмальный элемент: создадим переменную Max и запишем туда для начала 0, переберем весь массив, при переборе массива каждый элемент будем сравнивать с значением переменной Max, если элемент больше значения Max, то в переменную Max будем записывать значение текущего элемента, если же не больше переменной Max, то берем следующий элемент массива. В итоге в переменной Max окажется максимальное значение массива.
3) Теперь переберем весь массив. При переборе массива если элемент равен максимальному значению, то в одномерный массив для соответствующей строчки запишем признак удаляемости, т. е. 1 (например если в массиве в третьей строчке есть максимальный элемент, то запишем в Mas[3]=1)
4) создатим такой же 2-х мерный массив как и дан. Теперь переберем одномерный массив и будем смотреть какие строчки перенести в новый массив (переносим те строчки которые удалять не надо, т. е. там где mas[x]=0). если строка не удаляется, то перекидываем строчку из оригинального массива в новый.
В итоге мы получим новый массив без удаленных строчек
Похожие вопросы
- Напишите пожалуйста программу на visual basic 2010(Пожалуйста очень нужно)
- Нужен скрипт, бинд, прога, макрос, хоткей. Что угодно. Помогите, пожалуйста, очень нужно.
- Помогите пожалуйста, очень нужно....
- Помогите пожалуйста... мне так нужно.. очень очень!!! нужно составить легенькую програмку в паскале)
- паскаль. подскажите алгоритм
- я хочю пойти в 16 на программиста подскажите там очень тяжело
- Помогите пожалуйста найти ошибку в решении задачи по информатике(паскаль) !!!Прошу очень нужно!!!задача простая!!!
- помогите пожалуйста решить задачи в паскале очень нужно!
- очень нужно, помогите пожалуйста. Приведите словесное описание алгоритма сложения двух обыкновенных дробей a/b и c/d
- Задача в паскале. помогите пожалуйста... очень срочно нужно!