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

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

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

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

02.04.2014, 22:51. Просмотров 563. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 22:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа по ООП. Класс "Журнал оценок" (C++):

Нужна программа "Журнал посещения учеников/студентов/работников" - C++
Любая прога про посещения

Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; - C++
Помогите пожалуйста с задачей. Могу сделать ее просто, но надо через ООП и у меня не получается. Дано натуральное число N (N&lt;20),...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

ООП "Класс калькулятор - дата" - C++
Добрый день. Есть такая задачка: Разработать класс калькулятор(с формой) выполняющий операции например: 1) дата1-дата2 = количество...

1
Ligeros
1 / 1 / 0
Регистрация: 06.11.2013
Сообщений: 87
06.04.2014, 21:39  [ТС] #2
Что вводить примерно, я знаю, но куда и как нет
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 21:39
Привет! Вот еще темы с ответами:

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...

Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/". - C++
пожалуйста-помогите написатьпрограмму!!! сижу на экзамене!!! вот само задание: создать класс комплексных чисел и ввести операции: &quot;+&quot;,...

Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол" - C++
кто то напишите пожалуйста, вот программа: наследуемым классом для комплексного числа объявить класс &quot;радиус-вектор&quot;, имеющий данные...

Класс "Графический объект", от которого будут наследоваться классы "круг" и "квадрат" - C++
Реализовать класс Графический объект от которого будут наследоваться классы &quot;круг&quot; и &quot;квадрат&quot;. Собственно, сам код, который был написан...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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