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

Избавиться от глобальной переменной

26.01.2012, 19:03. Показов 1974. Ответов 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
#include <iostream>                     // подключаем ввод/вывод
#include <cmath>                        // подключаем математические функции
#include <conio.h>                      // подключаем для использования getch()
 
using namespace std;                    // пространство имен std
#define PI 3.1415926535                 // макрос. в коде PI будет автоматически заменяться на 3.1415926535
void inputValues();                     // прототип функции ввода значений
double space();                         // прототип функции для вычисления объема
double area();                          // прототип функции для вычисления прощади боковой поверхности
// структура Конуса
struct Cone {
    double R;                 // радиус большего круга
    double r;                 // радиус меньшего круга
    double h;                 // высота усеченного конуса
    double l;                 // образующая усеченного конуса
};
Cone cone;                    // создаем один объем структуры Cone
// функция main, с которой начинается исполнение программы
int main()
{
    inputValues();            // вызов функции для ввода данных
    cout << "\nОбъём конуса равен: " << space() << "." << endl;         // вызов функции для вычисления объема и вывод результатов
    cout << "Площадь боковой поверхности конуса равна: " << area() << "." << endl;             // вызов функции для вычисления площади боковой поверхности и вывод результатов
    getch();                  // ожидание нажатия клавиши
    return 0;                 // успешное завершение программы
}
// функция для ввода данных
void inputValues()
{
    do {
        cout << "Введите радиус большого круга и радиус малого круга: ";
        cin >> cone.r >> cone.R;
    } while( cone.r <= 0 || cone.R <= 0 || cone.r >= cone.R );        // проверка правильности введенных данных
    do {
        cout << "Введите высоту усечённого конуса и образующую усечённого конуса: ";
        cin >> cone.h >> cone.l;
    } while( cone.h <= 0 || cone.l <= 0 || cone.h >= cone.l );        // проверка правильности введенных данных
}
// функция для вычисления объема усеченного конуса
double space()
{
    return ( PI * cone.h * ( pow( cone.R, 2 ) + pow( cone.r, 2 ) + cone.R * cone.r ) ) / 3;
}
// функция для вычисления площади боковой поверхности усеченного конуса
double area()
{
    return PI * cone.l * ( cone.R + cone.r );
}
Как избавиться от глобальной переменной Cone cone и выполнить передачу параметров по значению?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2012, 19:03
Ответы с готовыми решениями:

Различие глобальной и глобальной статической переменной
у нас есть заголовочный файл со стражами, допустим global.h , его используют несколько других...

Инициализация глобальной переменной
Здравствуйте, мне необходимо в программе по решению СНАУ добавить возможность задавать коэфициенты...

Как сделать матрицу глобальной переменной?
int main() {randomize(); int N,M; cout&lt;&lt;&quot;Vvedit rozmirnist matrici NxM:\n&quot;; cin&gt;&gt;N; cin&gt;&gt;M;...

Можно ли обратиться к перекрытой глобальной переменной?
int x; void f(int x); int main() { f(2); return 0; }; void f(int x) { x=x; // здесь я...

3
Полярный
475 / 447 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
26.01.2012, 19:06 2
Её надо объявить динамической. Так:
C++
1
2
3
4
5
int * Glob;
Glob = new int;
                          //Ипользуете глобальную переменную Glob
delete Glob;          //Избавляемся, но учитываем что указатель остается
Glob = NULL;         //Да что бы меньше косяков в дальнейшем было
0
48 / 48 / 24
Регистрация: 29.10.2011
Сообщений: 154
26.01.2012, 19:11 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
#include <iostream>                     // подключаем ввод/вывод
#include <cmath>                        // подключаем математические функции
#include <conio.h>                      // подключаем для использования getch()
 
using namespace std;    
 
struct Cone {
    double R;                 // радиус большего круга
    double r;                 // радиус меньшего круга
    double h;                 // высота усеченного конуса
    double l;                 // образующая усеченного конуса
};// пространство имен std
#define PI 3.1415926535                 // макрос. в коде PI будет автоматически заменяться на 3.1415926535
void inputValues(Cone &cone);            
                                                    // прототип функции ввода значений
double space(Cone &cone);                         // прототип функции для вычисления объема
double area(Cone &cone);                          // прототип функции для вычисления прощади боковой поверхности
// структура Конуса
 
                   // создаем один объем структуры Cone
// функция main, с которой начинается исполнение программы
int main()
{
    Cone cone;
    inputValues(cone);            // вызов функции для ввода данных
    cout << "\nОбъём конуса равен: " << space(cone) << "." << endl;         // вызов функции для вычисления объема и вывод результатов
    cout << "Площадь боковой поверхности конуса равна: " << area(cone) << "." << endl;             // вызов функции для вычисления площади боковой поверхности и вывод результатов
    getch();                  // ожидание нажатия клавиши
    return 0;                 // успешное завершение программы
}
// функция для ввода данных
void inputValues(Cone &cone)
{
    do {
        cout << "Введите радиус большого круга и радиус малого круга: ";
        cin >> cone.r >> cone.R;
    } while( cone.r <= 0 || cone.R <= 0 || cone.r >= cone.R );        // проверка правильности введенных данных
    do {
        cout << "Введите высоту усечённого конуса и образующую усечённого конуса: ";
        cin >> cone.h >> cone.l;
    } while( cone.h <= 0 || cone.l <= 0 || cone.h >= cone.l );        // проверка правильности введенных данных
}
// функция для вычисления объема усеченного конуса
double space(Cone &cone)
{
    return ( PI * cone.h * ( pow( cone.R, 2 ) + pow( cone.r, 2 ) + cone.R * cone.r ) ) / 3;
}
// функция для вычисления площади боковой поверхности усеченного конуса
double area(Cone &cone)
{
    return PI * cone.l * ( cone.R + cone.r );
}
0
Эксперт С++
1667 / 1039 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
26.01.2012, 19:11 4
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    Cone cone;
    InputValues(cone);
    //...
}
void InputValues(Cone &cone)
{
    //...
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2012, 19:11

Работа с глобальной переменной типа bool
ок, я создала глобальную переменную типа bool (да, лучше этого избегать и все такое, но сейчас так...

Srand для обнуления глобальной переменной
Надо для переменной задать рандомное значение, чтобы каждый раз при запуске обнулял. #pragma once...

Как изменить значение глобальной переменной в функции?
#include &lt;cstdlib&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;math.h&gt; ...

Класс памяти по умолчанию для глобальной переменной
Здравствуйте! Прочитала такую вещь тут Вот что-то не укладывается мне в голове пункт 2 и...


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

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

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