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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 17:20   #11
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

я предлогаю сразу вводить участников по секциям
и вообще нужно пррограмму переорганизовать
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 13.05.2012, 17:21   #12
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

сча поколдую
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 13.05.2012, 21:34   #13
subzero95
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 22
По умолчанию

Подскажите альтернативный способ сортировки пожалуйста!!!
subzero95 вне форума Ответить с цитированием
Старый 14.05.2012, 18:30   #14
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

сортируй пузырьком
жмяк
прости так и не притронулся, небыло настроения
и ещё
Цитата:
2) Для тех секций, в которых максимальный вес участника больше среднего по всем секциям, упорядочить участников в
порядке невозрастания их роста.
тебе проще делать массив основа которова - секция
ну к примеру
Код:
type tabl=record
   {nomer: 1..255;//уже не нужен}
   fam: string[50];
   name: string[50];
   pol: string[1];
   rost: 1..255;
   ves: 1..255;
    end;
gruppa=array[1..100] of tabl;
var
GruppSort: set of 1..100;
mass:array[1..100] of gruppa;{// где [1..100] - кол-во групп}
- пол можно вводить любой, лучше вводить по шаблону типо М/Ж, внедрить проверку на ввод
- очень много групп, введи неболее трех(к примеру)
- рост и вес лучше Integer, а то ввел 500, а там уже не 500, с ростом тоже самое

про сортировку:
тут уже проще чем у тебя будет
не нужно читать в какой кто группе
выбираем группу I и чела в группе I2
ну а далее все просто
Код:
sr:=0;
for I:=1 to 100 do
  begin
    for I2:=1 to 100{или n как у тебя} do
      begin  //только массив нужно обнулить перед вводом данных пользователем
        if mass[I{номер группы}, I2{номер чела}].ves > 0 then
          begin
            sr:= mass[I{номер группы}, I2{номер чела}].ves + sr;
            inc(l);
          end;
      end;
  end;
sr:=sr/l;
средний вес найден, будет как шаблон
теперь нужна переменная tabl типа, будет как буфер для обмена данными в массиве
обзовем ее ByfObmen:tabl;
далее сортировка, хотя нет, рано, найдем группы в которых нужно делать сортировку
используем предыдущий код, зачем писать еще раз )
Код:
{тут нужна переменная чтоб запомнить номера групп в которых будем сортировать
или напишем процедуру (так проще), но ты их не знаешь, обойдемся переменной,
тип возьмем множества. обзовем sGruppSort;}
GruppSor:=[];{обнулим ее}
for I:=1 to 100 do
  begin
    for I2:=1 to 100{или n как у тебя} do
      begin  //только массив нужно обнулить перед вводом данных пользователем
        if mass[I{номер группы}, I2{номер чела}].ves > sr then
          begin  {//обнаружили толстяка, записываем номер группы и ищем в другой группе}
           Include(GruppSort, I);
            break; 
          end;
      end;
  end;
далее сортировка

Код:
{тут будет проще через процедуру, но ...}
for I:=1 to 100 do
  begin
    l:=1;//индикатор перестановок
     if I in GruppSort then {проверяем нужно ли в это группе сортировать}
       begin
         while l = 1 do //если были перестановки то выполняем 
           begin
             l:=0;// обнуляем индикатор перестоновок
             for I2:=1 to 100 do
               begin
                 if mass[I,I2].rost<mass[I,I2+1].rost then
                   begin
                     ByfObmen := mass[I,I2+1];
                     mass[I,I2+1]:= mass[I,I2];
                     mass[I,I2]:=ByfObmen;
                     l:=1;// ставим единицу так как была перестановка(сортировка)
                   end;
               end;
           end;
       end;
  end;
и самое главное, весь код я не проверял, так что хз работает или нет, надеюсь помог, удачи
как-то так

Последний раз редактировалось Arhangel7; 15.05.2012 в 08:50.
Arhangel7 вне форума Ответить с цитированием
Старый 14.05.2012, 22:39   #15
subzero95
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 22
По умолчанию

Премного благодарен!!!
subzero95 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль выдаёт ошибку в последней строке. Getman Помощь студентам 1 01.02.2012 23:39
Выдаёт ошибку Stanislava7 Общие вопросы C/C++ 1 05.05.2010 17:55
Выдаёт ошибку: acos DOMAIN error,полсе нажатия окей,ещё одну ошибку pow OWERFLAW ERROR prikolist Общие вопросы C/C++ 4 10.04.2009 20:27
Выдаёт ошибку DM_bite Помощь студентам 2 08.08.2008 10:33