Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск в двумерном массиве, поиск в массиве одинаковых значений 
:(
    Опции темы
Oliko
Дата 2.2.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.2.2010

Репутация: нет
Всего: нет



Здравствуйте. Помогите, пожалуйста, с задачей.
Нужно определить, есть ли одинаковые элементы в двумерном массиве.
Я понимаю, что перебирать весь массив каждый раз не нужно, но по-другому реализовать не получается.

Код

program test;
uses crt;
const  N=10;
var i,j,k, m, maxi, maxj, num:integer;
    a:array [1..N, 1..N] of integer;
       prover : boolean;
begin
clrscr;
randomize;   
Write('Количество строк в массиве до ', N,'  ');
read(maxi);
write('Количество столбцов в массиве до ', N,' ');
read(maxj); 
        writeln;
        for i:=1 to maxi do
            begin
                for j:=1 to maxj do
                    begin
                        a[i, j]:=round((random*21)-10);
                        write(a[i,j],' ');
                    end;
                    writeln;
            end;
                
writeln;
prover:=false;
m:=1;
k:=1;
num:=a[m,k];
while ( k<=maxj ) do 
begin 
    for j:=1 to maxj do
            begin
                for i:=1 to maxi do 
                    begin
                        if a[i, j]=num then 
                            begin
                                if ((i<>m) or(j<>k) ) then 
                                    prover:=true;
                            end; 
                        if (prover) then
                            break;
                    end;
                if(prover ) then
                    break;
            end;
            if(prover) then
                break;


    if(prover=false) then    
        begin
            if ((m+1 > maxi) and(k<=maxj)) then 
                begin
                    m:=1;
                    k:=k+1; 
                    num:=a[m,k];
                end

            else 
                begin
                    m:=m+1;
                    num:=a[m,k];
                end;
        end;                

end;    
writeln;
    
    if (prover) then 
        writeln('Одинаковые элементы есть')
    else 
        writeln('Одинаковых элементов нет');
end.        

PM MAIL   Вверх
Mikel
Дата 2.2.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



Как-то громоздко все. Но как минимум можно заменить на 
Код

...
    for j:=m to maxj do
            begin
                for i:=k to maxi do 
...



--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Oliko
Дата 2.2.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.2.2010

Репутация: нет
Всего: нет



Mikel, спасибо. Мне почему-то казалось, что нужно 

Код

...
for j:=k to maxj do
            begin
                for i:=m to maxi do 
...

отсюда у меня ошибки начались в ресультатах
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.