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

Проконсультируйте пожалуйста - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не правильно работает! http://www.cyberforum.ru/cpp-beginners/thread1015399.html
#include "stdafx.h" #include <iostream> #include <math.h> #include <stdio.h> using namespace std; double func1(double,double,double,double,double,double); double func2(double &,double &,double &,double &,double &,double &); double func3(double *,double *,double *,double *,double *,double *);
C++ Преобразование массива одного типа в другой Есть массив int-овых чисел. Нужно его перевести в массив double. Поэлементно с помощью цикла очень долго, не подходит. Может быть есть какая-нибудь функция или библиотека, чтобы быстро преобразовать тип? http://www.cyberforum.ru/cpp-beginners/thread1015380.html
C++ Где тут ошибка то?
#include <iostream> using namespace std; int main() { int b=1, c=0; while (1) { if (b==13); break; else
C++ Двумерные массивы (количество элементов массива, значение которых больше среднего арифметического значения элементов этого массива)
Дан двумерный квадратный массив из 16 элементов.Написать программу, которая находит и выводит количество элементов массива, значение которых больше среднего арифметического значения элементов этого массива. ( Программу написать в Pascal,двумрным массивом)
C++ Найти чему равно http://www.cyberforum.ru/cpp-beginners/thread1015351.html
вот такое деление. Не могу написать программку, получается не правильное число. Число должно равняться числу 0,761597. Помогите разобраться.
C++ потоки вывода доброго времени суток, Уважаемые форумчане! есть проблема, суть проблемы заключается в следующем: ни как не могу передать поток в конструктор класса(конструктор должен принимать ostream, что бы можно было передавать в него разные типы потоков.), помогите разобраться что я не правильно делаю? в хедере класса объявил поток std::ostream & strm и так же прописал непосредственно конструктор... подробнее

Показать сообщение отдельно
кверти
4 / 4 / 1
Регистрация: 22.09.2013
Сообщений: 136
Завершенные тесты: 2
22.11.2013, 13:49     Проконсультируйте пожалуйста
Стипендия. Сессия включает в себя экзамены по трём
дисциплинам: «Алгебра», «Математический анализ» и «Языки и
методы программирования». Студентам, не сдавшим хотя бы один
экзамен, стипендия не выплачивается. Студентам, сдавшим все
экзамены не ниже, чем на 3, начисляется базовая стипендия из
расчета 250 рублей за каждый балл. Хорошисты (успевающие
студенты, не имеющие троек) дополнительно получают надбавку в
25%. Отличники (студенты, сдавшие все экзамены на 5) получают
надбавку 50%. Разработайте программу, которая будет вычислять
размер стипендии для трёх студентов и печатать стипендиальную
ведомость, получая, на вход экзаменационные оценки каждого
студента. В программе должны быть реализованы, как минимум,
следующие функции
 inputData для организации ввода исходных данных;
 calculateScholarship для определения размера стипендии;
 calculateQuantitivePerformance для вычисления
количественной успеваемости по определённой дисциплине
(процента оценок по дисциплине, не ниже 3);
 calculateQualitativePerformance для вычисления
качественной успеваемости по определённой дисциплине
(процент оценок по дисциплине, не ниже 4);
 printTable для печати отчётной таблицы.

Ниже мои исходники:

1) Главная функция

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
#include <iostream>
 
#include <stdio.h>
 
#include <windows.h>
 
                                           // Раздел глобальных переменных.
 
//Переменные для 1-го студента.
 
float match_1,algebra_1,amp_1;
 
//Переменные для 2-го студента.
 
float match_2,algebra_2,amp_2;
 
//Переменные для 3-го студента.
 
float match_3,algebra_3,amp_3;
 
 
 
//Переменные требуемые для расчета стипендии.
 
 
 
float summa_1, // Сумма оценок 1-го студента.
 
          step_1;  // Размер стипендии 1-го студента.
 
 
 
float summa_2, // Сумма оценок 2-го студента.
 
          step_2;  // Размер стипендии 2-го студента.
 
 
 
 
 
float summa_3, // Сумма оценок 3-го студента
 
          step_3;  // Размер стипендии 3-го студента
 
 
 
                                       //Конец раздела глобальных переменных.                                        
 
 
 
void InputData();      // Функция для ввода данных.
 
void calculateScholarship(); //Функция расчета стипендии.
 
void PrintTable(); //Функция для вывода результата.
 
 
 
void main()
 
{
 
        setlocale(0,"");
 
 
 
    InputData();
 
    calculateScholarship();
 
    //calculateQuantitivePerformance();
 
    //calculateQualitativePerformance();
 
    PrintTable();
 
        system("pause");
 
}
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
// Функция для ввода оценок.
 
#include <iostream>
 
#include <stdio.h>
 
#include <windows.h>
 
 
 
//Переменные для 1-го студента.
 
extern float match_1,algebra_1,amp_1;
 
//Переменные для 2-го студента.
 
extern float match_2,algebra_2,amp_2;
 
//Переменные для 3-го студента.
 
extern float match_3,algebra_3,amp_3;
 
 
 
 
 
 
 
void InputData()
 
{
 
                                    //Начало блока действий для 1-го студента.
 
   // match_1 - оценка по мат.анализу
 
   // algebra_1 - оценка по алгебре
 
   // amp_1 - оценка по ЯМП
 
 
 
 printf("Введите оценку 1-го студента по мат.анализу: ");
 
 scanf("%f",&match_1);
 
 
 
 printf("Введите оценку 1-го студента по алгебре: ");
 
 scanf("%f",&algebra_1);
 
 
 
 printf("Введите оценку 1-го студента по ЯМП: ");
 
 scanf("%f",&amp_1);
 
 
 
                              //Конец блока действий для 1-го студента
 
 
 
 
 
                                  //Начало блока действий для 2-го студента.
 
   // match_2 - оценка по мат.анализу
 
   // algebra_1 - оценка по алгебре
 
   // amp_2 - оценка по ЯМП
 
 
 
 printf("Введите оценку 2-го студента по мат.анализу: ");
 
 scanf("%f",&match_2);
 
 
 
 printf("Введите оценку 2-го студента по алгебре: ");
 
 scanf("%f",&algebra_2);
 
 
 
 printf("Введите оценку 2-го студента по ЯМП: ");
 
 scanf("%f",&amp_2);
 
 
 
                              //Конец блока действий для 2-го студента
 
 
 
 
 
                                  //Начало блока действий для 2-го студента.
 
   // match_3 - оценка по мат.анализу
 
   // algebra_3 - оценка по алгебре
 
   // amp_3 - оценка по ЯМП
 
 
 
 printf("Введите оценку 3-го студента по мат.анализу: ");
 
 scanf("%f",&match_3);
 
 
 
 printf("Введите оценку 3-го студента по алгебре: ");
 
 scanf("%f",&algebra_3);
 
 
 
 printf("Введите оценку 3-го студента по ЯМП: ");
 
 scanf("%f",&amp_3);
 
 
 
                              //Конец блока действий для 3-го студента
 
  system("cls");
 
}
3) Функция расчета стиипендии:

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
// Функция для вычисления размера стипендии.
 
#include <iostream>
 
#include <stdio.h>
 
#include <windows.h>
 
 
 
//Переменные для 1-го студента.
 
extern float match_1,algebra_1,amp_1;
 
//Переменные для 2-го студента.
 
extern float match_2,algebra_2,amp_2;
 
//Переменные для 3-го студента.
 
extern float match_3,algebra_3,amp_3;
 
 
 
void calculateScholarship()
 
{
 
        
 
                                //Блок действий для 1-го студента.
 
 
 
        // match_1 - оценка по мат.анализу
 
    // algebra_1 - оценка по алгебре
 
    // amp_1 - оценка по ЯМП
 
 
 
        extern float summa_1, // Сумма оценок 1-го студента.
 
                         step_1;  // Размер стипендии 1-го студента. 
 
 
 
        summa_1 = match_1 + algebra_1 + amp_1;
 
 
 
    if (summa_1 > 8)
 
        {
 
                if ((match_1 == 3 ) || (algebra_1 == 3) || (amp_1 == 3))
 
                {
 
                        step_1 = summa_1 * 250;
 
                }
 
                if ((match_1 > 3) && (algebra_1 > 3) && (amp_1 > 3))
 
                {
 
                        
 
                        step_1 = summa_1 * 250;
 
                        step_1 = step_1 + (step_1 / 100 * 25);
 
                }
 
                if ((match_1 > 4) && (algebra_1 > 4) && (amp_1 > 4))
 
                {
 
                        
 
                        step_1 = summa_1 * 250;
 
                        step_1 = step_1 + (step_1 / 100 * 50);
 
                }
 
        } else step_1 = 0;
 
                               //Конец блока действий для 1-го студента.
 
 
 
                                //Блок действий для 2-го студента.
 
 
 
   // match_2 - оценка по мат.анализу
 
   // algebra_2 - оценка по алгебре
 
   // amp_2 - оценка по ЯМП
 
 
 
        extern float summa_2, // Сумма оценок 2-го студента.
 
                step_2;  // Размер стипендии 2-го студента.
 
 
 
        summa_2 = match_2 + algebra_2 + amp_2;
 
 
 
    if (summa_2 > 8)
 
        {
 
                if ((match_2 == 3 ) || (algebra_2 == 3) || (amp_2 == 3))
 
                {
 
                        step_2 = summa_2 * 250;
 
                }
 
                if ((match_2 > 3) && (algebra_2 > 3) && (amp_2 > 3))
 
                {
 
                        
 
                        step_2 = summa_2 * 250;
 
                        step_2 = step_2 + (step_2 / 100 * 25);
 
                }
 
                if ((match_2 > 4) && (algebra_2 > 4) && (amp_2 > 4))
 
                {
 
                        
 
                        step_2 = summa_2 * 250;
 
                        step_2 = step_2 + (step_2 / 100 * 50);
 
                }
 
        } else step_2 = 0;
 
                               //Конец блока действий для 2-го студента.
 
 
 
                                //Блок действий для 3-го студента.
 
 
 
   // match_3 - оценка по мат.анализу
 
   // algebra_3 - оценка по алгебре
 
   // amp_3 - оценка по ЯМП
 
 
 
        extern float summa_3, // Сумма оценок 3-го студента.
 
                step_3;  // Размер стипендии 3-го студента.
 
 
 
        summa_3 = match_3 + algebra_3 + amp_3;
 
 
 
    if (summa_3 > 8)
 
        {
 
                if ((match_3 == 3 ) || (algebra_3 == 3) || (amp_3 == 3))
 
                {
 
                        step_3 = summa_3 * 250;
 
                }
 
                if ((match_3 > 3) && (algebra_3 > 3) && (amp_3 > 3))
 
                {
 
                        step_3 = summa_3 * 250;
 
                        step_3 = step_3 + (step_3 / 100 * 25);
 
                }
 
                if ((match_3 > 4) && (algebra_3 > 4) && (amp_3 > 4))
 
                {
 
                        step_3 = summa_3 * 250;
 
                        step_3 = step_3 + (step_3 / 100 * 50);
 
                }
 
        } else step_3 = 0;
 
                                 //Конец блока действий для 3-го студента.
 
}
4) Таблица вывода:


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
#include <iostream>
 
#include <stdio.h>
 
#include <windows.h>
 
                                       //Раздел для переменных
 
//Переменные хранящие оценки.
 
 
 
//Переменные для 1-го студента.
 
extern float match_1,algebra_1,amp_1;
 
//Переменные для 2-го студента.
 
extern float match_2,algebra_2,amp_2;
 
//Переменные для 3-го студента.
 
extern float match_3,algebra_3,amp_3;
 
 
 
//Переменные требуемые для расчета стипендии.
 
 
 
extern float step_1;  // Размер стипендии 1-го студента.
 
 
 
extern float step_2;  // Размер стипендии 2-го студента.
 
 
 
extern float step_3;  // Размер стипендии 3-го студента
 
 
 
                                      //Конец раздела для переменных
 
void PrintTable()
 
{
 
        setlocale(0,"");
 
 
 
        printf("№ студента  Алгебра  Мат.анализ  ЯМП  Стипендия, руб\n");
 
        printf("\n");
 
        printf("1             %1.0f        %1.0f          %1.0f      %7.2f\n",match_1,algebra_1,amp_1,step_1);
 
        printf("\n");
 
        printf("2             %1.0f        %1.0f          %1.0f      %7.2f\n",match_2,algebra_2,amp_2,step_2);
 
        printf("\n");
 
        printf("3             %1.0f        %1.0f          %1.0f      %7.2f\n",match_3,algebra_3,amp_3,step_3);
 
        printf("\n");
 
 
 
}
Собственно мои вопросы: Нормально ли в моем случае использование глобальных переменных в таком количестве?(каждая функция находится в отдельном файле) . Как можно улучшить код программы или сократить его обьем? Как можно реализовать функции calculateQualitativePerformance и функцию calculateQuantitivePerformance . Хотябы приведите пример для одной или просто подскажите формулку мне этого хватит) . Если вы прочитали всё выше сказанное я надеюсь что ответите на него ( я буду очень благодарен)

 Комментарий модератора 
Будьте внимательнее при выборе раздела и используйте теги форматирования кода.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru