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

Отладчик VS показывает разные значения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить наличие объекта класса http://www.cyberforum.ru/cpp-beginners/thread1160319.html
Есть класс. Можно ли как-то узнать, есть ли уже созданный объект этого класса? Как?
C++ Определить объединение из двух полей. Первое поле - массив из четырех байт, второе - двойное слово Определить объединение из двух полей. Первое поле - массив из четырех байт, второе - двойное слово. Ввести случайное число в диапазоне от 20 до 50. Округлить его до ближайшего целого, кратного 6. Переставить байты таким образом, чтобы на месте 1-го байта был 4, на 2-ом месте был 1-ый, на 3-ем был 2-ой, на 4-ом был 3 байт. Вывести число в шестнадцатеричном виде до перестановки и после нее. http://www.cyberforum.ru/cpp-beginners/thread1160307.html
Матрица действительных чисел C++
Дана матрица действительных чисел размера m*n. Переформировать матрицу таким образом, чтоб ее строки располагались в порядке невозрастания сумм модулей нечетных элементов строк.
C++ Задать полярные координаты точек по правилу
Задать последовательно полярные координаты точек по следующему правилу: D=1000, 2000, 3000 P=3.1415/3, 2*3.1415/3, 3.1415. Записать в файл значения D, P, и декартовых координат X, Z для этих трех точек.
C++ Заданы длины сторон треугольника. Определить, является ли он равнобедренным http://www.cyberforum.ru/cpp-beginners/thread1160292.html
Прошу помощи! Заданы длины сторон треугольника. Определить, является ли он равнобедренным.
C++ Из текстового файла считать слова и превратить их в линейный список помогите написать программу а то я даже не знаю что делать.Нужно из текстового файла считать слова и превратить их в линейный список (или стек или очередь). подробнее

Показать сообщение отдельно
WinRar007
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
28.04.2014, 20:15  [ТС]     Отладчик VS показывает разные значения
Дело в том, что раньше всё было нормально. Но после очередной доработки всё пошло как-то не так. Я, если честно, уже начинаю сомневаться, что это конкретно от моего алгоритма, ведь там нет ничего сложного:
До:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (Length <= Radius)
                    {
                        cout << "Столкновение тела № " << i << " и тела № " << i2 << "(Classic)" << endl;
                        if (Bodies[i]->Mass <= Bodies[i2]->Mass)
                        {
                            Bodies[i2]->SumB(Bodies[i]);
                            DelFromRander(i);
                            //Del = 1;
                        }
                        else
                        {
                            Bodies[i]->SumB(Bodies[i2]);
                            DelFromRander(i2);
                            //Del = 2;
                        }
                        if (i > i2)
                        {
                            i--;
                        }
                        break;
                    }
После:
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
for (float Num = 0; Num <= 10; Num++)
                                {
                                    Length = sqrt(pow(Bodies[i]->X - Bodies[i2]->X, 2)
                                        + pow(Bodies[i]->Y - Bodies[i2]->Y, 2));
                                    Radius = Bodies[i]->R + Bodies[i2]->R;
                                    if (Length <= Radius)
                                    {
                                        cout << "Столкновение тела № " << i << " и тела № " << i2 << "(New)" << endl;
                                        if (Bodies[i]->Mass <= Bodies[i2]->Mass)
                                        {
                                            Bodies[i2]->SumB(Bodies[i]);
                                            DelFromRander(i);
                                            Del = 1;
                                        }
                                        else
                                        {
                                            Bodies[i]->SumB(Bodies[i2]);
                                            DelFromRander(i2);
                                            Del = 2;
                                        }
                                        if (i > i2)
                                        {
                                            i--;
                                        }
                                        //break;
                                    }
                                    if(!(Del == 1))
                                    {
                                        Movement(T / 10, i);
                                    }
                                    if (!(Del == 2))
                                    {
                                        Movement(T / 10, i2);
                                    }
                                }
Код процедуры SumB:
C++
1
2
3
4
5
6
7
8
9
void SumB(Body *b2) //Слияние объектов
    {
        Velocity.x = ((Mass * Velocity.x) + (b2->Mass*b2->Velocity.x)) / (Mass + b2->Mass);
        Velocity.y = ((Mass * Velocity.y) + (b2->Mass*b2->Velocity.y)) / (Mass + b2->Mass);
        Mass = Mass + b2->Mass;
        R = sqrt(sqrt(abs(Mass))) * 2;
        X = X - ((X - b2->X) / 2);
        Y = Y - ((Y - b2->Y) / 2);
    }
Добавлено через 2 минуты
Раньше они были СОВСЕМ непогрешны, но после цикла...
Процедура Movement сводится к простому перемещению тела, и я её не стал описывать.

Добавлено через 1 минуту
Может у них разная область видимости.
Что это означает. Си++ месяц изучаю.
 
Текущее время: 23:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru