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

Метод класса с копией объекта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отнимание двух double http://www.cyberforum.ru/cpp-beginners/thread1834795.html
Решил помочь с задачей в одной теме и наткнулся на одну неведомую мне особенность: при отнимании двух double получается черт знает что. Объясните пожалуйста почему так получается или где ошибка в коде и как исправить. #include <iostream> #include <locale> #include <Windows.h> using namespace std; double factorial(int a) { if (a == 0) return 1;
C++ Найти строку массива, в которой меньше всего перемен знака с минуса на плюс Заполните двумерный числовой массив A целыми числами. Найти строку массива, в которой меньше всего перемен знака с минуса на плюс или с плюса на минус и вывести эту строку отдельно. Есть идеи как можно организовать поиск перемен знака с минуса на плюс? в голову ничего не приходит :( #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <conio.h> #include "iostream" #include... http://www.cyberforum.ru/cpp-beginners/thread1834781.html
Выделить в функцию прорисовку круга C++
Помогите выделить в функцию прорисовку круга,а именно вот эту часть for (int j = 0; j < phi; j++) { float x = rad * cos(Pi*j / 180); float y = rad * sin(Pi*j / 180); MoveToEx(hDeviceContext, center.X, center.Y, NULL);//устанавливаем перо в точку с координатами (x1,y1) LineTo(hDeviceContext, center.X + x, center.Y + y);//рисуем линию из точки (x1,y1) в точку (x2,y2) }
Написать программу вычисления функции С++ с ветвлением C++
Помогите написать программу, пожалуйста. Не разобрала эту тему, а времени совсем нет :(
C++ Программа выводит числа с указаного интервала которые делятся на 4 но не делятся на 6 http://www.cyberforum.ru/cpp-beginners/thread1834763.html
Программу создал, она работает, но на определенном интервале где нет таких чисел нужно чтобы выводилось "на этом интервале нет таких чисел Код программы #include "stdafx.h" #include <iostream> #include <conio.h> #include <locale> using namespace std; int _tmain(int argc, _TCHAR* argv)
C++ Программирование циклов while, for, do.while Всем доброго времени суток! Помогите пожалуйста с задачей условия таковы: Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и Y(x)-S(x) и вывести в виде таблицы. Значения а, b, h и n вводятся с клавиатуры. Т.к. значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений... подробнее

Показать сообщение отдельно
KaRleone
5 / 5 / 1
Регистрация: 24.08.2013
Сообщений: 64
Завершенные тесты: 1

Метод класса с копией объекта - C++

26.10.2016, 01:44. Просмотров 379. Ответов 25
Метки (Все метки)

Есть класс. Есть метод, который вычисляет одно из полей класса, оперируя другими, но при этом эти другие поля он изменяет. Для того, чтобы этого избежать, я создал копию объекта внутри метода (операции проводятся над двумерным динамическим массивом), чтобы все преобразования осуществлялись внутри этой копии и не портили начальный объект. Однако, в ходе выполнения программы поля объекта как раз меняются. Как избежать изменений внутри объекта?

Добавлено через 6 минут
Цитата Сообщение от KaRleone Посмотреть сообщение
Для того, чтобы этого избежать
"этого" - изменения других полей

Добавлено через 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
void fdet()
    {
        determ = 1;
        MATRIX *r(this);
        double b;
        for (int i = 0; i < a; i++)
        {
            for (int j = i + 1; j < a; j++)
            {
                if (!r->values[i][i])
                {
                    if (!r->values[i][j]) b = 0;
                    else
                    {
                        dtt = 0;
                        return;
                    }
                }
                else b = r->values[j][i] / r->values[i][i];
                for (int k = 0; k < a; k++)
                    r->values[j][k] = r->values[j][k] - r->values[i][k] * b;
            }
            determ *= r->values[i][i];
            dtt = 1;
        }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru