Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 9
1

Структура: Найти самую молодую команду среди учасников турнира.

16.06.2017, 16:38. Показов 1850. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста решить задачу

Есть запись с такой структурой:
Delphi
1
2
3
4
5
6
7
type
    Tsportsman =  record
      team: string[20];
      fio: string[20];
      number: integer;
      age: integer;
    end;
Нужно найти самую молодую команду.

На сколько я понял мне нужно как то сгруппировать массив по команде, попутно просуммировав возраст, а потом сравнить
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2017, 16:38
Ответы с готовыми решениями:

Структура содержит информацию о спортивной команде. Найти самую молодую команду
Здравствуйте!Помогите решить задачу. Задание: Информация об участниках спортивных соревнований...

Найти самого старого мужчину и самую молодую женщину в списке группы
Всем привет, дали условие "Дан список группы в 10 человек в виде ФАМИЛИЯ ГОД_РОЖД. ПОЛ 15 симв....

В файле query1 найти среди Sales, самую большую зарплату, а среди Research самую маленькую зарплату
В файле query1 найти среди Отдела Sales, самую большую зарплату, а среди Отдела Research самую...

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

7
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.06.2017, 17:15 2
Цитата Сообщение от frzn88 Посмотреть сообщение
как то сгруппировать массив по команде
Да, из первого массива нужно выбрать массив команд, для которых определить средний возраст.
Можно еще создать один тип записей
Delphi
1
2
3
4
5
6
team=record
        name:string[20];
        sum_age:integer;
        count:integer;
        srd_age:double;
       end;
1
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
16.06.2017, 17:16 3
Цитата Сообщение от frzn88 Посмотреть сообщение
На сколько я понял мне нужно как то сгруппировать массив по команде, попутно просуммировав возраст, а потом сравнить
вы не пробовали программировать в SQL - мыслите в нужную сторону

к сожалению в делфи нужно перебрать все записи, попутно разбирая на команды и суммируя возраст. под это дело можно использовать массивы
1
Модератор
9267 / 6045 / 2380
Регистрация: 21.01.2014
Сообщений: 25,810
Записей в блоге: 3
16.06.2017, 17:59 4
Цитата Сообщение от qwertehok Посмотреть сообщение
под это дело можно использовать массивы
а можно StringList и CustomSort...
0
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,375
16.06.2017, 18:31 5
Есть 2 команды:
А (18,18,21,21,22)
Б (18,18,18,23,23)
Какая из них моложе?

Задолбало уже править постоянно дубли, что форум плодит при лагах.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.06.2017, 18:35 6
Вообще одинаковые, но если выбирать в цикле по принципу
Delphi
1
2
3
min:=a[1];
for i:=2 to n do
if a[i]<min then min:=a[i];
то будет первая.
0
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 9
16.06.2017, 19:51  [ТС] 7
Цитата Сообщение от Puporev Посмотреть сообщение
Да, из первого массива нужно выбрать массив команд, для которых определить средний возраст.
Можно еще создать один тип записей
Delphi
1
2
3
4
5
6
team=record
        name:string[20];
        sum_age:integer;
        count:integer;
        srd_age:double;
       end;
Попробовал вот так, соответственно при повторном совпадении запись дублируется, как избежать этого?
Delphi
1
2
3
4
5
6
7
8
9
for i:=1 to nzap do
  for j:=1 to nzap do
    if arr[i].team = arr[j].team then
    begin
      arrtm[i].name:= arr[i].team;
      arrtm[i].sum_age:= arrtm[i].sum_age + arr[j].age;
      arrtm[i].count:= arrtm[i].count+1;
      arrtm[i].srd_age:= arrtm[i].sum_age / arrtm[i].count;
    end;
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.06.2017, 20:03 8
Лучший ответ Сообщение было отмечено frzn88 как решение

Решение

Вот я набросал со своим переменными
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
m:=1;
b[m].name:=a[1].team;
b[m].sum_age:=a[1].age;
b[m].count:=1;
for i:=2 to n do
 begin
  j:=1;
  while a[i].team<>b[j].name do inc j;
  if j>n then
   begin
    inc(m);
    b[m].name:=a[1].team;
    b[m].sum_age:=a[1].age;
    b[m].count:=1;
   end
  else
   begin
    inc(b[j].sum_age,a[i].age);
    inc(b[j].count;
   end;
Добавлено через 3 минуты
a массив записей первого типа, n его размер
b массив записей второго типа, m его размер
1
16.06.2017, 20:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2017, 20:03
Помогаю со студенческими работами здесь

Структура: Для заданного автора вывести на экран его самую раннюю книгу и самую последнюю - по году издания.
Дан массив записей, содержащий сведения о книгах: фамилия автора, название книги, год издания...

Из массива строк выделить подстроки состоящие из русских букв, затем найти среди них самую котороткую
Продолжение задания: В строке, содержащей самую коротку подстроку(из условия) - русские буквы в...

Структура "Группа", найти самую высокую девушку
Задание: Структура группа из 7 человек. Имя | Пол | Рост|. Определить имя самой высокой девицы. На...

В тексте найти самую длинную и самую короткую строки и поменять их местами
в тексте найти самую длинную и самую короткую строки и поменять их местами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru