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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
Старый 12.04.2012, 19:21   #1
subzero95
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 22
Восклицание Задача на Паскаль-обработать и отсортировать данные об участниках соревнований

Проанализировать данные по N секциям. Информация об участнике задаётся строкой, которая содержит номер секции, фамилия, имя, пол, рост, вес.
1) Обеспечить приём всех данных с комментариями с клавиатуры и записать их в массив строк.
2) Для тех секций, в которых максимальный вес участника больше среднего по всем секциям, упорядочить участников в порядке невозрастания их роста. Найти и вывести средний рост девушек, занимающихся в каждой секции.
3) Вывести на печать отсортированный массив строк (не более 3-х первых строк по каждой секции).

В этой задаче меня интересует второй пункт. Как отсортировать участников если они идут не подряд, к примеру:
1 S. Alex m 170 70
2 M. Max m 179 110
1 K. Nick m 185 70



Вот мои наброски... Не судите строго, знаю что каряво:
Код:
 program asdf;
 uses CRT;
 var a:array[1..10,1..10]of string;
     v,n,i,code,j,k:integer;
     b,s,sr:real;
 begin
  ClrScr;
  writeln('VVEDITE KOLVO CHELOVEK');
  readln(n);
  if (n<=0) or (n>20) then
   writeln('ANOMAL')
   else
   begin
   for i:=1 to n do
    begin
    j:=0;
    inc(j);
    writeln('VVEDITE NOMER SEKCHII');
    readln(a[i,j]);
    inc(j);
    writeln('VVEDITE FAMIL');
    readln(a[i,j]);
    inc(j);
    writeln('VVEDITE UMIA');
    readln(a[i,j]);
    inc(j);
    writeln('ROST');
    readln(a[i,j]);
    inc(j);
    writeln('POL');
    readln(a[i,j]);
    inc(j);
    writeln('VES');
    readln(a[i,j]);
    end;
    s:=0;
    k:=0;
    for i:=1 to n do
     begin
     Val(a[i,6],b,Code);
     s:=s+b;
     k:=k+1;
     end;
     sr:=s/k;
     for i:=1 to n do
     begin
     Val(a[i,6],b,Code);
      if b>sr then
      begin
    ???????????
 ?????????????
???????????????                              {Это я уже незнаю}
       end;
         end;
...

Последний раз редактировалось subzero95; 12.04.2012 в 19:41.
subzero95 вне форума Ответить с цитированием
Старый 12.04.2012, 20:22   #2
subzero95
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 22
По умолчанию

Никто не знает?..
subzero95 вне форума Ответить с цитированием
Старый 12.04.2012, 23:37   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

несмотря на
Цитата:
1) Обеспечить приём всех данных с комментариями с клавиатуры и записать их в массив строк.
, имхо, задачу можно упростить - обеспечьте ввод данных в массив ЗАПИСЕЙ об участниках соревнований, а потом уже обработку записей (сортировку, например) проводите в этом массиве.

Если же хотите, то и со строками можно замутить.
Тогда я бы написал функции, которые возвращают нужную информацию из строки.
например,
функция GetSection(s : string) : integer;
вернёт номер секции,

функция GetHeight(s : string) : integer;
вернёт рост.
ну и т.д.

да и вместо двухмерного массива я бы ограничился обычным одномерным...


а возни (рутины) в этих ТРЁХ задачах действительно много...
Например, я не вижу, где Вы в коде ищите максимальный вес по каждой секции.
(чтобы его сравнивать потом со средним весом по всем секциям), ведь только потом уже можно заниматься упорядочиванием данных!


Цитата:
Никто не знает?..
Если Вы думаете, что желающих бросить все свои дела и заниматься чужим кодом за час найдётся очень много, то Вы явно заблуждаетесь! Здесь не раздел Фриланс, чтобы бросаться на задачу!

Успехов в разработке кода!

Последний раз редактировалось Serge_Bliznykov; 12.04.2012 в 23:40.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.04.2012, 23:41   #4
subzero95
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 22
По умолчанию

Благодарю.
Цитата:
а возни (рутины) в этих ТРЁХ задачах действительно много...
Сейчас пытаюсь сделать задачу 2 одним циклом... Решил пойти через запись...
subzero95 вне форума Ответить с цитированием
Старый 13.04.2012, 00:22   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

во-вторых, если до завтра не разберётесь, думаю, смогу Вам помочь!
только не расхолаживайтесь, постарайтесь решить задачу самостоятельно!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считать и обработать данные из файла EXCEL CJ ALEX R Помощь студентам 4 14.08.2011 13:04
Как отсортировать данные начиная с восьмого разряда? Дмитрий177 Microsoft Office Excel 7 29.01.2011 04:43
Обработать слова в Паскаль Twisti Помощь студентам 2 25.12.2010 22:23
Обработать строку [Паскаль] Вадим25 Помощь студентам 1 14.12.2010 13:24
Как обработать данные с форм в php Hichigo PHP 3 25.07.2010 03:39