Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76

Отсортировать студентов по среднему баллу

06.01.2015, 21:17. Показов 3748. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
uses
   crt;
 
const
   n = 3;
 
type
   FName = record                        // Представление полного имени в виде записи
      Name, Surname, SecondName: string;
   end;
 
   student = record
      FullName: FName;                   // ФИО
      Group: string;                       // Номер группы
      course: 1..4;                      // Курс
      marks: array [1..4]  of byte;      // Оценки
      dd: 1..31;                         // День
      mm: 1..12;                         // Месяц
      yy: integer;                       // Год
      Eyy: 1900..2016;                   // Год поступления
      srBal: array [1..4]  of real;      //Средний бал
   End;
var
   i,k: integer;
   buf:real;
   s: Student;
   Students: array [0..n-1] of Student;  // Массив студентов
    c:char;
begin
   ClrScr;
   for i:= 0 to n-1 do begin
       with s do begin
         Writeln(' * Заполнение данных ', i+1,'-ого учащегося * ');
         Writeln('Имя:');
         readln(Fullname.Name);
 
         Writeln('Фамилия:');
         readln(Fullname.Surname);
 
         Writeln('Отчество:');
         readln(Fullname.SecondName);
 
         Writeln('Группа:');
         readln(Group);
 
         Writeln('Дата рожднния:');
         Write('   День: ');
         readln(dd);
 
         Write('   Месяц: ');
         readln(mm);
 
         Write('   Год: ');
         readln(yy);
 
         Writeln('Курс:');
         readln(course);
 
         Writeln('Оценки:');
         readln(marks[1], marks[2], marks[3], marks[4]);
         c:=chr(0);
      end;
      Students[i]:= s;
      ClrScr;
   end;
   ClrScr;
   writeln('ФИО':30,' | Группа | ', 'Дата рожднния':10,' | ', 'Курс':2,' | Оценки');
      begin
      s:= Students[i];
      for i:= 0 to n-1 do begin
      s.srBal[i]:=(s.marks[1] + s.marks[2] + s.marks[3] + s.marks[4])/4;
       end;
 //начало сортировки
         for i:=1 to n-1 do begin
          for k:=1 to n-1
          do begin
               if s.srBal[k]>s.srBal[k+1]
               then begin                         { обменяем k-й и (k+1)-й элементы }
                    buf:=s.srBal[k];
                    s.srBal[k]:=s.srBal[k+1];
                    s.srBal[k+1]:=buf;
               end;
          end;
          end;   //конец сортировки
          for i:= 0 to n-1 do begin
         writeln((s.Fullname.Name + ' ' + s.Fullname.Surname + ' ' + s.Fullname.SecondName):30,' | ',
                 s.Group:6 ,' | ',
                 (inttostr(s.dd) + '/' + inttostr(s.mm) + '/' + inttostr(s.yy)):13,' | ',
                 inttostr(s.course):4 ,' | ',
                 s.marks[1],' ',s.marks[2],' ',s.marks[3],' ',s.marks[4]);
                   end;
   end;
end.
помогите найти ошибку что то не работает...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2015, 21:17
Ответы с готовыми решениями:

Необходимо вывести Гистограмму по их среднему баллу с подписями.
Доброго времени суток! Помогите пожалуйста с задачкой: В файле есть список студентов (Фамилия Имя) и оценки, сдававших экзамены по...

Вывести на экран фамилии и имена 3 лучших по среднему баллу учеников
На вход в программе выдаются сведения об оценках в экзаменационной ведомости. В 1 строке сообщается количество учащихся (от 10...

Вывести на экран фамилии и имена трех худших по среднему баллу учеников
uses crt; const LIM = 100; var Info: array of record name: string; sum: integer; end; i, k, N, mark, min1, min2, min3: integer;...

6
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
07.01.2015, 10:40
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
srBal: array [1..4]  of real;      //Средний бал
Зачем массив?
Pascal
1
srBal: real;
При вводе оценок его считаете.
Pascal
1
2
3
4
5
6
7
8
Writeln('Оценки:');
srBal:=0;
for j:=1 to 4 do
 begin
  readln(marks[j]);
  srBal:=srBal+marks[j]
 end;
srBal:=srBal/4;
А сортировка так.
Pascal
1
2
3
4
5
6
7
8
9
..................
for i:=0 to n-2 do
for j:=i+1 to n-1 do
if Students[i].srBal>Students[j].srBal then
 begin
  s:=Students[i];
  Students[i]:=Students[j];
  Students[j]:=s;
 end;
1
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76
07.01.2015, 16:00  [ТС]
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
program var11;
uses
   crt;
 
const
   n = 2;
 
type
   FName = record                        // Ïðåäñòàâëåíèå ïîëíîãî èìåíè â âèäå çàïèñè
      Name, Surname, SecondName: string;
   end;
 
   student = record
      FullName: FName;                   // ÔÈÎ
      Group: string;                       // Íîìåð ãðóïïû
      course: 1..4;                      // Êóðñ
      marks: array [1..4]  of byte;      // Îöåíêè
      dd: 1..31;                         // Äåíü
      mm: 1..12;                         // Ìåñÿö
      yy: integer;                       // Ãîä
      Eyy: 1900..2016;                   // Ãîä ïîñòóïëåíèÿ
      srBal: real;                        //Ñðåäíèé áàë
   End;
var
   i,j,k: integer;
   buf:real;
   s: Student;
   Students: array [0..n-1] of Student;  // Ìàññèâ ñòóäåíòîâ
    c:char;
begin
   ClrScr;
   for i:= 0 to n-1 do begin
       with s do begin
         Writeln(' * Çàïîëíåíèå äàííûõ ', i+1,'-îãî ó÷àùåãîñÿ * ');
         Writeln('Èìÿ:');
         readln(Fullname.Name);
 
         Writeln('Ôàìèëèÿ:');
         readln(Fullname.Surname);
 
         Writeln('Îò÷åñòâî:');
         readln(Fullname.SecondName);
 
         Writeln('Ãðóïïà:');
         readln(Group);
 
         Writeln('Äàòà ðîæäííèÿ:');
         Write('   Äåíü: ');
         readln(dd);
 
         Write('   Ìåñÿö: ');
         readln(mm);
 
         Write('   Ãîä: ');
         readln(yy);
 
         Writeln('Êóðñ:');
         readln(course);
 
         Writeln('Îöåíêè:');
            srBal:=0;
           for j:=1 to 4 do
             begin
               read(marks[j]);
               srBal:=srBal+marks[j]
                end;
                  srBal:=srBal/4;
                  c:=chr(0);
                       end;
                     Students[i]:= s;
                       ClrScr;
                          end;
                             ClrScr;
   writeln('ÔÈÎ':30,' | Ãðóïïà | ', 'Äàòà ðîæäííèÿ':10,' | ', 'Êóðñ':2,' | Îöåíêè');
 //íà÷àëî ñîðòèðîâêè
 for i:=0 to n-2 do
for j:=i+1 to n-1 do
if Students[i].srBal>Students[j].srBal then
 begin
  s:=Students[i];
  Students[i]:=Students[j];
  Students[j]:=s;
 end;
 //êîíåö ñîðòèðîâêè
          for i:= 0 to n-1 do begin
         writeln((s.Fullname.Name + ' ' + s.Fullname.Surname + ' ' + s.Fullname.SecondName):30,' | ',
                 s.Group:6 ,' | ',
                 (inttostr(s.dd) + '/' + inttostr(s.mm) + '/' + inttostr(s.yy)):13,' | ',
                 inttostr(s.course):4 ,' | ',
                 s.marks[1],' ',s.marks[2],' ',s.marks[3],' ',s.marks[4]);
   end;
end.
Теперь почему-то выводит только данные того участцегося у которого средний бал больше
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
07.01.2015, 18:05
Pascal
1
2
for i:= 0 to n-1 do begin
         writeln((s.Fullname.Name ....
И что Вы это выводите??? А почему не
Pascal
1
2
 for i:= 0 to n-1 do begin
         writeln((Student[i].Fullname.Name.............
1
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76
07.01.2015, 21:26  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
И что Вы это выводите??? А почему не
Код Pascal
1
2
for i:= 0 to n-1 do begin
writeln((Student[i].Fullname.Name.............
Пишет переменная не является именем массива
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
07.01.2015, 21:30
Лучший ответ Сообщение было отмечено _tolik_ как решение

Решение

Ну напиши же
Pascal
1
writeln((Students[i].Fullname.Name.....
Совсем тупой или код вообще не твой?
1
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 76
07.01.2015, 21:43  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Совсем тупой или код вообще не твой?
Тысяча извинений ''s'' не дописал у вас была описка, а я не заметил....

Добавлено через 32 секунды
Огромное спасибо всё работает теперь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.01.2015, 21:43
Помогаю со студенческими работами здесь

Сортировка по возрастанию студентов по среднему баллу
Доброго времени суток. В общем, есть средние баллы(в самом низу программы), но сортировку я вообще не понимаю как сделать в такой...

Упорядочить список студентов по среднему баллу
я бы не назвал их сложными но что то не получается здесь 3 задачки Процедуры 1) Сформировать матрицы {aij}n,m , {bij}k,l , где...

Упорядочить список абитуриентов по среднему баллу аттестатов
Упорядочить список абитуриентов по среднему баллу аттестатов и распечатать его. (работать программа должна через файл)

Неправильно выводит имена в упорядоченном выводе по среднему баллу
упорядочение по среднему баллу Program lab5; uses crt; type student = record name: string; ...

Составить программу, которая корректирует список и сортирует его либо по среднему баллу, либо по алфавиту
Список студенческой группы записан на диске как текстовый файл. Каждая строка списка содержит фамилию студента и три экзаменационные...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru