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

Движение планет в звёздной системе, методы isOrbitFree и Simulate работают неправильно - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выбрать студентов заданного пола, проживающих в общежитии (исправить код) http://www.cyberforum.ru/cpp-beginners/thread1121009.html
Здравствуйте. помогите пожалуйста исправить программу, не могу понять в чем дело нужно выбрать студентов заданного пола, проживающих в общежитии #include <iostream> #include <stdio.h> #include <conio.h> #include <string.h> using namespace std; const int n=5;
C++ Написать программу для динамического графического эфекта цифрового таймера Написать программу для динамического графического эфекта цифрового таймера Заранее большое спасибо http://www.cyberforum.ru/cpp-beginners/thread1121005.html
C++ Найти площадь и значение координаты y на эллипсе для заданного x
Здравствуйте. Подскажите пожалуйста, как исходя из данного задания найти площать и значение координаты y на эллипсе для заданного x? Создать класс ПАРА ЧИСЕЛ. Определить конструкторы, деструктор, функции доступа к полям, ввода-вывода. Создать производный класс ЭЛЛИПС с полями-радиусами. Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функции доступа к полям,...
Посоветуйте хорошую книгу по с++. C++
Посоветуйте пожалуйста какую-то хорошую книгу с++.
C++ Определить, удовлетворяет ли текст следующему свойству: Текст совпадает с каким то отрезком ряда 0123456789 (например: 2, 678, 89) http://www.cyberforum.ru/cpp-beginners/thread1120986.html
Задача В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству:Текст совпадает с каким то отрезком ряда 0123456789 (например: 2, 678, 89). Помоги те пожалуйста написать программу,заранее спасибо.)
C++ Как изменить значение в реестре? привет! Я новичек в с++, среда разработки - dev c++/ Помогите примером, мне нужно открыть необходимую ветку реестра и поменять значение в указанной строке. Как это можно реализовать? подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
17.03.2014, 08:42     Движение планет в звёздной системе, методы isOrbitFree и Simulate работают неправильно
Цитата Сообщение от greendaizer Посмотреть сообщение
второй вообще выводит какую-то неведомую ерунду, причём в (*it).orbit на момент выполнение метода содержится набор левых цифр вперемешку с буквами.
Если я правильно понял у вас круговыt орбиты и этот код:
C++
1
2
3
4
5
6
7
8
9
void StarSystem::simulate(double time)
{
 
  for(vector<Planet>::iterator it = planets.begin();it!=planets.end();it++)
  {
   (*it).place.x+=(*it).orbit*cos(time);
   (*it).place.y+=(*it).orbit*sin(time);
  }
}
означает вычисление координат каждой из планет в определенный момент времени. Если это так то по идее нужно избавится от оператора += и просто оставить =:
C++
1
2
3
4
5
6
7
8
9
void StarSystem::simulate(double time)
{
 
  for(vector<Planet>::iterator it = planets.begin();it!=planets.end();it++)
  {
   (*it).place.x=(*it).orbit*cos(time);
   (*it).place.y=(*it).orbit*sin(time);
  }
}
Теперь общие замечания по коду.
1) Не используйте постфиксный декремент если вам не нужно старое значение переменной. Лучше использовать префиксный.
2) Вы в каждом цикле вычисляете planets.end(). Это не разумно. Введите отдельный итератор и инициализируйте его значением planets.end():
C++
1
2
3
4
5
6
    vector<Planet>::iterator end =planets.end();
    //...
  for(vector<Planet>::iterator it = planets.begin();it != end; ++it)
  {
    //...
  }
P.S. Орбиты планет все-таки не круговые, а элипптические
 
Текущее время: 07:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru