Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2013, 15:51   #1
XaHTeP
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 27
По умолчанию

дан двумерный массив размеров 6*7 заполненный случайным образом. Удалить строку содержащую минимальный элемент

Напишите прогу плз

Пытался написать но что-то нето
Код:
begin
for i:=1 to 6 do
for j:=1 to 7 do
a[i,j]:=random(10)+1;
writeln('ISHOD') ;
for i:=1 to 6 do begin
for j:=1 to 7 do
write(a[i,j],'   ');
writeln;
end;
a[1,1]:=min;
k:=1;
for i:=1 to 6 do
for j:=1 to 7 do
if a[i,j]<min    then
begin
k:=i;
min:=a[i,j];
end;
for i:=k to 6-1 do
for j:=1 to 7 do
a[i,j]:=a[i+1,j];
for j:=1 to 7 do
a[6,j]:=0;
writeln('RESULTAT_GG_WP');
for i:=1 to 6-1 do begin
for j:=1 to 7 do
write(a[i,j],'   ');
writeln;
end;
end.

Последний раз редактировалось Stilet; 12.01.2013 в 17:22.
XaHTeP вне форума Ответить с цитированием
Старый 12.01.2013, 17:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
begin
imin:=1;jmin:=1;
for i:=1 to 6 do for j:=1 to 7 do begin 
 a[i,j]:=random(10)+1;
 if a[i,j]<a[imin,jmin] then  begin 
  imin:=i;jmin:=j;
 end; 
end;
writeln('ISHOD') ;

for i:=1 to 6 do begin
 for j:=1 to 7 do write(a[i,j],'   ');
 writeln;
end;

for i:=1 to 6 do begin if i<>imin then
 for j:=1 to 7 do write(a[i,j],'   ');
 writeln;
end;

readln;
end.
годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2013, 17:57   #3
XaHTeP
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 27
По умолчанию

Спасибо большое) (удаляется только 1 строка с мин элементом , интересно а как сделать чтобы удалялись все сразу))
XaHTeP вне форума Ответить с цитированием
Старый 12.01.2013, 18:02   #4
XaHTeP
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 27
По умолчанию

Вот что выдает прога

ISHOD
1 6 9 3 1 9 4
8 2 1 7 1 10 8
4 6 10 2 10 6 10
9 10 6 2 3 4 1
6 9 6 4 6 6 3
4 6 8 7 2 3 10

8 2 1 7 1 10 8
4 6 10 2 10 6 10
9 10 6 2 3 4 1
6 9 6 4 6 6 3
4 6 8 7 2 3 10

Последний раз редактировалось XaHTeP; 12.01.2013 в 18:05.
XaHTeP вне форума Ответить с цитированием
Старый 12.01.2013, 18:34   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как сделать чтобы удалялись все сразу
Создай массив вспомогательный, и там храни пометку типа Boolean. Каждый элемент массива будет характеризовать строку с таким же индексом. Если пометка есть то эту строку не выводить а экран.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2013, 18:51   #6
XaHTeP
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 27
По умолчанию

немного исправил
Нужна доработка
дело в том, что когда программа находит отрицательный элемент она дальше ничего не выводит

Странно прога не пробегает все значения от 1 до 6 ( когда идет проверка на минимальное число)
если хоть в одном случае она находит отриц число то остальные она не проверяет . Пфф что надо исправить?


Код:
Program p1;
var a:array [1..10,1..10] of integer;
imin,jmin,i,j,k:Integer;
begin
imin:=1;jmin:=1;
for i:=1 to 6 do for j:=1 to 7 do begin
 a[i,j]:=random(10)+1;
 if a[i,j]<a[imin,jmin] then  begin
  imin:=i;jmin:=j;
 end;
end;
writeln('ISHOD') ;

for i:=1 to 6 do begin
 for j:=1 to 7 do write(a[i,j],'   ');
 writeln;
end;
writeln('KON');
 K:=0;
for i:=1 to 6 do
 begin
 for j:=1 to 7 do
 if a[i,j]=a[imin,jmin] then
 k:=k+1;
 if k=0 then
 for j:=1 to 7 do write(a[i,j],'   ');
 writeln;
end;

readln;
end.

Последний раз редактировалось XaHTeP; 12.01.2013 в 19:01.
XaHTeP вне форума Ответить с цитированием
Старый 12.01.2013, 19:02   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
k:=k+1;
if k=0 then
Это что и зачем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2013, 19:04   #8
XaHTeP
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 27
По умолчанию

Ну вот если есть хоть одно минимальное число в строке значит мы ее не выводим




ну почему он не проверяет следующие значения?
ISHOD
10 6 6 2 2 7 10
7 2 9 8 1 10 9
7 5 6 5 8 6 9
1 9 6 10 10 7 1
4 8 6 2 9 7 8
8 9 2 3 7 8 7
KON
10 6 6 2 2 7 10

Последний раз редактировалось XaHTeP; 12.01.2013 в 19:15.
XaHTeP вне форума Ответить с цитированием
Старый 12.01.2013, 20:23   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я не это умел ввиду. Я имел ввиду что есть некий массив типа Boolean.
В цикле после ввода массива ты устанавливаешь его элементы:
Код:
if not b[i] and (a[i,j]=a[imin,jmin]) then b[i]:=true;
А потом при выводе проверяешь if not b[i] то выводить строку иначе пропустить вывод.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление строк и столбцов двумерного массива Павел Шилин Паскаль, Turbo Pascal, PascalABC.NET 1 20.05.2012 21:07
Нужно исправить задачу на удаление строк двумерныого массива с использованием процедур и функций maksimum Помощь студентам 4 01.05.2012 06:33
Добавление и удаление элементов из массива строк Alex2391 Общие вопросы Delphi 1 04.03.2011 17:59
удаление строк и столбцов из массива drNabla Microsoft Office Excel 16 13.01.2011 14:54
Удаление строк массива по условию Lexakazanskij Паскаль, Turbo Pascal, PascalABC.NET 9 12.09.2007 20:32