1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
1

Разбиение программы на функции

21.04.2018, 15:29. Показов 1106. Ответов 3
Метки нет (Все метки)

Никак не могу решить проблему с функцией outnewRB:
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
bool outnewRB(bool &check,int &k, int n, RecordBook *RB, RecordBook *newRB)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < RB[i].s; j++)
        {
            if (RB[i].sub[j].m < 3) {
                check = 1;
                break;
            }
        }
        if (!check)
        {
 
            newRB[k].num = RB[i].num;
            newRB[k].s = RB[i].s;
            newRB[k].sub = RB[i].sub;
            newRB[k].surname = RB[i].surname;
 
            cout << k + 1 << ") " << newRB[k].surname << endl;
            cout << "   Оценки: ";
            for (int j = 0; j < newRB[k].s; j++)
                cout << newRB[k].sub[j].m << "\t";
            cout << endl;
            k++;
            
            return k, check;
        }
    }
}
Постоянно выбивает ошибки связанные с check и k, в чем проблема?Подскажите, пожалуйста.
Вот вся программа:
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
#include <Windows.h>
 
using namespace std;
 
struct Subject {
    string surname; //фамилия преподователя
    string name; //Название предмета
    int m; //оценка
};
 
struct RecordBook {
    string surname; //фамилия
    int num; //номер зачетки
    int s; //кол-во предметов
    Subject *sub;
};
 
int l = 0, b = 0;
 
void Out (RecordBook *RB, int n)
{
    cout << "Все студенты: " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << ") " << RB[i].surname << endl;
        cout << "   Оценки: ";
        for (int j = 0; j < RB[i].s; j++)
            cout << RB[i].sub[j].m << "\t";
        cout << " Номер зачетки студента:" << RB[i].num;
        cout << endl;
    }
}
 
void Swap(RecordBook *RB, int n)
{
    for (int i = 0; i < n; i++)
        for (int j = i + 1; j < n; j++)
        {
            if (l = 1 && RB[i].surname>RB[j].surname || l != 1 && RB[i].num>RB[j].num)
            {
                swap(RB[i].surname, RB[j].surname);
                swap(RB[i].num, RB[j].num);
                swap(RB[i].s, RB[j].s);
                swap(RB[i].sub, RB[j].sub);
            }
        }
}
 
int checkdeuce(RecordBook *RB, int n, int &b, int &deuce)
{
    for (int t = 0; t<n; t++)
 
        for (int j = 0; j<RB[t].s; j++)
        {
            if (RB[t].sub[j].m < 3)
            {
                deuce++;
                break;
            }
        }
    b = n - deuce;
    cout << "Число двоечников:" << " " << deuce << endl;
    cout << "Размер нового массива:" << " " << b << endl;
    cout << "Удаление неуспевающих: " << endl;
    return b;
}
 
bool outnewRB(bool &check,int &k, int n, RecordBook *RB, RecordBook *newRB)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < RB[i].s; j++)
        {
            if (RB[i].sub[j].m < 3) {
                check = 1;
                break;
            }
        }
        if (!check)
        {
 
            newRB[k].num = RB[i].num;
            newRB[k].s = RB[i].s;
            newRB[k].sub = RB[i].sub;
            newRB[k].surname = RB[i].surname;
 
            cout << k + 1 << ") " << newRB[k].surname << endl;
            cout << "   Оценки: ";
            for (int j = 0; j < newRB[k].s; j++)
                cout << newRB[k].sub[j].m << "\t";
            cout << endl;
            k++;
            
            return k, check;
        }
    }
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    int n = 0, deuce = 0, k = 0;
    bool check = 0;
    cout << "Количество студетов: ";
    cin >> n;
    RecordBook *RB = new RecordBook[n];
 
    for (int i = 0; i < n; i++)
    {
        cout << "Студент #" << i + 1 << endl;
        cout << "Фамилия: ";
        cin >> RB[i].surname;
        cout << "Номер зачетки: ";
        cin >> RB[i].num;
        cout << "Количество предметов: ";
        cin >> RB[i].s;
        RB[i].sub = new Subject[RB[i].s];
 
        for (int j = 0; j < RB[i].s; j++)
        {
            cout << "Предмет #" << j + 1 << endl;
            cout << "Название: " << endl; cin >> RB[i].sub[j].name;
            cout << "Преподаватель: " << endl; cin >> RB[i].sub[j].surname;
            cout << "Оценка: " << endl; cin >> RB[i].sub[j].m;
            cout << endl;
        }
        cout << "========================" << endl;
    }
 
    Out(RB, n); // 1 функция 
    cout << endl << endl << "Сортировать по фамилии (1), по номеру зачетки (иначе): "; cin >> ::l;
    Swap(RB, n); // 2 функция 
    cout << "Вы выбрали:" << ::l; 
    Out(RB, n); // 3 функция
    checkdeuce(RB, n,::b,deuce); // 4 функция
    RecordBook *newRB = new RecordBook[::b];
    outnewRB(&check, &k, n , RB, newRB); // 5 функция 
    _getch();
    
    delete[] newRB;
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2018, 15:29
Ответы с готовыми решениями:

Разбиение программы на функции
Надо разбить задачу на функции, чтобы хотя бы присутствовала 1 функция, загвоздка в динамической...

Разбиение программы на функции. Ввод последовательности неотрицательных чисел.
Есть программа ввод значений в которой осущесвляется пока не будет введено отрицательное число,...

Разбиение программы на файлы
Возникла проблема в тривиальной задаче. Создал шаблонный класс вектор, который работает если в...

Разбиение программы на модули!
Есть большая программа #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class mes //...

3
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,776
21.04.2018, 16:43 2
Цитата Сообщение от noname12345 Посмотреть сообщение
return k, check;
Удалить совсем, Вы k и check передаете по ссылке.

Кстати, я не вижу, где Вы задаете им начальные значения.
1
1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
22.04.2018, 00:59  [ТС] 3
Цитата Сообщение от zss Посмотреть сообщение
стати, я не вижу, где Вы задаете им начальные значения.
106-107 строчка
C++
1
2
    int n = 0, deuce = 0, k = 0;
    bool check = 0;
Цитата Сообщение от zss Посмотреть сообщение
Удалить совсем, Вы k и check передаете по ссылке.
Ну в функции удалил, но все равно ругается, вызов функции такой:
C++
1
outnewRB(&check, &k, n , RB, newRB); // 5 функция
Миниатюры
Разбиение программы на функции  
0
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,776
22.04.2018, 08:11 4
Лучший ответ Сообщение было отмечено noname12345 как решение

Решение

Зачем амперсанды, если передача по ссылке
C++
1
outnewRB(check, k, n , RB, newRB);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2018, 08:11
Помогаю со студенческими работами здесь

Разбиение программы на файлы С++
Здравствуйте! У меня не получается линейный алгоритм своей программы разбить на два файла именно...

Разбиение программы на несколько файлов
Ребят, помогите пожалуйста код разбить на несколько файлов. Чтобы в основном остался только main....

Разбиение программы на файлы (трудности с vector)
Возникли трудности при разбиении программы по файлам (прототипы в .h, реализация в .cpp). Думаю,...

Разбиение однофайлового проекта на многофаовый (функции). C++
Есть код программы, которая позволяет ввести динамический массив, а затем 1. Упорядочивает...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru