Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.10.2016, 22:59
Smile188 Smile188 вне форума
Прохожий
 
Регистрация: 02.10.2016
Сообщения: 18
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Определить пункт назначения, в который вылетает наибольшее кол-во пассажиров

Помогите с задачей


Авиабилет
Структура записи
-пункт назначения
- номер рейса
- модель самолета
- ФИО пассажира
- Дата вылета:
-день
-месяц
- год
Записи упорядоченный по пункту назначения . Определить пункт назначения , в который вылетает наибольшее кол-во пассажиров
Ответить с цитированием
  #2  
Старый 25.10.2016, 14:34
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

А записывать куда?)
или "в уме"(с)
Ответить с цитированием
  #3  
Старый 25.10.2016, 20:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,053
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

так и хочется ответить:
Код:
SELECT Destination, Count(1) AS Cnt FROM TicketList GROUP BY Destination ORDER BY 2 DESC LIMIT 1
Но LinQ, вроде, в Дельфях нету.

Задачу полностью ставь, давай свой код, в котором реализованно все, кроме проблемного места. Тогда кто-то поможет.

По алгоритму. Идешь по списку/массиву/что-там-у-тебя-где-эти-записи-храняться. Для каждой записи с тем же пунктом назначения к счетчику прибавляешь единичку. При смене пункта назначения сравниваешь с пред. значением, если больше, то запоминаешь новое. Как то так:
Код:
var
  Dest : String;
  DestCnt : Integer;
  CurDest : String;
  CurCnt : Integer;
  I : Integer;
begin
  Dest := '';
  DestCnt := 0;
  CurDest := '';
  CurCnt := 0;
  For I := Low(A) To High(A) Do // массив с записями
    If CurDest = A[i].Dest
      Then Inc(CurCnt) 
      Else
        Begin
          If CurCnt > DestCnt Then
            Begin
               Dest := CurDest;
               DestCnt := CurCnt;
            End;
          Curcnt := 0;
          CurDest := A[i].Dest;
        End;
  If CurCnt > DestCnt Then
    Begin
       Dest := CurDest;
       DestCnt := CurCnt;
    End;
  ShowMessage(Dest);
end;
Ответить с цитированием
  #4  
Старый 28.10.2016, 17:11
ShamanVV ShamanVV вне форума
Прохожий
 
Регистрация: 28.10.2016
Сообщения: 3
Версия Delphi: xe8
Репутация: 10
По умолчанию

А решение программно или динамически?

Последний раз редактировалось ShamanVV, 28.10.2016 в 17:34.
Ответить с цитированием
  #5  
Старый 28.10.2016, 19:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,053
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Чего???
Нифига не понял последний вопрос...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter