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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2009, 21:17   #1
Victory1
 
Регистрация: 13.05.2009
Сообщений: 3
По умолчанию Проверка матрицы на наличие одинаковых строк

Есть матрица BV[i,j] типа integer, как осуществить проверку на наличие одинаковых строк и если они будут найдены, затереть одну из двух одинаковых и поднять на ее место остальные строки?
Victory1 вне форума Ответить с цитированием
Старый 20.06.2009, 00:11   #2
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Мой вариант:
Код:
program prg;
uses CRT;
const
  n = 4;
type
  AR2 = array[1..n,1..n] of integer;
var
  a : AR2;
  i, j, k, t, z : integer;
  key : boolean;
begin
clrscr;

// Читаем массив
for i:=1 to n do
begin
    for j:=1 to n do
    begin
        read(a[i,j]);
    end;
end;

for k:=1 to n-1 do
begin
     for i:=k+1 to n do
     begin
         // Если равны первые элементы
         if a[k,1] = a[i,1] then
         begin
         // Ключ проверки равенств
         key := true;

             for j:=1 to n do
             begin
                 // Проверяем равенство
                 if a[k,j] = a[i,j] then key := true
                 else
                 // Если есть несоответствие, то break
                 begin
                     key := false;
                     break;
                 end;
             end;
             
             // Если всё прошло без ошибок,
             // то запоминаем номер строки и break.
             if key then
             begin
                 z := i;
                 break;
             end;
             
         end;
     end;
end;

// Поднимаем нижние на уровень выше
while z <> n do
begin
    for i:=1 to n do
    begin
        a[z,i] := a[z+1,i];
    end;
    inc(z);
end;

// Нулим последние
for i := 1 to n do a[z,i] := 0;

// Выводим результат
writeln('Результат: ');
for i:=1 to n do
begin
    for j:=1 to n do
    begin
        if a[i,j] <> 0 then write(a[i,j]:4);
    end;
    writeln;
end;

end.
Пишу глупости.
Gongled вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск одинаковых строк Demitriy Microsoft Office Excel 45 26.07.2010 08:50
Проверка на наличие нескольких максимальныхэлементов xxSINxx Помощь студентам 3 11.03.2009 20:40
Проверка на наличие таблицы в БД Ramires БД в Delphi 3 18.12.2008 08:59
Проверка строки матрицы на симметричность. EVIL Помощь студентам 2 26.11.2007 23:23
Поиск одинаковых строк в файле ATL Помощь студентам 13 02.05.2007 01:05