Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.01.2020
Сообщений: 1

Сортировка записей

13.01.2020, 19:04. Показов 755. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. По условию задачи нужно отсортировать студентов, удалить определенное количество студентов из списка в файле, вывести в новый файл. Код компилируется без проблем, но первая строка файла не сортируется, а в выводе отправляется в самый конец. Помогите пожалуйста решить данный вопрос.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
program students;
 
type
  info = record
    fam: string[20];
    name: string[15];
    rate1, rate2, rate3: word;
  end;
 
var
  F, V: text;
  student: array[1..500] of info; ch:info;
  i, n, k, j: integer;
  c: char;
  r1, r2, r3: byte;
 
begin
  assign(F, 'students.txt');
  reset(F);
  assign(V, 'output.txt');
  rewrite(V);
  readln(F, n);
  for i := 1 to n do
  begin
    k := 0;
    while k <> 1 do 
    begin
      read(F, c);
      if c = ' ' then begin k := k + 1; break; end;
      student[i].fam := student[i].fam + c;
    end;
    while k <> 2 do 
    begin
      read(F, c);
      if c = ' ' then k := k + 1;
      student[i].name := student[i].name + c;
    end;
    
       
    
    read(F, r1);
    student[i].rate1 := r1;
    read(F, r2);
    student[i].rate2 := r2;
    read(F, r3);
    student[i].rate3 := r3; 
  end;
 for i := 1 to n - 1 do
  begin
      for j := n - 1 downto i do
        if student[j].fam > student[j + 1].fam then begin //здесь сортирую 
          ch := student[j];
          student[j] := student[j + 1];
          student[j + 1] := ch;
        end;
        end; 
        
  for i := 1 to n do 
  begin
    if (student[i].rate1 >= 30) and (student[i].rate2 >= 30) and (student[i].rate3 >= 30) then begin
      if (student[i].rate1 + student[i].rate2 + student[i].rate3 >= 140) then begin
        write(V, student[i].fam, ' ', student[i].name); end; end; end;
  close(F);
  close(V);
end.
Вложения
Тип файла: txt students.txt (340 байт, 8 просмотров)
Тип файла: txt output.txt (59 байт, 9 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2020, 19:04
Ответы с готовыми решениями:

Сортировка записей
Подскажите пожалуйста. Проблема в сортировке записи. Нужно отсортировать по фамилии. Но идёт сортировка максимум первых 3-х фамилий....

Сортировка записей
Всем здрасте. Помогите пожалуйста с программой. Нужно вывести на экран и отсортировать таблицу из 4 колонок, № пк, Процессор, Видеокарта,...

Сортировка записей по номеру накладной
В файле Data (номер накладной, код товара, количество, стоимость единицы товара) отсортировать все записи по номеру накладной. Помогите,...

2
 Аватар для JuriiMW
5096 / 2662 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
14.01.2020, 04:38
Ещё бы знать что нужно…

Вот вам отсортированный список по фамилиям, по условию и отсортированный список по условию:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
type
  info = record
    fam: string[20];
    name: string[15];
    rate1, rate2, rate3: word;
    
    function toString : String; override;
    begin
      Result := $'{fam} {name} {rate1} {rate2} {rate3}';
    end;
  end;
 
function ReadStudents(fName : String) : List<info>;
begin
  Result := New List<info>;
  
  foreach var Line in ReadLines(fName) do
    begin
      var words := Line.toWords;
      if words.Count = 5 then
        begin
          var s := New info;
          s.fam := words[0];
          s.name := words[1];
          s.rate1 := StrToInt(words[2]);
          s.rate2 := StrToInt(words[3]);
          s.rate3 := StrToInt(words[4]);
          Result.Add(s);
        end;
    end;
end;
 
begin
  var student := ReadStudents('students.txt');
  'Список студентов:'.Println;
  student.PrintLines;
 
  PrintLn;
  'Список студентов отсортирован по фамилиям:'.Println;
  student.OrderBy(v->String(v.fam)).PrintLines;
  
  PrintLn;
  'Список с условиями:'.Println;
  student.Where(v->(v.rate1>29)and(v.rate2>29)and(v.rate3>29)and(v.rate1+v.rate2+v.rate3>139)).PrintLines;
  
  PrintLn;
  'Список отсортированный с условиями:'.Println;
  student.OrderBy(v->String(v.fam)).Where(v->(v.rate1>29)and(v.rate2>29)and(v.rate3>29)and(v.rate1+v.rate2+v.rate3>139)).PrintLines;
end.
0
80 / 33 / 10
Регистрация: 14.06.2019
Сообщений: 516
14.01.2020, 12:10
Pascal
1
2
3
4
5
6
begin
  readlines('students.txt') //Чтение из файла
  .where(s->{Условие, по которому будут оставляться студенты}(s.towords.elementat(2).tointeger>50)) //Например, этот код оставит всех, у кого rate1 > 50
  .skiplast(1).skip(1) //skiplast удаляет последние элементы, skip - первые
  .writelines('output.txt'); //Вывод в файл
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2020, 12:10
Помогаю со студенческими работами здесь

Сортировка Шелла массива записей по возрастанию
Ассортимент шоколада: марка, производитель, цена в формате nnn.nn S, где n — цифра, S — это знак $, E или P, обозначающии валюту (доллар,...

Сортировка записей.
&quot;Продажа проездных билетов УЕЗТУ&quot;. Структура записи: код организации, название организации, расчетный счет, приход, расход,...

Сортировка записей
В процессе функционирования АСУ ВД в файле фиксируются данные о самолетах, совершивших посадку. Каждая запись имеет структуру типа: ...

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

Сортировка массива записей.
Уже голову сломал!написал программу записи имени художника названия картины,техники,года написания,и стоимости в файл.Нужно определить...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru