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

Класс Студент - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Простые числа. Список простых чисел http://www.cyberforum.ru/cpp-beginners/thread847097.html
Доброго времени суток. Мне нужно получить список первых 1.000.000.0 простых чисел. (10^7 первых) Нужен дамб этих чисел в текстовом файле (через пробел). Для того, чтобы сделать читерский прекалк и вшить их в устройство. Я пытался найти в гугле такой большой список, но тщетно. Может кто-то умеет быстро их посчитать и записать в файл ? Или уже имеется этот список ? Обещаю много лайков.
C++ Динамические структуры данных. Составить программу, которая содержит текущую информацию о книгах в библиотеке не могу решить Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат: • номер УДК; • фамилию и инициалы автора; • название; • год издания; а количество экземпляров данной книги в библиотеке. Программа должна обеспечивать: http://www.cyberforum.ru/cpp-beginners/thread847093.html
Функции библиотеки для работы со строками и символами C++
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 700 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая: • выводит текст на экран дисплея; • по нажатию произвольной клавиши поочередно выделяет в тексте заданные слова, которые нужно поменять местами (заданные слова...
C++ Функции библиотеки для работы со строками и символами
Помогите с решением С помощью текстового редактора создать файл, содержащий текст, длина которого пе превышает 1000 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая: • выводит текст на экран дисплея; • по нажатию произвольной клавиши поочередно выделяет каждое из слов текста, у которых первый и последний...
C++ Структуры: хранение данных о планшетных сканерах http://www.cyberforum.ru/cpp-beginners/thread847085.html
Помогите, не могу решить Для хранения данных о планшетных сканерах описать структуру вида: struct scan_info{ char model; // наименование модели int price: // цена double x_s1ze: // горизонтальный размер области сканирования double y__s1ze: // вертикальный размер области сканирования 1nt optr: // оптическое разрешение int grey: // число градаций серого
C++ Не пойму тайный смысл фразы Страуструпа Читаю Страуструпа про компоновку и нашел там такое предложение: Причина, по которой в заголовочные файлы рекомендуется включать определения простых констант, а определения агрегатов включать не рекомендуется, заключается в том, что реализациям трудно избежать репликации агрегатов в нескольких единицах трансляции. Можете, пожалуйста, объяснить на простом языке, что такое репликация и агрегат,... подробнее

Показать сообщение отдельно
cyberbrain1000
 Аватар для cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
28.04.2013, 11:49     Класс Студент
добавил ввод и вывод
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
#include <iostream>
#include <cstdlib>
#include <string>
#include <stdexcept>
#include <vector>
#include <fstream>
using namespace std;
 
//базовый класс "студент"
class CStudent
{
protected:
    char m_Fio[30];//ФИО
    int m_Year;//год поступления
    int m_Course;//курс
    int m_Number;//номер
    double m_Stipendia;//стипендия
    double m_Ocenki;//оценки
    std::ostream& CommonWriteTextStream(std::ofstream&, std::string const&, char) const; // Запись в текстовый поток полей CStudent
    template<typename T>
    void ShiftConsoleField(std::string const&, T& field); // Ввод поля с консоли с проверкой ошибок
    virtual std::ifstream& ReadExtendedFields(std::ifstream& ifst, CStudent* const){return ifst;};
public:
    virtual void WriteConsole()const; //вывод описания студента в консоль
    virtual void ReadConsole(); // Чтение студента с консоли
    virtual void WriteTextStream(std::string const&) const; // Вывод студента в файл
    std::ifstream& ReadTextStream(std::ifstream&, CStudent* const);// Ввод студента из файла
};
 
typedef std::vector<CStudent*> psvector;
 
void CStudent::ReadConsole()
{
   ShiftConsoleField("\nGod postuplenija:", m_Year);
   cout << "\nFIO:"; cin.get();
    cin.getline(m_Fio, sizeof(m_Fio));
   ShiftConsoleField("\nKurs:", m_Course);
   ShiftConsoleField("\nNomer grupy:", m_Number);
   ShiftConsoleField("\nStipendija:", m_Stipendia);
   ShiftConsoleField("\nOcenki:", m_Ocenki);
}
 
void CStudent:: WriteConsole()const
{
      cout << "\nStudent:";
      cout << "\nFIO:"<< m_Fio;
      cout << "\nGod postuplenija:" << m_Year;
      cout << "\nKurs:" << m_Course;
      cout << "\nNomer grupy:" << m_Number;
      cout << "\nStipendija:" << m_Stipendia;
      cout << "\nOcenki:" << m_Ocenki;
}
 
void CStudent::WriteTextStream(std::string const& textfilepath) const
{
    std::ofstream ofst;
    CommonWriteTextStream(ofst, textfilepath, 'c');
    ofst << "\n";
    ofst.clear();
    ofst.close();
}
 
std::ostream& CStudent::CommonWriteTextStream(std::ofstream& ofst, std::string const& textfilepath, char type = 'c') const
{
    ofst.open(textfilepath.c_str(), std::ios::app);
    if(!ofst.is_open())
        throw std::runtime_error("CommonWriteTextStream: unable to open output file\n");
    return ofst << type << '\n' << m_Fio<< '\n' << m_Year << '\n' << m_Course << '\n'
        << m_Number << '\n' << m_Stipendia << '\n' << m_Ocenki << '\n';
}
 
std::ifstream& CStudent::ReadTextStream(std::ifstream& ifst, CStudent* const pstudent)
{
    ifst.ignore(100, '\n');
    ifst.getline(pstudent->m_Fio, sizeof(pstudent->m_Fio));
    ifst >> pstudent->m_Year;
    ifst >> pstudent->m_Course;
    ifst >> pstudent->m_Number;
    ifst >> pstudent->m_Stipendia;
    ifst >> pstudent->m_Ocenki;
    ReadExtendedFields(ifst, pstudent);
    if(!ifst)
        throw std::runtime_error("CommonReadTextStream: error reading file\n");
    return ifst;
}
 
template<typename T>
void CStudent::ShiftConsoleField(std::string const& message, T& field)
{
    do
    {
        std::cout << message << '\n';
        std::cin.clear();
        std::cin.sync();
        std::cin >> field;
    }
    while(!std::cin);
}
 
//производный класс "студент-общественник"
class CObshestvennik : public  CStudent
{
     protected:
       char m_Work[40]; //выполняемая работа
       double m_Procent; //процент надбавки к стипендии
       virtual std::ifstream& ReadExtendedFields(std::ifstream&, CStudent* const);
     public:
        virtual void ReadConsole();
        virtual void WriteConsole() const; //вывод описания студента
        virtual void WriteTextStream(std::string const&) const; // Вывод студента в файл
};
 
void CObshestvennik::ReadConsole()
{
    CStudent::ReadConsole();
    cout << "\nVjypolnjaemaja rabota*: ";
    std::cin.clear();
    std::cin.sync();
    std::cin.getline(m_Work, sizeof(m_Work));
    ShiftConsoleField("\nProcent k nadbawki k stependii: ", m_Procent);
}
 
void CObshestvennik::WriteConsole() const
{
    CStudent::WriteConsole();
    cout << "\nVjypolnjaemaja rabota*: " << m_Work << " ";
    cout << "\nProcent k nadbawki k stependii: " << m_Procent << "\n";
}
 
void CObshestvennik::WriteTextStream(std::string const& textfilepath) const
{
    std::ofstream ofst;
    CommonWriteTextStream(ofst, textfilepath, 'o');
    ofst << m_Work << '\n' << m_Procent << "\n\n";
    ofst.clear();
    ofst.close();
}
 
std::ifstream& CObshestvennik::ReadExtendedFields(std::ifstream& ifst, CStudent* const pstudent)
{
    CObshestvennik* const postudent = dynamic_cast<CObshestvennik*>(pstudent);
    if(postudent)
    {
        ifst.ignore(100, '\n');
        ifst.getline(postudent->m_Work, sizeof(postudent->m_Work));
        ifst >> postudent->m_Procent;
    }
    else
        throw std::runtime_error("CObshestvennik::ReadExtendedFields: !postudent");
    return ifst;
}
 
 // производный класс "студент-спортсмен"
class CSportsmen : public  CStudent
{
    protected:
      char m_Sport[40]; //спорт
      double m_Procent; //процент надбавки к стипендии
      virtual std::ifstream& ReadExtendedFields(std::ifstream&, CStudent* const);
     public:
        virtual void ReadConsole();
        virtual void WriteConsole()const;//вывод описания студента
        virtual void WriteTextStream(std::string const&) const; // Вывод студента в файл
};
 
void CSportsmen::ReadConsole()
{
    CStudent::ReadConsole();
    cout << "\nVid sporta*: ";
    std::cin.clear();
    std::cin.sync();
    std::cin.getline(m_Sport, sizeof(m_Sport));
    ShiftConsoleField("\nProcent k nadbawki k stependii: ", m_Procent);
}
 
void CSportsmen::WriteConsole()const
{
    CStudent::WriteConsole();
    cout << "\nVid sporta: "<< m_Sport << " ";
    cout << "\nProcent k nadbawki k stependii: " << m_Procent << "\n";
}
 
void CSportsmen::WriteTextStream(std::string const& textfilepath) const
{
    std::ofstream ofst;
    CommonWriteTextStream(ofst, textfilepath, 's');
    ofst << m_Sport << '\n' << m_Procent << "\n\n";
    ofst.clear();
    ofst.close();
}
 
std::ifstream& CSportsmen::ReadExtendedFields(std::ifstream& ifst, CStudent* const pstudent)
{
    CSportsmen* const psportstudent = dynamic_cast<CSportsmen*>(pstudent);
    if(psportstudent)
    {
        ifst.ignore(100, '\n');
        ifst.getline(psportstudent->m_Sport, sizeof(psportstudent->m_Sport));
        ifst >> psportstudent->m_Procent;
    }
    else
        throw std::runtime_error("CSportsmen::ReadExtendedFields: !psportstudent");
    return ifst;
}
 
// Вводит вектор студентов из файла
psvector& FillVectorFromTextStream(std::string const& inputtextfilepath, psvector& vecp)
{
    std::ifstream ifst(inputtextfilepath);
    if(!ifst.is_open())
        throw std::runtime_error("ReadTextStream: Unable to open input file\n");
    char type;
    while(ifst >> type)
    {
        switch(type)
        {
            case 'o':
                vecp.push_back(new CObshestvennik);
                vecp.back()->ReadTextStream(ifst, vecp.back());
                break;
            case 's':
                vecp.push_back(new CSportsmen);
                vecp.back()->ReadTextStream(ifst, vecp.back());
                break;
            default:
                std::string s("ReadTextStream: unknown student type: ");
                throw std::runtime_error(s + type + '\n');
        }
    }
    ifst.close();
    return vecp;
}
 
int main()
{
    try
    {
        int nMenu = 0, count = 0, i = 0;
        psvector vecp;
        cout <<"\nCount: ";
        cin >> count;
        for(i = 0; i < count; ++i)
        {
            cout<<"\nVvedite tip studenta: " << endl;
            cout<<"1-dlja obschestvenika, 2-dlja sportsmena, 3- vjyhod\n";
            cin >> nMenu;
             switch (nMenu)
             {
                case 1 :
                    vecp.push_back(new CObshestvennik());
                    vecp.back()->ReadConsole();
                    break;
                case 2 :
                    vecp.push_back(new CSportsmen());
                    vecp.back()->ReadConsole();
                    break;
                case 3:
                    exit(0);
                    break;
                default:
                    std::cout << "Incorrect choice\n";
                    --i;
             }
        }
        std::string const textfilepath("students.txt");
        // вывод описания студента в файл
        for (i = 0; i < vecp.size(); i++)
        {
            vecp[i]->WriteTextStream(textfilepath);
        }
        for(i = 0; i < vecp.size(); ++i)
        {
            delete vecp[i];
            vecp[i] = 0;
        }
        vecp.resize(0);
        FillVectorFromTextStream(textfilepath, vecp);
        for(i = 0; i < vecp.size(); ++i)
        {
            vecp[i]->WriteConsole();
        }
    }
    catch(std::exception const& exc)
    {
        std::cerr << "main: exception: " << exc.what() << "\n\n";
    }
    system("pause");
    return 0;
 }
 
Текущее время: 16:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru