Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nansy17
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
#1

Создание структуры Список студентов - C++

10.11.2013, 20:28. Просмотров 1138. Ответов 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
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
FILE *fl;
typedef struct
{
char fio[30];
unsigned char matem;
unsigned char oaip;
} TStudent;
TStudent stud[30];
char name[20]; // Имя файла
int nst = 0; // Число введенных структур
int Menu(); // Создание меню
void Nnf(); // Ввод имени файла
void Newf(); // Создание нового файла
void Spisok(); // Формирование файла
void Opf(); // Открытие файла
void Resc(); // Вывод результата на экран
void Resf();
int main()
{
while (true)
{
switch (Menu())
{
case 1: Nnf(); break;
case 2: Newf(); break;
case 3: Spisok(); break;
case 4: Opf(); break;
case 5: Resc(); break;
case 6: Resf(); break;
case 7: return 0;
default: puts("Viberite pravilno!");
}
puts ("Press any key to continue");
getch (); // Ожидание нажатия любой клавиши
system ("cls"); // Очистка экрана
}
}
 
int Menu() // Меню
{
cout << "VIBERITE:" << endl;
cout << "1. Vvod file name" << endl;
cout << "2. New file" << endl;
cout << "3. Vvesti spisok" << endl;
cout << "4. Open file" << endl;
cout << "5. Vivesti result" << endl;
cout << "6. Vivesti v fail" << endl;
cout << "7. Exit" << endl;
int i;
cin >> i; // Ввод выбранного пункта меню
return i;
}
void Nnf() // Ввод имени файла
{
cout << "Vvedite file name" << endl;
cin >> name;
}
void Newf() // Создание нового файла
{
    if ((fl = fopen(name,"wb")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
cout << "OK" << endl;
fclose(fl);
}
void Spisok() // Ввод данных в файла
{
if ((fl = fopen(name,"rb+")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
cout << "Vvedite chislo studentov" << endl;
cin >> nst;
for (int i=0; i<nst; i++)
{
cout << "Vvedite imya: ";
cin >> stud[i].fio;
cout << "Vvedite otcenku po matematike: ";
cin >> stud[i].matem;
cout << "Vvedite otcenku po OAiP: ";
cin >> stud[i].oaip;
fwrite (&stud[i], sizeof(TStudent), 1, fl);
}
fclose (fl);
}
void Opf() // Открытие бинарного файла
{
if ((fl = fopen (name,"rb")) == NULL)
{
cout << "Oshibka pri otkritii" << endl;
exit(1);
}
nst = 0;
TStudent std;
while (true)
{
    int nwrt = fread (&std, sizeof(TStudent), 1, fl);
if (nwrt != 1) break;
stud[nst] = std;
cout << stud[nst].fio << " " << stud[nst].matem << " "
<< stud[nst].oaip << endl;
nst++;
}
fclose(fl);
}
void Resc() // Вывод результата на экран
{
for (int i=0; i<nst; i++)
if (stud[i].oaip == '9')
cout << stud[i].fio << endl;
}
void Resf() // Вывод результата в текстовый файл
{
char namet[30];
FILE *ft;
cout << "Vvedite imya faila" << endl;
cin >> namet;
if ((ft = fopen (namet,"w")) == NULL)
{
cout << "Oshibka pri sozdanii" << endl;
exit(1);
}
char s[80];
for (int i=0; i<nst; i++)
if (stud[i].oaip == '9')
{
strcpy (s, stud[i].fio);
strcat (s, "\n"); // Добавление разделителя строк
fputs (s, ft);
}
fclose(ft);
}
Почему при нажатии 2 или 3 я ничего не могу сделать. Может предварительно создается какой-то текстовый файл, который подгружается программой? Не могу понять, что сделать надо.

Добавлено через 2 минуты
Мое задание звучит так:
Составить программу формирования файла, содержащего Ведомость студентов, сдававших сессию, содержит ФИО и оценки по четырем предметам. Вывести список студентов, сдавших сессию со средним
баллом больше 7.В программе предусмотреть сохранение вводимых данных в файле и возможность чтения из ранее сохраненного файла. Вывести результаты на экран и в текстовой файл.

Добавлено через 29 минут
HELP!!!

Добавлено через 32 минуты
Ну помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание структуры Список студентов (C++):

Список студентов (структуры) - C++
Вводится список студентов (Ф.И.О., номер группы, оценка). Найти номер группы, в которой у всех студентов вместе наибольший средний балл.

Структуры: Вывести список из 10 студентов с наибольшим количеством пропусков - C++
В ведомости хранится информация о пропусках студентов: Ф.И.О., факультет, группа, кол-во пропусков. Вывести список из 10 студентов с...

Структуры: На основе данных входного файла составить список студентов - C++
На основе данных входного файла составить список студентов, включив следующие данные: ФИО,год рождения,домашний адрес,какую школу окончил....

Структуры: на основе данных входного файла составить список студентов группы - C++
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую школу...

Структуры. Составить список студентов в произвольной последовательности, а вывести на экран по группам - C++
Здравствуйте. У меня есть одно задание, помогите решить. Нужно составить список студентов в произвольной последовательности, а вывести на...

Вывести в новый файл список студентов, удалив из него студентов окончивших школу в текущем году - C++
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.11.2013, 21:16 #2
Цитата Сообщение от Nansy17 Посмотреть сообщение
Почему при нажатии 2 или 3 я ничего не могу сделать.
Сначала нажать 1 и ввести имя создаваемого файла.
Nansy17
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
10.11.2013, 22:04  [ТС] #3
С этим вопросом разобралась, необходимо было подключить ещё 1 библиотеку #include <io.h>.
Остяется вопрос, какую часть кода заменить на код с
Цитата Сообщение от Nansy17 Посмотреть сообщение
Вывести список студентов, сдавших сессию со средним
баллом больше 7
И как прописать код к этому условию.
Nansy17
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
11.11.2013, 22:28  [ТС] #4
Цитата Сообщение от Nansy17 Посмотреть сообщение
Вывести список студентов, сдавших сессию со средним
баллом больше 7
Помогите!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2013, 22:28
Привет! Вот еще темы с ответами:

Вывести в новый файл список студентов, удалив из него студентов окончивших школу в текущем году. - C++
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую школу...

Программа выводит неверный ответ (дан массив структур, содержащий сведения об успеваемости студентов - вывести список неуспевающих студентов) - C++
Задача: Дан массив структур, содержащий сведения об успеваемости по информатике группы из 25 студентов. Структура содержит следующие...

Упорядочить список студентов по среднему баллу и вывести весь список - C++
форумчане,выдает ошибку :( столько маюсь с задачей уже #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #pragma hdrstop /*Упорядочить список...

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов - C++
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный список студентов. Помогите пожалуйста,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.11.2013, 22:28
Ответ Создать тему
Опции темы

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