Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855

Создать запись Спортсмен: ФИО, Вид_спорта, факультет, специальность

26.10.2012, 07:42. Показов 1934. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

В общем, есть задание:
1. Создать запись Спортсмен: ФИО, Вид_спорта, факультет, специальность – строки, возраст(количество полных лет) – целое число. Написать программу, реализующую следующее меню:
• добавить элемент в файл
• удалить элемент из файла
• принадлежность элемента файлу
• вывод всех записей на экран
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <string>
#include <fstream>
 
using namespace std;
 
struct sport // Ñîçäàþ ñòðóêòóðó
{
 string fio;
 string vid;
 string fak;
 string spc;
 int lvl;
};
 
void ChangeNumber(sport * obj, int n) //
{
    int number;
    cout<<"Ââåäèòå íîìåð äëÿ èçìåíåíèÿ: ";
    cin>>number;
    cin.get();
    cout << "Ââåäèòå íîâûå äàííûå Ô.È.Î.: ";
    getline(cin, obj[number].fio);
    cout<<"Ââåäèòå íîâûå äàííûå î ñïîðòå: ";
    getline(cin, obj[number].vid);
    cout<<"Ââåäèòå íîâûå äàííûå î ôàêóëüòåòå: ";
    getline(cin, obj[number].fak);
    cout<<"Ââåäèòå íîâûå äàííûå î ñïåöèàëüíîñòè: ";
    getline(cin, obj[number].spc);
    cout<<"Ââåäèòå íîâûå äàííûå î âîçðàñòå: ";
    cin >> obj[number].lvl;
    cout << endl;
}
 
int main () // Òåëî ïðîãðàììû
{
    system("chcp 1251"); // Êîäèðîâêà ïðè âûâîäå/ââîäå
    
    ofstream outfile("Student.db");  // Ñîçäàþ ôàéë
    ifstream infile;
    infile.open("Student.db"); // Îòêðûâàþ äëÿ ÷òåíèÿ/çàïèñè
    
    int i; // Ïåðåìåííàÿ äëÿ öèêëîâ/èíäåêñàöèè
    char variant; // Ïåðåìåííàÿ äëÿ âûáîðà
    int n; // Ïåðåìåííàÿ äëÿ óêàçàíèÿ êîë-âà
    char bel = ' '; // Ïðîáåëüíàÿ ïåðåìåííàÿ
    sport* mas_struct=new sport[n]; // Ìàññèâ äëÿ çàïèñè äàííûõ
    
    cout << "Êîë-âî ñòóäåíòîâ: ";
    cin >> n;
 
    for (i=0; i < n; i++) // Öèêë ââîäà äàííûõ
    {
        cin.get();
        cout << "Ââåäèòå äàííûå Ô.È.Î.: ";
        getline(cin, mas_struct[i].fio);
        cout << "Ââåäèòå äàííûå î ñïîðòå: ";
        getline(cin, mas_struct[i].vid);
        cout << "Ââåäèòå äàííûå î ôàêóëüòåòå: ";
        getline(cin, mas_struct[i].fak);
        cout << "Ââåäèòå äàííûå î ñïåöèàëüíîñòè: ";
        getline(cin, mas_struct[i].spc);
        cout << "Ââåäèòå äàííûå î âîçðàñòå: ";
        cin >> mas_struct[i].lvl;
        cout << endl;
    }
 
    for (i = 0; i < n; i++) // Öèêë âûâîäà äàííûõ
    {
        cout << "Ïðèíÿòûå äàííûå:" << endl;
        cout << "Ô.È.Î.: " << mas_struct[i].fio << endl;
        cout << "Ñïîðò: " << mas_struct[i].vid << endl;
        cout << "Ôàêóëüòåò: " << mas_struct[i].fak << endl;
        cout << "Ñïåöèàëüíîñòü: " << mas_struct[i].spc << endl;
        cout << "Âîçðàñò: " << mas_struct[i].lvl << endl;
        cout << endl;
    }
    
    cout << "Íóæíî ëè èçìåíèòü äàííûå? <Ä/Í> ";
    cin >> variant;
    cout << endl;
    
    switch (variant) // Âûáîð âàðèàíòà äàëüíåéøèõ äåéñòâèé
    {
           case 'Ä': ChangeNumber(mas_struct,n); break;
           for (i = 0; i < n; i++)
           {
               cout << "Ô.È.Î.: " << mas_struct[i].fio << endl;
               cout << "Ñïîðò: " << mas_struct[i].vid << endl;
               cout << "Ôàêóëüòåò: " << mas_struct[i].fak << endl;
               cout << "Ñïåöèàëüíîñòü: " << mas_struct[i].spc << endl;
               cout << "Âîçðàñò: " << mas_struct[i].lvl << endl;
               cout << endl;
               outfile << i << bel << mas_struct[i].fio << bel << mas_struct[i].vid << bel << mas_struct[i].fak << bel << mas_struct[i].spc << bel << mas_struct[i].lvl << endl;
           }
           case 'Í': break;
           default: cout << "Íå âåðíàÿ áóêâà!"; cout << endl;
    }       
    
    
    for (i = 0; i < n; i++) // Öèêë âíîñÿùèé äàííûå â ôàéë
    {
        outfile << i << bel << mas_struct[i].fio << bel << mas_struct[i].vid << bel << mas_struct[i].fak << bel << mas_struct[i].spc << bel << mas_struct[i].lvl << endl;
    }
    
    system("pause");
    return 0;
}
Как можно упростить и дописать код?

Добавлено через 15 часов 8 минут
Вот что получилось, но не работает как надо.... почему?
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
142
143
144
#include <iostream>
#include <string>
#include <fstream>
 
using namespace std;
 
struct sport // Ñîçäàþ ñòðóêòóðó
{
 string fio;
 string vid;
 string fak;
 string spc;
 int lvl;
};
void ChangeNumber(sport * obj, int n) //Ôóíêöèÿ èçìåíåíèÿ ýëåìåíòà
{
    int number;
    cout<<"Ââåäèòå íîìåð äëÿ èçìåíåíèÿ: ";
    cin>>number;
    cin.get();
    cout << "Ââåäèòå íîâûå äàííûå Ô.È.Î.: ";
    getline(cin, obj[number].fio);
    cout<<"Ââåäèòå íîâûå äàííûå î ñïîðòå: ";
    getline(cin, obj[number].vid);
    cout<<"Ââåäèòå íîâûå äàííûå î ôàêóëüòåòå: ";
    getline(cin, obj[number].fak);
    cout<<"Ââåäèòå íîâûå äàííûå î ñïåöèàëüíîñòè: ";
    getline(cin, obj[number].spc);
    cout<<"Ââåäèòå íîâûå äàííûå î âîçðàñòå: ";
    cin >> obj[number].lvl;
    cout << endl;
}
void word(sport * obj, int n)
{
     for (int i=0; i < n; i++) // Öèêë ââîäà äàííûõ
     {
        cin.get();
        cout << "Ââåäèòå äàííûå Ô.È.Î.: ";
        getline(cin, obj[i].fio);
        cout << "Ââåäèòå äàííûå î ñïîðòå: ";
        getline(cin, obj[i].vid);
        cout << "Ââåäèòå äàííûå î ôàêóëüòåòå: ";
        getline(cin, obj[i].fak);
        cout << "Ââåäèòå äàííûå î ñïåöèàëüíîñòè: ";
        getline(cin, obj[i].spc);
        cout << "Ââåäèòå äàííûå î âîçðàñòå: ";
        cin >> obj[i].lvl;
        cout << endl;
     } 
}
void ChangeString(sport * obj, int n) // Ôóíêöèÿ âûâîäà äàííûõ
{
     for (int i = 0; i < n; i++)
     {
        cout << "Ô.È.Î.: " << obj[i].fio << endl;
        cout << "Ñïîðò: " << obj[i].vid << endl;
        cout << "Ôàêóëüòåò: " << obj[i].fak << endl;
        cout << "Ñïåöèàëüíîñòü: " << obj[i].spc << endl;
        cout << "Âîçðàñò: " << obj[i].lvl << endl;
        cout << endl;
     }    
}
 
int main () // Òåëî ïðîãðàììû
{
    system("chcp 1251"); // Êîäèðîâêà ïðè âûâîäå/ââîäå
    
    ofstream outfile("Student.db");  // Ñîçäàþ ôàéë
    ifstream infile;
    infile.open("Student.db"); // Îòêðûâàþ äëÿ ÷òåíèÿ/çàïèñè
    
    int i; // Ïåðåìåííàÿ äëÿ öèêëîâ/èíäåêñàöèè
    char buf[1];
    char variant; // Ïåðåìåííàÿ äëÿ âûáîðà
    int n; // Ïåðåìåííàÿ äëÿ óêàçàíèÿ êîë-âà
    char bel = ' '; // Ïðîáåëüíàÿ ïåðåìåííàÿ
    sport* mas_struct=new sport[n]; // Ìàññèâ äëÿ çàïèñè äàííûõ
    
    cout << "Êîë-âî ñòóäåíòîâ: ";
    cin >> n;
 
    word(mas_struct,n);
 
    cout << "Ïðèíÿòûå äàííûå:" << endl;
    ChangeString(mas_struct,n);
    
    cout << "Íóæíî ëè èçìåíèòü äàííûå? <Ä/Í> ";
    cin >> variant;
    cout << endl;
    
    switch (variant) // Âûáîð âàðèàíòà äàëüíåéøèõ äåéñòâèé
    {
           case 'Ä': ChangeNumber(mas_struct,n);
                     cout << "Ïðèíÿòûå äàííûå:" << endl;
                     ChangeString(mas_struct,n); break;
           case 'ä': ChangeNumber(mas_struct,n);
                     cout << "Ïðèíÿòûå äàííûå:" << endl;
                     ChangeString(mas_struct,n); break;
           case 'Í': break;
           case 'í': break;
           default: cout << "Íå âåðíàÿ áóêâà!";
    }       
    
    for (i = 0; i < n; i++) // Öèêë âíîñÿùèé äàííûå â ôàéë
    {
        outfile << i << bel << mas_struct[i].fio << bel << mas_struct[i].vid << bel << mas_struct[i].fak << bel << mas_struct[i].spc << bel << mas_struct[i].lvl << endl;
    }
    
  if(!infile)
  {
    cerr << "Îøèáêà ÷òåíèÿ" << endl;
    return (EXIT_FAILURE);
  }
  
  cout <<"Ââåäèòå ñòðîêó : ";
  int i_number_line_delete = 0;
  cin >> i_number_line_delete;
 
  int i_number_line_now = 0;
  string line;
  string line_file_text;
 
 while(getline(infile,line))
 {
   i_number_line_now++;
 
   if(!(i_number_line_now == i_number_line_delete))
   {
       line_file_text.insert(line_file_text.size(),line);
       line_file_text.insert(line_file_text.size(),"\r\n");
   
   }
 }
 
 infile.close();
 
 outfile.open ("Student.db",ios::trunc | ios::binary);
 
 outfile.write(line_file_text.c_str(), line_file_text.size());
 outfile.close();
    
  system("pause");
  return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2012, 07:42
Ответы с готовыми решениями:

Создать стек записи Спортсмен на основе статического массива типа запись
Добрый вечер! Помогите пожалуйста решить задачку: Создать стек записи Спортсмен на основе статического массива типа запись....

Составить базу данных о студентах вуза, предусмотрев поля: ФИО, курс, специальность, экзаменационные оценки за семестр
составить базу данных о студентах вуза, предусмотрев поля: ФИО, курс, специальность, экзаменационные оценки за семестр. Составить программу...

Создать комбинированный тип (запись) для заполнения анкеты сотрудника кафедры, включающей в себя, ФИО, год рождения, пол
Создать комбинированный тип (запись) для заполнения анкеты сотрудника кафедры, включающей в себя, ФИО, год рождения, пол, должность, ученое...

3
 Аватар для Mogost
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
26.10.2012, 08:31
C++
1
2
3
int n; // Переменная для указания кол-ва
...
sport* mas_struct=new sport[n]; // Массив для записи данных
Нет инициализации переменной.
1
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
26.10.2012, 08:42  [ТС]
А какой именно переменной?
C++
1
2
3
int n; // Переменная для указания кол-ва
...
sport* mas_struct=new sport[n]; // Массив для записи данных
все вроде есть и программа не выдает ошибок.
0
 Аватар для Mogost
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
26.10.2012, 08:44
И не выдаст. Переменная есть, но какое значение в ней хранится? Компилятор предупреждение выдаст только.


1>\main.cpp(73) : warning C4101: buf: неиспользованная локальная переменная
1>\main.cpp(77) : warning C4700: использована неинициализированная локальная переменная "n"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.10.2012, 08:44
Помогаю со студенческими работами здесь

Дан массив студентов ВУЗа: ФИО, возраст, регион, факультет. Вывести на экран результирующую таблицу: регион, количество студентов из этого региона
&quot;Дан массив студентов некоторого ВУЗа: ФИО, возраст, регион, факультет. Вывести на экран результирующую таблицу: регион, количество...

Сформировать запись Спортсмен
Сформировать запись, имеющую следующую структуру type спортсмен=record фамилия:string; страна:string; рост:150..220; ...

Создать класс “Специальность ”, состоящей из класса ” Группа”
Создать класс “Специальность ”, состоящей из класса ” Группа”. Класс “Специальность”: название специальности, количество групп. Класс...

Начав тренировки, спортсмен в первый день пробежал 10 км. Какой суммарный путь пробежит спортсмен за 7 дней?
Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru