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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 02:48   #1
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию Как вычислить совпадения в массиве?

Есть массив: имя, кол-во, и вес.
Код:
 P:Passenger = ((Name:'Lubkovsky';Number:3;Wt:2.5),
                      (Name:'Davudov';Number:5;Wt:7),
                      (Name:'Beluy';Number:4;Wt:5),
                      (Name:'Molodenova';Number:5;Wt:7.5),
                      (Name:'Sereda';Number:8;Wt:9.5));
Нужно определить следущее: имеються ли 2 человека с одинаковым кол-вом и разлиаються по весу не более чем на 0.5
Я задал так что есть совпадение:
Код:
 (Name:'Davudov';Number:5;Wt:7),
   (Name:'Molodenova';Number:5;Wt:7.5),
А вот как это посчитать, и вывести? Подскажите пожалуйста.
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 21.11.2010, 08:21   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

в цикле проверяешь:
Код:
for I := 0 to High( P ) do
  for J := I + 1 to High( P ) do
  begin
    if P[ I ].Number = P[ J ].Number then
      if Abs( P[ I ].Wt - P[ J ].Wt ) <= 0.5 then
        begin
          // Здесь обрабатываешь совпадение
        end;
  end;
maxionans вне форума Ответить с цитированием
Старый 21.11.2010, 11:48   #3
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

maxionans, спасибо Вам большое
Но у еще возникла проблема, нужно вывести Writeln('Takux sovpadenuy net'); (ну в случае если их нет). делал через else получается что оно в цикле и его выводит много раз. Кроме того как это сделать через отдельный If есть какие-то варианты?
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 21.11.2010, 12:27   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Попробуй так
Код:
flag := false;
for I := 0 to High( P ) do
  for J := I + 1 to High( P ) do
  begin
    if P[ I ].Number = P[ J ].Number then
      if Abs( P[ I ].Wt - P[ J ].Wt ) <= 0.5 then
        begin
            flag := true;
          // Здесь обрабатываешь совпадение
        end;
  end;
if flag = false then
    Writeln ('Sovpadenii net');
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 21.11.2010, 13:38   #5
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Благодарю, Hacker19_90!
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать выделение ячейки по условиям совпадения Sanden Microsoft Office Excel 14 09.04.2015 11:04
Как отметить совпадения hloppel Microsoft Office Excel 6 28.10.2010 09:45
stringgrid,сравнение двух столбцов на совпадения и не совпадения betirsolt БД в Delphi 7 19.01.2010 15:09
Вычислить n-ый член по заданному n в массиве DiegO Паскаль, Turbo Pascal, PascalABC.NET 3 06.12.2008 20:58
как вывести факт совпадения? Dennikid Общие вопросы Delphi 0 29.10.2008 16:05