Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2021, 15:24   #1
Artur221
Пользователь
 
Регистрация: 18.03.2021
Сообщений: 26
По умолчанию Помогите доделать программу

Я написал код,который в файле записывает в первой строчке:наименование дисциплин,во второй:ФИО студента и в третьей:полученные им оценки.И теперь мне нужно предусмотреть динамическое изменение дисциплин(количество дисциплин может меняться) ,но я незнаю как это реализовать.Кто-нибудь может подсказать?

Вот код:

1. Students.h
#include <string>
using namespace std;

class Students
{
public:
// Запись данных о студенте в файл
void save();
// Деструктор класса Students
~Students();
// Конструктор класса Students
Students(string, string);
// Установка имени студента
void set_name(string);
// Получение имени студента
string get_name();
// Установка фамилии студента
void set_last_name(string);
// Получение фамилии студента
string get_last_name();
// Установка промежуточных оценок
void set_scores(int[]);
// Получение массива с промежуточными оценками
void get_scores();
// Установка предметов
void set_predmet(string[]);
// Получение массива с промежуточными оценками
void get_predmet();

private:
// Промежуточные оценки
int scores[4];
string predmet[4];
// Средний балл
// Имя
string name;
// Фамилия
string last_name;
};

2. Students.cpp
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
#include "students.h"

// Деструктор Students
Students::~Students()
{
Students::save();
}

// Запись данных о студенте в файл
void Students::save()
{
ofstream fout("students.txt", ios::app);

for (int i = 0; i < 4; ++i) {
fout << Students:redmet[i] << " ";
}

fout << endl;

fout << Students::get_name() << " "
<< Students::get_last_name() << " "
<< endl;

for (int i = 0; i < 4; ++i) {
fout << Students::scores[i] << " ";
}

fout << endl;
fout.close();
}

// Конструктор Students
Students::Students(string name, string last_name)
{
Students::set_name(name);
Students::set_last_name(last_name);
}
// Установка промежуточных оценок
void Students::set_predmet(string predmet[])
{
for (int i = 0; i < 4; ++i)
Students:redmet[i] = predmet[i];
}

// Получение массива с промежуточными оценками
void Students::get_predmet()
{
for (int i = 0; i < 4; ++i)
cout << Students:redmet[i] << " ";
}

// Установка имени студента
void Students::set_name(string student_name)
{
Students::name = student_name;
}

// Получение имени студента
string Students::get_name()
{
return Students::name;
}

// Установка фамилии студента
void Students::set_last_name(string student_last_name)
{
Students::last_name = student_last_name;
}

// Получение фамилии студента
string Students::get_last_name()
{
return Students::last_name;
}

// Установка промежуточных оценок
void Students::set_scores(int scores[])
{
for (int i = 0; i < 4; ++i)
Students::scores[i] = scores[i];
}

// Получение массива с промежуточными оценками
void Students::get_scores()
{
for (int i = 0; i < 4; ++i)
cout << Students::scores[i] << " ";
}

3. Main.cpp
#include <iostream>
#include <string>
#include "students.h"

int main(int argc, char* argv[])
{
// Локальная переменная, хранящая имя ученика
string name;
// И его фамилию
string last_name;
// Ввод имени
cout << "Name: ";
getline(cin, name);
// И фамилии
cout << "Last name: ";
getline(cin, last_name);

// Передача параметров конструктору
Students* student = new Students(name, last_name);

// Оценки
int scores[4];
string predmet[4];

// Ввод промежуточных оценок
for (int i = 0; i < 4; i++)
{
cout << "Score " << i + 1 << ": ";
cin >> scores[i];
}
// Сохраняем промежуточные оценки в объект класса Student
student->set_scores(scores);
for (int i = 0; i < 4; i++)
{
cout << "Predmet " << i + 1 << ": ";
cin >> predmet[i];
}
student->set_predmet(predmet);

// Выводим данные по студенту
student->get_predmet();
cout << endl << student->get_name() << " " << student->get_last_name() << " is " << endl;
student->get_scores();
// Удаление объекта student из памяти
delete student;
return 0;
}
Artur221 вне форума Ответить с цитированием
Старый 23.03.2021, 15:34   #2
FrosyaZZ
Форумчанин
 
Регистрация: 16.11.2020
Сообщений: 243
По умолчанию

1.
Код:
int scores[4];
string predmet[4]
Выкидываете фиксированные массивы. Заменяете на вектор, например.
2. Вычитываете строку с дисциплинами. Полностью и бьете по разделителям, или сразу по частям.
3. Заменяете фиксированные циклы до 4 - циклами до размера вектора/массива с дисциплинами.
FrosyaZZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите доделать программу Artur221 Общие вопросы C/C++ 2 23.03.2021 21:40
Помогите доделать программу V-alterman Общие вопросы по Java, Java SE, Kotlin 4 19.11.2014 17:12
помогите,пожалуйста, доделать программу alenkas Помощь студентам 25 29.10.2014 17:23
помогите доделать программу на С anshelika Общие вопросы C/C++ 0 03.01.2014 20:10