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

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

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

Как убрать глобальные переменные в коде? - C++

27.01.2016, 23:45. Просмотров 307. Ответов 5
Метки нет (Все метки)

Привет! Пожалуйста, помогите мне с этой задачей. Это работает. Но я хочу, чтобы обойтись без глобальных переменных.

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
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <iostream>
using namespace std;
 
void case1();
void case2();
void case3();
void case4();
void case5();
 
const int MAXROW = 5;
const int MAXCOL = 5;
int A[MAXROW][MAXCOL] = { 0 };
int newarr[MAXROW + 1][MAXCOL + 1] = { 0 };
 
int main()
{
 
    char da;
    do                                  //menu
    {
        cout << "\n\nMENU\n";
        cout << "1. : \n";
        cout << "2. : \n";
        cout << "3.: \n";
        cout << "4.  \n";
        cout << "5. \n";
        cout << "6.Exit.\n\n";
        cin >> da;
 
        switch (da)
        {
        case '1': {
            system("cls");
            case1();
        } break;
 
        case '2': {
            //system("cls"); 
            case2();
        } break;
 
        case '3': {
            //system("cls"); 
            case3();
        } break;
 
        case '4': {
            //system("cls"); 
            case4();
        } break;
 
        case '5': {
            //system("cls"); 
            case5();
        } break;
        }
 
    } while (da != '6');
 
    return 0;
 
}
 
void case1()
{
 
 
    for (int r = 0; r < MAXROW; ++r)
        for (int c = 0; c < MAXCOL; ++c) {
            cout << "\n A[" << r << "][" << c << "]= ";
            cin >> A[r][c];
        }
 
}
 
void case2()
{
 
    int max[MAXCOL] = { 0 };
 
    for (int r = 0; r < MAXROW; ++r) {
        int minr = A[r][0];
        for (int c = 0; c < MAXCOL; ++c) {
            newarr[r][c] = A[r][c];
            if (minr > A[r][c])
                minr = A[r][c];
 
            if (max[c] < A[r][c])
                max[c] = A[r][c];
        }
        newarr[r][MAXCOL] = minr;
    }
 
    for (int c = 0; c < MAXCOL; ++c)
        newarr[MAXROW][c] = max[c];
 
    for (int r = 0; r < MAXROW + 1; ++r) {
        for (int c = 0; c < MAXCOL + 1; ++c)
            newarr[r][c] ? cout << newarr[r][c] << "\t" : cout << " \t";
 
        cout << "\n";
    }
}
 
 
void case3()
{
    int negNumber = 0;
    double average = 0;
 
    for (int r = 0; r < 6; ++r) {
        for (int c = 0; c < 6; ++c) {
            if (newarr[r][c] < 0) {
                ++negNumber;
                average += newarr[r][c];
            }
 
        }
    }
    if (negNumber > 0) {
        average /= negNumber;
        cout << "Average of negatives: \n" << average;
    }
    else
        cout << "No negatives.\n";
 
 
}
 
void case4()
{//Find product of number different from 0
    int count = 0;
    int product = 1;
 
 
    for (int r = 0; r < 6; ++r)
        for (int c = 0; c < 6; ++c)
            if (newarr[r][c] != 0)
            {
                ++count;
                product *= newarr[r][c];
 
            }
 
 
    if (count != 0)
        cout << "\n Procut: \n" << product << endl;
    else
        cout << "All elements = 0";
 
}
 
void case5()
 
{
    for (int r = 0; r < MAXROW + 1; ++r) {
        for (int c = 0; c < MAXCOL + 1; ++c)
            newarr[r][c] ? cout << newarr[r][c] << "\t" : cout << " \t";
 
        cout << "\n";
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2016, 23:45     Как убрать глобальные переменные в коде?
Посмотрите здесь:

Убрать глобальные переменные - C++
Помогите пожалуйста убрать глобальные переменные, прога работает на 100% #include &lt;cstring&gt; #include &lt;string&gt; #include &lt;fstream&gt; ...

Как в хедере объявить глобальные переменные? - C++
как в хедере объявить int Result_Time = 0;

Глобальные и статические глобальные переменные - C++
Скажите, чем отличаются глобальные переменные от статических глобальных переменных?

Глобальные переменные - C++
Подскажите пожалуйста, почему данные в глобальной переменной перезаписываются, а не плюсуются? Пример: int peremennaya; void...

Глобальные переменные - C++
Доброго времени суток всем. У меня следующая проблема: объявляю глобально переменную типа структуры dealer* root;. Далее в коде...

Глобальные переменные - C++
Здравствуйте! Возникла видимо классическая проблема, но перечитав кучу сайтов так ее и не решил. Пишу в VS2005, имеются 2 срр файла...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Shonrens
15 / 15 / 4
Регистрация: 06.06.2015
Сообщений: 99
27.01.2016, 23:53     Как убрать глобальные переменные в коде? #2
Создай матрицу в меин и передавай ее в функцию как аргумент по ссылке.
JohnDoe321
0 / 0 / 0
Регистрация: 13.12.2015
Сообщений: 6
28.01.2016, 11:13  [ТС]     Как убрать глобальные переменные в коде? #3
Проблема в том, что я не знаю, как это будет происходить.
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
28.01.2016, 13:03     Как убрать глобальные переменные в коде? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от JohnDoe321 Посмотреть сообщение
Проблема в том, что я не знаю, как это будет происходить.
Научись пользоваться классами и прячь всё внутрь класса.
Это даст возможность передавать неявно весь локальный контекст для связанных методов.
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
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <iostream>
using namespace std;
 
class Application {
protected:
    static const int MAXROW = 5;
    static const int MAXCOL = 5;
    int A[MAXROW][MAXCOL];
    int newarr[MAXROW + 1][MAXCOL + 1];
 
public:
    Application() :A{ 0 }, newarr{0}
    {}
 
    void runCase(char da)
    {
        switch (da)
        {
        case '1': {
            system("cls");
            case1();
        } break;
 
        case '2': {
            //system("cls"); 
            case2();
        } break;
 
        case '3': {
            //system("cls"); 
            case3();
        } break;
 
        case '4': {
            //system("cls"); 
            case4();
        } break;
 
        case '5': {
            //system("cls"); 
            case5();
        } break;
        }
    }
 
protected:
    void case1()
    {
 
 
        for (int r = 0; r < MAXROW; ++r)
            for (int c = 0; c < MAXCOL; ++c) {
                cout << "\n A[" << r << "][" << c << "]= ";
                cin >> A[r][c];
            }
 
    }
 
    void case2()
    {
 
        int max[MAXCOL] = { 0 };
 
        for (int r = 0; r < MAXROW; ++r) {
            int minr = A[r][0];
            for (int c = 0; c < MAXCOL; ++c) {
                newarr[r][c] = A[r][c];
                if (minr > A[r][c])
                    minr = A[r][c];
 
                if (max[c] < A[r][c])
                    max[c] = A[r][c];
            }
            newarr[r][MAXCOL] = minr;
        }
 
        for (int c = 0; c < MAXCOL; ++c)
            newarr[MAXROW][c] = max[c];
 
        for (int r = 0; r < MAXROW + 1; ++r) {
            for (int c = 0; c < MAXCOL + 1; ++c)
                newarr[r][c] ? cout << newarr[r][c] << "\t" : cout << " \t";
 
            cout << "\n";
        }
    }
 
 
    void case3()
    {
        int negNumber = 0;
        double average = 0;
 
        for (int r = 0; r < 6; ++r) {
            for (int c = 0; c < 6; ++c) {
                if (newarr[r][c] < 0) {
                    ++negNumber;
                    average += newarr[r][c];
                }
 
            }
        }
        if (negNumber > 0) {
            average /= negNumber;
            cout << "Average of negatives: \n" << average;
        }
        else
            cout << "No negatives.\n";
 
 
    }
 
    void case4()
    {//Find product of number different from 0
        int count = 0;
        int product = 1;
 
 
        for (int r = 0; r < 6; ++r)
            for (int c = 0; c < 6; ++c)
                if (newarr[r][c] != 0)
                {
                    ++count;
                    product *= newarr[r][c];
 
                }
 
 
        if (count != 0)
            cout << "\n Procut: \n" << product << endl;
        else
            cout << "All elements = 0";
 
    }
 
    void case5()
    {
        for (int r = 0; r < MAXROW + 1; ++r) {
            for (int c = 0; c < MAXCOL + 1; ++c)
                newarr[r][c] ? cout << newarr[r][c] << "\t" : cout << " \t";
 
            cout << "\n";
        }
    }
};
 
int main()
{
    Application app;
    char da;
 
    do//menu
    {
        cout << "\n\nMENU\n";
        cout << "1. : \n";
        cout << "2. : \n";
        cout << "3.: \n";
        cout << "4.  \n";
        cout << "5. \n";
        cout << "6.Exit.\n\n";
 
        cin >> da;
        app.runCase(da);
    } while (da != '6');
 
    return 0;
}
JohnDoe321
0 / 0 / 0
Регистрация: 13.12.2015
Сообщений: 6
28.01.2016, 15:47  [ТС]     Как убрать глобальные переменные в коде? #5
Большое спасибо.... Я еще не работал с классами. Как может быть сделано со ссылками/указатели? Я изучал их. Все говорят, что это легко, но я дурак и не понимал их.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 20:02     Как убрать глобальные переменные в коде?
Еще ссылки по теме:

Глобальные переменные - C++
Я хочу использовать глобальную переменную, определённую в main, в своих классах. Листинг)) globals.h #ifndef GLOBASL_H #define...

глобальные переменные - C++
Пробовал объявить глобальные переменные следующим образом: в заголовочном файле head.h #ifndef DF_H #define DF_H //объявления...

Глобальные переменные - C++
Я правильно понимаю: &quot;в c++ использовать глобальные переменные не безопасно, т. к. др. программы могут случайно поменять значение этих...

Глобальные переменные - C++
Как в C++ завести глобальную (общую для функции и самой программы) переменную?

Глобальные переменные - C++
Здравствуйте . Разбираю пример с книги на использование глобальных переменных . Там был такой пример: #include &quot;stdafx.h&quot; #include...

глобальные переменные в модуле - C++
Нужно сохранить пару массивов и несколько переменных, но так чтобы их в основной программе видно не было, хочу сделать статик внутри...


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

Или воспользуйтесь поиском по форуму:
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
28.01.2016, 20:02     Как убрать глобальные переменные в коде? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от JohnDoe321 Посмотреть сообщение
Как может быть сделано со ссылками/указатели? Я изучал их.
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
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <iostream>
using namespace std;
 
//{{Class emulation
#define MAXROW (int)5
#define MAXCOL (int)5
#define DEF_CLASS_CONTEXT \
    int A[MAXROW][MAXCOL] = { 0 }; \
    int newarr[MAXROW + 1][MAXCOL + 1] = { 0 }
#define DECL_CLASS_CONTEXT \
    int (&A)[MAXROW][MAXCOL], \
    int (&newarr)[MAXROW + 1][MAXCOL + 1]
#define SEND_CLASS_CONTEXT A, newarr
 
void case1(DECL_CLASS_CONTEXT);
void case2(DECL_CLASS_CONTEXT);
void case3(DECL_CLASS_CONTEXT);
void case4(DECL_CLASS_CONTEXT);
void case5(DECL_CLASS_CONTEXT);
//}}Class emulation
 
int main()
{
    DEF_CLASS_CONTEXT;
    char da;
    do                                  //menu
    {
        cout << "\n\nMENU\n";
        cout << "1. : \n";
        cout << "2. : \n";
        cout << "3.: \n";
        cout << "4.  \n";
        cout << "5. \n";
        cout << "6.Exit.\n\n";
        cin >> da;
 
        switch (da)
        {
        case '1': {
            system("cls");
            case1(SEND_CLASS_CONTEXT);
        } break;
 
        case '2': {
            //system("cls"); 
            case2(SEND_CLASS_CONTEXT);
        } break;
 
        case '3': {
            //system("cls"); 
            case3(SEND_CLASS_CONTEXT);
        } break;
 
        case '4': {
            //system("cls"); 
            case4(SEND_CLASS_CONTEXT);
        } break;
 
        case '5': {
            //system("cls"); 
            case5(SEND_CLASS_CONTEXT);
        } break;
        }
 
    } while (da != '6');
 
    return 0;
 
}
 
void case1(DECL_CLASS_CONTEXT)
{
 
 
    for (int r = 0; r < MAXROW; ++r)
        for (int c = 0; c < MAXCOL; ++c) {
            cout << "\n A[" << r << "][" << c << "]= ";
            cin >> A[r][c];
        }
 
}
 
void case2(DECL_CLASS_CONTEXT)
{
 
    int max[MAXCOL] = { 0 };
 
    for (int r = 0; r < MAXROW; ++r) {
        int minr = A[r][0];
        for (int c = 0; c < MAXCOL; ++c) {
            newarr[r][c] = A[r][c];
            if (minr > A[r][c])
                minr = A[r][c];
 
            if (max[c] < A[r][c])
                max[c] = A[r][c];
        }
        newarr[r][MAXCOL] = minr;
    }
 
    for (int c = 0; c < MAXCOL; ++c)
        newarr[MAXROW][c] = max[c];
 
    for (int r = 0; r < MAXROW + 1; ++r) {
        for (int c = 0; c < MAXCOL + 1; ++c)
            newarr[r][c] ? cout << newarr[r][c] << "\t" : cout << " \t";
 
        cout << "\n";
    }
}
 
 
void case3(DECL_CLASS_CONTEXT)
{
    int negNumber = 0;
    double average = 0;
 
    for (int r = 0; r < 6; ++r) {
        for (int c = 0; c < 6; ++c) {
            if (newarr[r][c] < 0) {
                ++negNumber;
                average += newarr[r][c];
            }
 
        }
    }
    if (negNumber > 0) {
        average /= negNumber;
        cout << "Average of negatives: \n" << average;
    }
    else
        cout << "No negatives.\n";
 
 
}
 
void case4(DECL_CLASS_CONTEXT)
{//Find product of number different from 0
    int count = 0;
    int product = 1;
 
 
    for (int r = 0; r < 6; ++r)
        for (int c = 0; c < 6; ++c)
            if (newarr[r][c] != 0)
            {
                ++count;
                product *= newarr[r][c];
 
            }
 
 
    if (count != 0)
        cout << "\n Procut: \n" << product << endl;
    else
        cout << "All elements = 0";
 
}
 
void case5(DECL_CLASS_CONTEXT)
 
{
    for (int r = 0; r < MAXROW + 1; ++r) {
        for (int c = 0; c < MAXCOL + 1; ++c)
            newarr[r][c] ? cout << newarr[r][c] << "\t" : cout << " \t";
 
        cout << "\n";
    }
}
Yandex
Объявления
28.01.2016, 20:02     Как убрать глобальные переменные в коде?
Ответ Создать тему
Опции темы

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