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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2013, 13:44   #1
serega96
Пользователь
 
Регистрация: 14.12.2011
Сообщений: 62
По умолчанию Вывод результатов алфавитном порядке

Столкнулся с проблемой. Задача:В некотором вузе абитуриенты проходят предварительное тестирование, по
результатам которого могут быть допущены к сдаче вступительных экзаменов в первом потоке. Тестирование проводится по двум предметам, по каждому предмету абитуриент может набрать от 0 до 100 баллов. При этом к сдаче экзаменов в первом потоке допускаются абитуриенты, набравшие по результатам тестирования не менее 30 баллов по каждому из двух предметов. На вход программы подаются сведения о результатах предварительного тестирования. Известно, что общее количество участников тестирования не превосходит 500.
В первой строке вводится количество абитуриентов, принимавших участие в тестировании, N. Далее следуют N строк, имеющих следующий формат:
<Фамилия> <Имя> <Баллы>
Здесь <Фамилия> – строка, состоящая не более чем из 20 символов; <Имя> – строка, состоящая не более чем из 15 символов; <Баллы> – строка, содержащая два целых числа, разделенных пробелом, соответствующих баллам, полученным на тестировании по каждому из двух предметов. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом. Примеры входных строк:
Ветров Роман 68 59
Анисимова Екатерина 64 88
Напишите программу, которая будет выводить на экран фамилии и имена абитуриентов, потерпевших неудачу, то есть не допущенных к сдаче экзаменов в первом потоке. При этом фамилии должны выводиться в алфавитном порядке.

Код:
uses
  SysUtils;


  type man = record
    name:string;
    a:integer;
    b:integer;

  end;
  lol = array[1..500] of man;
  var
 x:textfile;
 mas:lol;
 s:string;
 i,N,kol,j:integer;
 c,q,w,e,r:char;
 begin
  assignfile(x,'lol.txt');
 Reset(x);
 ReadLn(x,N);
 i:=1;
 J:=1;
 While j<=n do
 begin
  mas[i].name:='';
  Repeat
    Read(x,c);
    mas[i].name:=mas[i].name+c;
  Until c=' ';
   Repeat
    Read(x,c);
    mas[i].name:=mas[i].name+c;
  Until c=' ';
  ReadLn(x,mas[i].a,mas[i].b);
  If (mas[i].a<30) or (mas[i].b<30)
  then Inc(i);
  Inc(j);
 end;
 CloseFile(x);
 For j:=1 to i-1 do
...//тут должен быть вывод
end.

Я создал массив из тех, кого я должен вывести и осталось только вывести их в алфавитном порядке. Подскажете? Заранее спасибо!
serega96 вне форума Ответить с цитированием
Старый 08.01.2013, 15:15   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

1) добавляете в TStringList "имена абитуриентов, потерпевших неудачу"
2) сортируете TStringList (метод Sort)
3) сохраняете в файл
Lardes вне форума Ответить с цитированием
Старый 08.01.2013, 19:40   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Lardes, +1

добавлю. что, строго говоря, в данном случае можно обойтись и совсем без массива.
Прочитали строчку из входного файла. Разобрали на элементы. Проверили - является ли данная запись записью о студенте, который потерпел неудачу. Если да - добавили фамилию в StringList.
входной файл закончился. всё, сортируем StringList и выводим результаты (хоть на экран, хоть в файл - это неважно).


p.s. хотя, конечно, если Вам ваш массив дорог, то можно и с массивом дописать решение.
Достаточно отсортировать массив вручную, любым удобным Вам способом, хоть тем же "пузырьком"

Код:
var tmp : man;
....
 {сортировка массива mas по ФИО}
             for i:=1 to n-1 do
               for j:=i+1 to n do
                 if  mas[i].name>mas[j].name then begin
                   tmp := mas[i];
                   mas[i] := mas[j];
                   mas[j] := tmp;
                 end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.01.2013, 20:42   #4
serega96
Пользователь
 
Регистрация: 14.12.2011
Сообщений: 62
По умолчанию

Спасибо большое)
serega96 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод слов в алфавитном порядке. strem92 Фриланс 9 20.04.2010 22:10
[C++] Вывод в алфавитном порядке? sailol Помощь студентам 6 27.04.2009 21:37
Вывод списка в алфавитном порядке ErvinR PHP 4 24.10.2008 16:03
отсортировать таблицу сначала в алфавитном порядке фамилий продавцов, затем в порядке возростания получен Lora Microsoft Office Excel 1 31.05.2008 17:22