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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2007, 15:56   #1
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
Вопрос Удаление строк массива по условию

Пересмотрел кучу примеров (как удалить строки), но не могу сделать, чтобы вычеркивались строки, в которых более трех отрицательных элементов.
Помогите (коротеньким кодом)
Lexakazanskij вне форума Ответить с цитированием
Старый 12.09.2007, 16:21   #2
pinhead
Пользователь
 
Аватар для pinhead
 
Регистрация: 08.12.2006
Сообщений: 36
По умолчанию

То бишь, у тебя переменная тип String в которой находятся элементы (числа и символы) и надо удалить идущие три поряд симвла (числа) если они отрицательны?
Знание этого – Мудрость.
Умение этим пользоваться – Искусство.
pinhead вне форума Ответить с цитированием
Старый 12.09.2007, 16:53   #3
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
По умолчанию

У меня- обычная матрица типа integer (ничего особенного).
Lexakazanskij вне форума Ответить с цитированием
Старый 12.09.2007, 18:07   #4
pinhead
Пользователь
 
Аватар для pinhead
 
Регистрация: 08.12.2006
Сообщений: 36
По умолчанию

У вас матрица формата MxN, и надо просмотреть все строки матрицы найти таки, у которых имеются три эл-та (идущих подряд) отрицательных и эти строки убрать из матрицы?
Знание этого – Мудрость.
Умение этим пользоваться – Искусство.
pinhead вне форума Ответить с цитированием
Старый 12.09.2007, 19:39   #5
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
По умолчанию

Да, но содержащая больше трех эл-тов (4,5,6...
Lexakazanskij вне форума Ответить с цитированием
Старый 12.09.2007, 19:55   #6
pascal65536
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 42
По умолчанию

А как вообще убираются элементы из массива? Его же не укоротишь налету. Если записать вместо "удалённых" элементов 0 или например MaxInt это тоже не удаление.
pascal65536 вне форума Ответить с цитированием
Старый 12.09.2007, 20:03   #7
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
По умолчанию

Методом перестановки строк, убирается массив, вернее: переписывается.
Lexakazanskij вне форума Ответить с цитированием
Старый 12.09.2007, 20:22   #8
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
По умолчанию

Коротенький ответ, на мною заданный вопрос:

Program neo;
USES CRT;
Var a: array[ 1..20,1..20] of integer;
q,w,e,r,t,y:integer;
Begin
clrscr;
WriteLn('Размерность матрицы строки, столбы <=20');
ReadLn(q,w);
WriteLn('Введите ',q,' строк по ',w,' элементов');
for r:=1 to q do
For t:= 1 to w do Read(a[r,t]);
Readln;
WriteLn('Исходный массив');
for r:=1 to q do
begin
for t:=1 to w do
Write(a[r,t]:4);
WriteLn;
end;
e:=0;
for r:=1 to q do
begin
y:=0;
for t:=1 to w do
if a[r,t]<0 then y:=y+1;
if y<4 then
begin
e:=e+1;
for t:=1 to w do a[e,t]:=a[r,t];
end;
end;
if e<>0 then
begin
WriteLn('Новая матрица ');
for r:=1 to e do
begin
for t:=1 to w do
Write(a[r,t]:4);
WriteLn;
end;
end
else
WriteLn('Здесь был Нео');
readln;
end.

P. S. О найденных ошибках, просьба сообщать
Lexakazanskij вне форума Ответить с цитированием
Старый 12.09.2007, 20:22   #9
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

Если ни где не ошибся то-
Код:
 
const m=5,n=5;
var a,b:array[1..m,1..n] of string;q:string;k,d,i,z,x,x1,x2:integer;c:array[1..m,1..n] of string;
begin
for i:=1 to m do
for i:=1 to n do
b[i,z]:=0;
for i:=1 to m do begin
for z:=1 to n do
begin
q:=a[i,z];d:=0;
for k:=1 to length(q)-2 do
begin
x:=integer(q[k]);
x1:=integer(q[k+1]);
x2:=integer(q[k+2]);
if (x<0)and(x1<0)and(x2<0) then d:=d+1;
if d>2 then begin
b[i,z]:=1;break;
end;
end;
end;
end;
d:=1;k:=1;
for i:=1 to m do begin
for z:=1 to n do begin
if b[i,z]=0 then
begin
if d=n then begin d:=1;k:=k+1;end else d:=d+1;
 c[k,d]:=a[i,z];
end;end;
bill вне форума Ответить с цитированием
Старый 12.09.2007, 20:32   #10
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
Смех

Цитата:
Сообщение от bill Посмотреть сообщение
Если ни где не ошибся то-
Спасибо за код

pascal65536 -ты мне открыл глаза
Lexakazanskij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строк alexk Microsoft Office Excel 24 15.02.2011 08:34
удаление дубликатов и группировка строк Serglen Microsoft Office Excel 2 30.07.2008 15:51
Импорт и удаление некоторых строк Alex2008 Microsoft Office Excel 3 06.05.2008 18:26
Запрет на удаление строк и столбцов Shavminator Microsoft Office Excel 2 12.01.2008 13:36
Удаление элемента массива chiffa Общие вопросы Delphi 1 03.01.2008 19:24