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

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

Восстановить пароль Регистрация
 
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
26.01.2012, 19:03     Избавиться от глобальной переменной #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
#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 и выполнить передачу параметров по значению?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
26.01.2012, 19:06     Избавиться от глобальной переменной #2
Её надо объявить динамической. Так:
C++
1
2
3
4
5
int * Glob;
Glob = new int;
                          //Ипользуете глобальную переменную Glob
delete Glob;          //Избавляемся, но учитываем что указатель остается
Glob = NULL;         //Да что бы меньше косяков в дальнейшем было
YouDoItWrong
46 / 46 / 7
Регистрация: 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 );
}
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
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)
{
    //...
}
Yandex
Объявления
26.01.2012, 19:11     Избавиться от глобальной переменной
Ответ Создать тему
Опции темы

Текущее время: 14:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru