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

Почему при компилировании программы со вторым экземпляром класса изменяются значения первого? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена слова в строке http://www.cyberforum.ru/cpp-beginners/thread1137071.html
Задание: ввести с клавиатуры строку + слово, которое нужно заменить + слово, на которое нужно заменить. Вывести на экран новый вариант строки с измененным словом. Объясните, пожалуйста, как это делается. Только если можно без STL и векторов, а с помощью обычных циклов и стандартных функций работы со строками. Пока догадываюсь, что нужно исходную строку разделить на отдельные слова и...
C++ Объекты cin, cout, endl и т.п Вопрос. Можно ли использовать эти объекты по умолчанию или одной командой? Типа: using std::"все объекты" Лень каждый раз напомнит что использую тот или иной объект. Или как они там называются ( я только начинаю изучать с++) Потом я не знаю сколько их там. Если там в библиотеке объектов несколько десятки то это здорово увеличит "вес" программы. Я не страиваю алгоритмы. Даже когда... http://www.cyberforum.ru/cpp-beginners/thread1137038.html
Сравнение строк C++
Напишите программу, которая предлагает пользователю ввести две строки, а затем сравнивает их, игнорируя "регистровые" различия, т.е. прописные и строчные буквы ваша программа должна воспринимать как одинаковые.
Printf() - Cout C++
Простой вопрос. Как заменить printf ("%09d", a); на cout?
C++ Программа для расчета по двум формулам. VS http://www.cyberforum.ru/cpp-beginners/thread1136993.html
Написать программу для расчета по двум формулам Z1= (cos(α)+sin(α))/(cos(α)-sin(α)) Z2=tg2α + sec2α Да, и что такое sec? Спасибо, кто поможет..
C++ Составить программу построения рисунка Составить программу построения рисунка подробнее

Показать сообщение отдельно
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245

Почему при компилировании программы со вторым экземпляром класса изменяются значения первого? - C++

02.04.2014, 16:39. Просмотров 207. Ответов 3
Метки (Все метки)

Здравствуйте.
Вопрос: почему при компилировании программы со вторым экземпляром класса изменяются значения первого?
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace SALES {
        const int QUARTERS = 4;
        class Sales {
        private:
                double sales[QUARTERS];
                double average;
                double max;
                double min;
        public:
                Sales() {
                        average = max = min = 0;
                }
                Sales(const double*, const int);
                ~Sales() {
                }
                void show() const;
        };
}

Кликните здесь для просмотра всего текста
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
#include "sales.hxx"
#include <iostream>
 
namespace SALES {
    Sales::Sales(const double ar[], const int n) {
        int i = 0;
        for (; i < n; i++)
            sales[i] = ar[i];
        i = 0;
        double curmax = .0, absmax = .0, curmin = .0, absmin = .0;
        while (sales[i+1]) {
            if (sales[i] > sales[i+1]) {
                curmax = sales[i];
                if (curmax > absmax)
                    absmax = sales[i];
            }
            i++;
        }
        i = 0;
        while (sales[i+1]) {
            if (sales[i] < sales[i+1]) {
                curmin = sales[i];
                if (curmin < absmin || absmin == 0)
                    absmin = sales[i];
            }
            i++;
        }
        i = 0;
        double val = .0;
        while (sales[i]) {
            val += sales[i];
            i++;
        }
        val = val / i;
        average = val;
        max = absmax;
        min = absmin;
    }
 
    void Sales::show() const {
        std::cout << "avg: " << average << std::endl;
        std::cout << "max: " << max << std::endl;
        std::cout << "min: " << min << std::endl;
    }
}

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "sales.hxx"
 
namespace {
    const int SIZE = 4;
    double array[SIZE] = {2223.7, 2893.89, 2090.1, 2149.7};
}
 
int main()
{
    SALES::Sales X(array, SIZE);
    X.show();
    //SALES::Sales Y;
    //Y.show();
    return 0;
}


Речь идет об Y.

Добавлено через 2 минуты
С закомментированными последними строчками результат:
avg: 1559.56
max: 2893.89
min: 2090.1


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