4 / 167 / 0
Регистрация: 30.01.2020
Сообщений: 193
1

исправление по коду

09.06.2020, 15:59. Показов 424. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, задача следующая: нужно, чтобы входной файл не читать многократно, в программе создается таблица, содержащая фамилии, оценки и средние баллы всех студентов. При поиске в таблице информации о заданном студенте ключом
является фамилия студента. Таблица хранится в векторе, поскольку число
студентов в группе ограничено
Выберите номер пункта меню:
1 - средние баллы студентов//нужно сделать так, чтобы программа выводила студентов, средний балл которых равен 5
2 - информация о заданном студенте
3 - выход. Я тут набросал код, но нужно переделать) Спасибо
C++
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAX 30
// тип записи файла
struct STUDENT
{ char fio[15]; // фамилии и.о.
char oc[7]; // 5 оценок + '\n' + '\0'
};
// тип элемента таблицы
struct EL_TAB
{ char fio[15]; // фамилия и.о.
int oc[5]; // оценки
float srball; // средний балл
};
// прототипы функций
void PechTab (EL_TAB * tab, int n);
void Stud (EL_TAB * tab, int n);
/*----------------------------*/
/* главная функция */
/*----------------------------*/
void main()
{ FILE *f; // указатель на входной файл
STUDENT tz; // текущая запись файла
EL_TAB tab[MAX]; // таблица
int n; // длина таблицы
int i;
float s; // сумма оценок
 
fopen_s (&f, "st.txt", "r");
if (f == NULL)
{ puts ("Файл st.txt не найден");
return;
}
// создание таблицы
n = 0;
while (fgets((char *)&tz, sizeof(struct STUDENT), f) != NULL)
{ for (i=0,s=0; i<5; i++)
{ int ocenka = tz.oc[i]-'0';
tab[n].oc[i] = ocenka;
s += ocenka;
}
tz.fio[14]='\0';
strcpy_s (tab[n].fio, tz.fio);
tab[n++].srball = s/5;
}
fclose(f);
char nom; // номер пункта меню
do
{
puts ("------------------------------------------------------");
puts (" Выберите номер пункта меню:");
puts ("1 - средние баллы студентов");
puts ("2 - информация о заданном студенте");
puts ("3 - выход");
puts ("-------------------------------------------------------");
nom = getchar();
switch (nom)
{ case '1': PechTab(tab,n); break;
case '2': Stud(tab,n); break;
case '3': break;
default: puts ("\nНужно ввести номер от 1 до 3");
}
if (nom != '3')
{ puts("\nДля продолжения нажмите любую клавишу");
_getch();
}
}
while (nom != '3');
}
/*-----------------------------------------------------------------*/
/* Печать среднего балла каждого студента */
/*-----------------------------------------------------------------*/
void PechTab (EL_TAB * tab, int n)
{ int j;
puts ("\nФамилия и.о. Ср.балл");
puts ("------------------------------");
for (j=0; j<n; j++)
{
printf("%s %.1f\n", tab[j].fio, tab[j].srball);
}
}
// заглушка для функции вывода информации о студенте
void Stud (EL_TAB * tab, int n)
{
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2020, 15:59
Ответы с готовыми решениями:

Реализовать на С++ код аналогичный коду приведенному на JavaScript коду
Кто знает JavaScript подскажите, пожалуйста как лучше реализовать этот код на c++(): var image =...

Исправление
Есть вот такая программка procedure TForm1.SpeedButton1Click(Sender: TObject); var...

Исправление
Написал данную программу #include &lt;iostream&gt; using namespace std; int main() { int...

исправление БД
Помогите пожалуста, проект для курсавой работы сёдня сдавал преподаватель сказл не правильно...

1
4 / 167 / 0
Регистрация: 30.01.2020
Сообщений: 193
09.06.2020, 23:56  [ТС] 2
Итак, я вроде как уже сделал, но у меня ошибка (прикреплю картинку во вложениях ) - два раза подряд просит ввести любой символ для продолжения. А вот код по задаче:
C++
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#define MAX 30
struct STUDENT
{ char fio[15];
char oc[7];
};
// тип элемента таблицы
struct EL_TAB
{ char fio[15]; // фамилия и.о.
int oc[5]; // оценки
float srball; // средний балл
};
// прототипы функций
void PechTab (EL_TAB * tab, int n);
void OtlTab (EL_TAB * tab, int n);
void main()
{
setlocale(LC_ALL, "RUS");
FILE *f; // указатель на входной файл
STUDENT tz; // текущая запись файла
EL_TAB tab[MAX]; // таблица
int n; // длина таблицы
int i;
float s; // сумма оценок
 
fopen_s (&f, "st.txt", "r");
if (f == NULL)
{ puts ("Файл st.txt не найден");
return;
}
// создание таблицы
n = 0;
while (fgets((char *)&tz, sizeof(struct STUDENT), f) != NULL)
{ for (i=0,s=0; i<5; i++)
{ int ocenka = tz.oc[i]-'0';
tab[n].oc[i] = ocenka;
s += ocenka;
}
tz.fio[14]='\0';
strcpy_s (tab[n].fio, tz.fio);
tab[n++].srball = s/5;
}
fclose(f);
char nom;
do
{
puts ("------------------------------------------------------");
puts (" Выберите номер пункта меню:");
puts ("1 - Ф.И.О. отличников");
puts ("2 - информация о всех студентах");
puts ("3 - выход");
puts ("-------------------------------------------------------");
nom = getchar();
switch (nom)
{ case '1': PechTab(tab,n); break;
case '2': OtlTab(tab,n); break;
case '3':exit(1);;
default: puts ("\nНужно ввести номер от 1 до 3");
}
if (nom != '3')
{ puts("\nДля продолжения нажмите любую клавишу");
_getch();
}
}
while (nom != '3');
}
 
void OtlTab(EL_TAB * tab, int n)
{ int j;
puts("\nФамилия и.о. Ср.балл");
puts("------------------------------");
for (j = 0; j < n; j++)
{
if (tab[j].srball == 5)
{
printf("%s %.1f\n", tab[j].fio, tab[j].srball);
}
}
}
void PechTab(EL_TAB * tab, int n)
{ int j;
puts("\nФамилия и.о. Ср.балл");
puts("------------------------------");
for (j = 0; j < n; j++)
{
 
printf("%s %.1f\n", tab[j].fio, tab[j].srball);
 
 
}
 
}
Миниатюры
исправление по коду  
0
09.06.2020, 23:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2020, 23:56
Помогаю со студенческими работами здесь

Исправление БД
Здравствуйте! Сделала БД &quot;Зоомагазин&quot;, но вижу, что она не совсем отвечает требованиям моего...

Нужно исправление
Что здесь не так program ABC; var a, p, c: integer; begin a:=8 p:=8 read (a) read (p)...

исправление ошибок
Dim M(), K, N, max K = InputBox(&quot;K&quot;): N = InputBox(&quot;N&quot;) ReDim M(1 To K, 1 To N) For i = 1 To K...

исправление ошибки
задание:напишите программу, которая считывает строку символов, выбирает числа из этой строки и...

Исправление ошибок
Вставил флешку в компьютер, виндус обнаружил ошибку. Предлагает исправить. Стоит ли ? Пропадут...

Небольшое исправление
Собственно нужно при нажатии кнопки &quot; ' &quot; нужно вывести на экран содержимое первого окна в новом...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru