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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2007, 21:10   #1
DragonionS
Новичок
Джуниор
 
Регистрация: 06.06.2007
Сообщений: 2
Восклицание Как сравнить элементы 2 массивов между собой?

Здравствуйте! Как бы вы сравнивали элементы 2 массивов разной величины, когда у вас есть эти массивы и известен размер каждого массива. Элементы массива - строки, но на самом деле это слова. Тоесть было 2 строки. Я создал из них массивы слов и теперь надо их сравнить и одинаковые слова сохранить в файл. Как бы вы это реаизовали?

У меня есть 1 алгоритм, только я видно допустил ошибку где-то, что находит 1 одинаковый элемент и дальше все .

Цитата:
repeat
CheckArr:=MakeArrayofString(Check1. Text, Check1); {Это я из значения TEdit.Text создаю массив, где есть 2 элемента.
Первый будет как бы маркер, а второй означать будет i, тоесть номер элемента
первого массива}

if (Arr1[i]<>Arr2[j]) then //Если элементы не равны, то
begin
i:=StrToInt(CheckArr[1]); //элементу "i" присваивается значение 2 элемента 1 массива
if j<k then {Если количество элем. 2 массива не закончилось, то увеличить на 1}
j:=j+1
else
i:=i+1 {Если закончился 2 массив, то начнем сравнивать след. эл. 1 массива с элемен. 2 массива}
end
else
if Arr1[i]=Arr2[j] then {Если элементы совпадают, то }
if CheckArr[0]<>'Marked' then {Если 1 элемент спец массива не совпадает со словом маркером, то
выведем элемент-слово на экран, увеличим индекс элементов,
чтобы потом сравнивать следующие и создадим слово-маркер}

begin
SpecialString:=SpecialString + Arr1[i];
CompareResult.Text := SpecialString;
inc(i);
inc(j);
Check1.Text:='Marked ' + IntToStr(i);
Check2.Text:=IntToStr(j)
end
else
SpecialString:=SpecialString + Arr1[i]; {Здесь, если слово маркер есть, то просто увеличивается на 1}
CompareResult.Text := SpecialString;
inc(i);
inc(j);
Check2.Text:=IntToStr(j);
until i<s; {повторять до тех пор, пока не закончится колличество элементов 1 массива}
DragonionS вне форума Ответить с цитированием
Старый 01.07.2007, 21:49   #2
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Хорошо

var ss1,ss2,ss:array of string;
i,j:word;


ss1 и ss2 твои массивы строк, гдето в проге они заполнились


for i:=0 to length(ss1)-1 do
for j:=0 to length(ss2)-1 do
if ss1[i]=ss2[j] then begin
setlength(ss,length(ss)+1);
ss[length(ss)]:=ss1[i];
end;

ss - полученный массив совпадающих строк в ss1 и ss2
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнить тексты olimpus Microsoft Office Excel 27 07.11.2008 10:29
SQL. Объединение таблицы с собой _SERGEYX_ БД в Delphi 2 02.06.2008 21:52
сравнить 2 строчки oLMeR Общие вопросы Delphi 3 02.11.2007 11:51
одномерный массив, элементы которого собраны в возрастающем порядке из двух начальных массивов Scudetto Общие вопросы C/C++ 7 21.10.2007 20:46