С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программа по ООП. Класс "Журнал оценок" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Инвертирование списка через рекурсию! http://www.cyberforum.ru/cpp-beginners/thread1137529.html
Народ, подскажите как реализовать инвертирование через рекурсию? Сама инверсия есть, а как вообще ее сделать через рекурсию не пойму... void invertList(TEda * &Start){ TEda *wp1, *wp2, *wp3; ...
C++ Строка двумерного массива как одномерный массив как занести строку двумерного массива в одномерный? http://www.cyberforum.ru/cpp-beginners/thread1137518.html
Алгоритм Боуера-Мура C++
Помогите написать алгоритм Боуера-Мура для последовательноти типа int double!???
C++ Заменить слово в строке
Пользователь записывает строку в динамический массив. После этого вводит слово, которое он хочет заменить в массиве и слово, на которое нужно заменить. В результате вывести на экран новую строку с...
C++ Предпраздничные скидки покупателям при покупке товаров в фирме http://www.cyberforum.ru/cpp-beginners/thread1137444.html
Решите пожалуйста буду благодарна =* Фирма, которая производит определенные товары, предлагает предпраздничные скидки покупателям при покупке товаров в фирменном магазине в зависимости от общей...
C++ Вывести пару элементов матрицы Вывести пары “элемент главной диагонали, элемент побочной диагонали”, для которых в строке, содержащей элемент главной диагонали количество нулей равно количеству нулей в столбце, содержащем элемент... подробнее

Показать сообщение отдельно
Ligeros
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 87

Программа по ООП. Класс "Журнал оценок" - C++

02.04.2014, 22:51. Просмотров 588. Ответов 1
Метки (Все метки)

Здравствуйте, имеется код программы на C++ с классами, который позволяет пользователю вводить данные в журнал (Фамилия оценка) после чего отсеивает фамилии с оценкой 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
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
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
using namespace std;
 
//Стуктура динамического однонаправленного списка
struct node{
    string name;
    int rate;
    node *next;
};
class journal{
private:
    
public:
    node *head;
    journal(){
        head = NULL;        
    }
    //Добавление записи в журнал
    void add(string name, int rate){
        node *_new = new node;
        _new->name = name;
        _new->rate = rate;
        _new->next = head;
        head = _new;
    }
 
    //Добавление массива записей в журнал
    void add(int n,string names[], int rates[]){
        for (int i = 0; i < n; i++)add(names[i], rates[i]);
    }
 
    //Вывод
    void show(){
        cout << "Журнал:" << endl;
        node *cur = head;
        while (cur != NULL){
            cout << "Имя: " << cur->name << "  Оценка: " << cur->rate << endl;
            cur = cur->next;
        }
    }
 
    //Поиск двоичников. возвращает список фамилий, параметр К - количество 
    vector<string> count_2(int *k){
        vector<string>names;
        node *cur = head;       
        while (cur != NULL){
            if (cur->rate == 2)names.push_back(cur->name);
            cur = cur->next;
        }
        *k = names.size();
        return names;
    }
    
 
    //Удаляет двоичника с фамилией - name
    void del(string name){
        if (head == NULL)cout << "Список пуст";
        else{
            if (head->name == name)head = head->next;
            else{
                node *cur = head;
                node *prev=NULL;
                while (cur!= NULL){
                    if (cur->name == name){
                        prev->next = cur->next;
                    }
                    prev = cur;
                    cur = cur->next;
                }
            }   
        }       
    }
 
    //Удаляет двоичников с фамилиями взятыми из списка names
    void del(vector<string>names){
        for (int i = 0; i < names.size(); i++)del(names[i]);
    }
};
 
 
int main(){
    setlocale(LC_ALL, "Russian");
    
    cout << "Введите количество Журналов" << endl;
    int n;
    cin >> n;
    char ch;
    //Работа класса
    journal *j=new journal[n];
    for (int i = 0; i < n; i++){
        cout << "Заполнение " << i + 1 << "-го журнала:" << endl;
        do{
            cout << "\n Фамилия:";
            string s;
            cin >> s;
            cout << "\n Оценка:";
            int rate;
            cin >> rate;
            j[i].add(s, rate);
            cout << "\n Закончить? y/n " << endl;;
            ch = _getch();
        } while (ch != 'y');
    }
 
    vector<string>names;
    int count,max = 0;
    for (int i = 0; i < n; i++){
        j[i].show();
        int k = 0;
        j[i].count_2(&k);
        if (max <= k){
            names = j[i].count_2(&k);
            max = k;
            count = i;
        }
    }
    cout <<endl<< "Изменение журнала с наибольшим количеством двоечников" << endl;
    node *cur = j[count].head;
    while (cur != NULL){
        cout << "Имя: " << cur->name << "  Оценка: " << cur->rate << endl;
        cout << "\n Удалить? y/n " << endl;;
        ch = _getch();
        if (ch == 'y'){
            j[count].del(cur->name); 
        }
        cur = cur->next;
    }
    cout << "Измененный журнал" << endl;
    j[count].show();
 
    system("PAUSE");
    return 0;
}
Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.