С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Santi111
6 / 5 / 4
Регистрация: 06.03.2012
Сообщений: 61
1

Подсчитать количество студентов и средний бал в каждой группе по каждому экзамену

06.03.2012, 22:57. Просмотров 2819. Ответов 8
Метки нет (Все метки)

Подсчитать количество студентов и средний бал в каждой группе по каждому экзамену,
в базе данных созданной с помощью строк в паскале!!!

Добавлено через 54 минуты
Помогите пожалуйста это очень срочно!!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 22:57
Ответы с готовыми решениями:

Рассчитать средний бал каждого ученика и средний бал по каждому предмету
Подскажите как решать плз! 1)Написать программу создающую на диске файл...

Выбрать и вывести фамилии неуспевающих студентов и по каким предметам, подсчитать средний бал оценок каждого студента
По итогам аттестации по нескольким предметам выбрать и вывести фамилии...

Список групп содержит название группы, количество студентов в каждой группе. Расчитать количество двоек
Добрый вечер. Прохожу практику по паскалю, не могу справиться с одной задачей....

Посчитать средний бал студентов по 4 предметам
1.Составить программу обработки сведений о студентах своей группы. Сведения...

Найти студентов 2-го курса, которые имеют средний бал 4
Создать программу, которая создает базу данных согласно варианту. Группа: N...

8
КонецСвета
Почетный модератор
7932 / 3903 / 2464
Регистрация: 30.10.2011
Сообщений: 5,379
06.03.2012, 23:56 2
Santi111, это все условие? уточните: использовать массивы строк и чисел? типизированные или текстовые файлы? записи?
0
Santi111
6 / 5 / 4
Регистрация: 06.03.2012
Сообщений: 61
07.03.2012, 00:03  [ТС] 3
все задание выглядит так:

Вариант 6.
База данных (Студенты).]
Создать программу, создающую базу данных и выполняющую 4 задания. Каждую базу данных отсортировать по двум указанным полям. В каждой базе данных должно быть минимум 10 записей.
Поля: «Номер по порядку»; «Номер зачетки»; «Фамилия»; «Имя»; «Отчество»; «Родной город»; «Пол»*; «Номер группы»****; четыре поля, в которые внесены экзаменационные оценки**; «Год рождения»; «Величина стипендии»; «Проживание в общежитии»***.

Задание 1. Вывести фамилии, имена, группу и родной город студентов проживающих в общежитии.
Задание 2. Вывести ФИО и номер группы студентов, у которых оценки по всем экзаменам выше двух балов.
Задание 3. Подсчитать количество студентов и средний бал в каждой группе по каждому экзамену.
Задание 4. Вывести на экран сумму балов каждого студента.
Базу данных отсортировать по номеру зачетки и году рождения.
Каждую базу данных отсортировать по двум указанным полям. В каждой базе данных должно быть минимум 10 записей.
Примечание. В полях базы данных должны быть выполнены такие условия:
* – Поле задается списком возможных данных.
** – Ввести ограничение на значения вводимых данных.
*** – Поле логического типа.
**** – Возможные значения ввести в отдельный массив.

но нужно только задание 3 ,и сортировку по возможности!!!
0
КонецСвета
Почетный модератор
7932 / 3903 / 2464
Регистрация: 30.10.2011
Сообщений: 5,379
07.03.2012, 00:50 4
навскидку вот Задание 3, извини, проверять нет сил...
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  uses crt;
 const  line='-----------------------------------------------------------------------------';
        sha1='|  Номер  |    Фамилия, Имя, Отчество      |   Баллы на экзаменах  |   Год  |';
        sha2='| зачетки |                                |  1  |  2  |  3  |  4  |рождения|';
        gruppa:array [1..4] of string=('UFO','FFSN','SIP','DSW');
        nmin=10; nmax=20;
 
 type student=record
      noz:  string[10];
      fio:  string[30];
      gru:  byte;
      year: integer;
      oc: array [1..4] of byte;
      end;
 
 var a: array [1..nmax] of student;
     kgr: array [1..4] of integer;
     srb: array [1..4,1..4] of real;
     aa: student;
     i,j,k,r,n: integer;
     sr: real;
 
begin
for i:=1 to 4 do
    for j:=1 to 4 do
        srb[i,j]:=0;
repeat
write('Количество студентов, не менее ',nmin,', не более ',nmax,', n=');
readln(n);
until n in [nmin..nmax];
writeln('Внесите данные о студентах');
for i:=1 to n do
    with a[i] do
    begin
    write('Номер зачетки: ');readln(noz);
    write('ФИО: ');readln(fio);
    writeln('Укажите номер, под которым указана группа студента: ');
    for j:=1 to 4 do
        write(j,'-',gruppa[j],' ');
    writeln;
    repeat
    readln(gru);
    until gru in [1..4];
    inc(kgr[gru]);
    writeln('Год рождения: ');
    repeat
    readln(year);
    until year in [1950..2012];
    writeln('Введите 4 отметки за экзамены в строку: ');
    for j:=1 to 4 do
        begin
        read(oc[j]);
        srb[gru,j]:=srb[gru,j]+oc[j];
        end;
    end;
writeln('Количество студентов в группах');
for i:=1 to 4 do
    writeln(gruppa[i],' - ',kgr[i],' человек(а)');
writeln('Средние баллы по группам и по экзаменам');
write(' ':8);
for j:=1 to 4 do
    write(j,' экзамен');
for i:=1 to 4 do
    begin
    write(gruppa[i]:5);
    for j:=1 to 4 do
        begin
        srb[i,j]:=srb[i,j]/kgr[i];
        write(srb[i,j]:10:1);
        end;
    writeln;
    end;
writeln('Сортировка по зачетке');
j:=0;
while j<=n do
      begin
      for i:=1 to n-1 do
         if a[i].noz[1]>a[i+1].noz[1] then
            begin
            aa:=a[i];
            a[i]:=a[i+1];
            a[i+1]:=aa;
            end;
        inc(j);
        end;
writeln(line);
writeln(sha1);
writeln(sha2);
writeln(line);
for i:=1 to n do
    with a[i] do
         begin
         writeln(fio:30);    {ну и так далее по списку...}
         end;
writeln('Сортировка по году рождения');
j:=0;
while j<=n do
      begin
      for i:=1 to n-1 do
         if a[i].year>a[i+1].year then
            begin
            aa:=a[i];
            a[i]:=a[i+1];
            a[i+1]:=aa;
            end;
        inc(j);
        end;
writeln(line);
writeln(sha1);
writeln(sha2);
writeln(line);
for i:=1 to n do
    with a[i] do
         begin
         writeln(fio:30);    {ну и так далее по списку...}
         end;
end.
вывод данных в таблицу сам сделаешь? я все...
1
Santi111
6 / 5 / 4
Регистрация: 06.03.2012
Сообщений: 61
07.03.2012, 01:16  [ТС] 5
Спасибо большое а то все сделал а это никак!!!
0
Santi111
6 / 5 / 4
Регистрация: 06.03.2012
Сообщений: 61
13.03.2012, 22:41  [ТС] 6
Цитата Сообщение от КонецСвета Посмотреть сообщение
inc(kgr[gru]);
а что такое kgr
0
КонецСвета
Почетный модератор
7932 / 3903 / 2464
Регистрация: 30.10.2011
Сообщений: 5,379
13.03.2012, 22:53 7
kgr - счетчик для групп, а точнее, для количества студентов в каждой из них. это массив, элементы которого я буду увеличивать на 1, как только встречу студента из соответствующей группы
с помощью процедуры inc(kgr[gru]) я и провожу такое увеличение.
например, при вводе данных пользователь выбрал группу UFO
эта группа у меня проходит под индексом 1, следовательно, я увеличиваю на 1 первый элемент массива kgr, то есть количество студентов в группе под названием UFO
1
Santi111
6 / 5 / 4
Регистрация: 06.03.2012
Сообщений: 61
13.03.2012, 22:59  [ТС] 8
А не можешь проверить программу а то он выдает ошибку не пойму в чем дело!
0
КонецСвета
Почетный модератор
7932 / 3903 / 2464
Регистрация: 30.10.2011
Сообщений: 5,379
13.03.2012, 23:07 9
как-то так, только помни, что вывод в таблицу я не оформляю... это самое простое, справишься?

Не по теме:

(а так у меня со сна накладка вышла - ну никак год рождения в тип byte лезть не хотел =))


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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  uses crt;
 const  line='-----------------------------------------------------------------------------';
        sha1='|  Номер  |    Фамилия, Имя, Отчество      |   Баллы на экзаменах  |   Год  |';
        sha2='| зачетки |                                |  1  |  2  |  3  |  4  |рождения|';
        gruppa:array [1..4] of string=('UFO','FFSN','SIP','DSW');
        nmin=3; nmax=20;
 
 type student=record
      noz:  string[10];
      fio:  string[30];
      gru:  byte;
      year: integer;
      oc: array [1..4] of byte;
      end;
 
 var a: array [1..nmax] of student;
     kgr: array [1..4] of integer;
     srb: array [1..4,1..4] of real;
     aa: student;
     i,j,k,r,n: integer;
     sr: real;
 
begin
for i:=1 to 4 do
    for j:=1 to 4 do
        srb[i,j]:=0;
repeat
write('Количество студентов, не менее ',nmin,', не более ',nmax,', n=');
readln(n);
until n in [nmin..nmax];
writeln('Внесите данные о студентах');
for i:=1 to n do
    with a[i] do
    begin
    write('Номер зачетки: ');readln(noz);
    write('ФИО: ');readln(fio);
    writeln('Укажите номер, под которым указана группа студента: ');
    for j:=1 to 4 do
        write(j,'-',gruppa[j],' ');
    writeln;
    repeat
    readln(gru);
    until gru in [1..4];
    inc(kgr[gru]);
    writeln('Год рождения: ');
    repeat
    readln(year);
    until (year>1950) and (year<2012);
    writeln('Введите 4 отметки за экзамены в строку: ');
    for j:=1 to 4 do
        begin
        read(oc[j]);
        srb[gru,j]:=srb[gru,j]+oc[j];
        end;
    end;
writeln('Количество студентов в группах');
for i:=1 to 4 do
    writeln(gruppa[i],' - ',kgr[i],' человек(а)');
writeln('Средние баллы по группам и по экзаменам');
write(' ':8);
for j:=1 to 4 do
    write(j,' экзамен ');
writeln;
for i:=1 to 4 do
    begin
    write(gruppa[i]:5);
    for j:=1 to 4 do
        begin
        if kgr[i]>0 then srb[i,j]:=srb[i,j]/kgr[i];
        write(srb[i,j]:10:1);
        end;
    writeln;
    end;
writeln('Сортировка по зачетке');
j:=0;
while j<=n do
      begin
      for i:=1 to n-1 do
         if a[i].noz[1]>a[i+1].noz[1] then
            begin
            aa:=a[i];
            a[i]:=a[i+1];
            a[i+1]:=aa;
            end;
        inc(j);
        end;
writeln(line);
writeln(sha1);
writeln(sha2);
writeln(line);
for i:=1 to n do
    with a[i] do
         begin
         writeln(fio:30);    {ну и так далее по списку...}
         end;
writeln('Сортировка по году рождения');
j:=0;
while j<=n do
      begin
      for i:=1 to n-1 do
         if a[i].year>a[i+1].year then
            begin
            aa:=a[i];
            a[i]:=a[i+1];
            a[i+1]:=aa;
            end;
        inc(j);
        end;
writeln(line);
writeln(sha1);
writeln(sha2);
writeln(line);
for i:=1 to n do
    with a[i] do
         begin
         writeln(fio:30);    {ну и так далее по списку...}
         end;
end.
0
13.03.2012, 23:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2012, 23:07

Вывести студентов которые имеют средний бал, который больше 85
Подскажите пожалуйста почему в данном программном коде в выделенной...

Подсчитать средний бал за 4 экзамена
Помогите ИСПРАВИТЬ программу. надо посчитать средний бал за 4 экзамена. (с...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru