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

Перевести из Java на C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Странный код в лабе (динам. масиивы) http://www.cyberforum.ru/cpp-beginners/thread842187.html
Разве там не должен быть выход за пределы выделенной области? class Action : public MyArr { int *ptrnew; //float *fptrnew; int index; public: Action(int how_mh, int init);
C++ Debug(отображение кириллицы в консоли) проходим прогу дебаг,выводим свое имя,выводится на английском,какая програ будет выводить на русском,помогите пожалуйста) http://www.cyberforum.ru/cpp-beginners/thread842185.html
C++ ДП(Черепашка)
вырезано #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; int a; int ans; int main(int argc, char *argv) { int m,n,i,j;
C++ rand() генерирует 1 или 0
Доброго времени суток! Помогите, пожалуйста, нужно представить rand() так, что бы она выводила только значения 1 или 0. Можете на каком-то простеньком примере показать? Спасибо.
C++ Семестровая работа - дописать код http://www.cyberforum.ru/cpp-beginners/thread842181.html
В универе семестровую дали.. Неделю решаем с подругой.. Все не работает.. И до конца не дописана.. Посмотрите, может найдете ошибки.. Завтра в 13ч уже сдавать ее надо.. Вы наша последняя надежда..) #include <iostream> #include <fstream> #include <string.h> #include <locale.h> using namespace std; struct tNumbers
C++ В классе перегрузить операцию сложения Здравствуйте. Помогите кто сможет. Задание, нужно создать два прямоугольника, рисовать их не нужно, только создать ихние позоции (координаты x и y), так же ширину и высоту. Перегрузкой операции сложения, создать третий прямоугольник (его пизицию, ширину и высоту), позицией которого должна быть левая верхняя точка(приоритетнее точка которая левее), ширину и высоту, как я понял, нужно рассчитать... подробнее

Показать сообщение отдельно
Мега Ксю
 Аватар для Мега Ксю
3 / 3 / 0
Регистрация: 02.03.2013
Сообщений: 56
25.06.2013, 22:02  [ТС]     Перевести из Java на C++
Ребят, помогите пожалуйста.. не получается ничего..
Есть уравнение
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{d{v}_{d}}{dt} = \frac{eE}{m} - \frac{{v}_{d}}{\tau }

его надо как то решить методом Эйлера..

я делаю так.

1. Задаю время, допустим 10 секунд (time = 10)
2. Задаю шаг (step = 0.0001)
3. Нахожу количество точек N (N = time/step);
4. Задаю начальное условие vd = 0;

далее в цикле от 0 до N вычисляю значение vd
C++
1
vd = vd + step * ((e * E) / m - vd / tau);
и вывожу всё в файл.

для времени 10 сек и шаге 0,0001 получается такой выходной файл
Код
i * step	  Vd
0			      7.32601e+13
0.0001			-2.442e+22
0.0002			8.14001e+30
0.0003			-2.71334e+39
0.0004			9.04445e+47
0.0005			-3.01482e+56
0.0006			1.00494e+65
0.0007			-3.3498e+73
0.0008			1.1166e+82
0.0009			-3.722e+90
0.001			  1.24067e+99
0.0011			-4.13555e+107
0.0012			1.37852e+116
0.0013			-4.59506e+124
0.0014			1.53169e+133
0.0015			-5.10562e+141
0.0016			1.70187e+150
0.0017			-5.67291e+158
0.0018			1.89097e+167
0.0019			-6.30323e+175
0.002			  2.10108e+184
0.0021			-7.00359e+192
0.0022			2.33453e+201
0.0023			-7.78177e+209
0.0024			2.59392e+218
0.0025			-8.64641e+226
0.0026			2.88214e+235
0.0027			-9.60712e+243
0.0028			3.20237e+252
0.0029			-1.06746e+261
0.003			3.55819e+269
0.0031			-1.18606e+278
0.0032			3.95355e+286
0.0033			-1.31785e+295
0.0034			4.39283e+303
0.0035			-inf
0.0036			-nan
0.0037			-nan
0.0038			-nan
и далее всё также идет -nan
вот мой код
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
#include <iostream>
#include <vector>
#include <fstream>
 
static const double e = 1.6E-19;
static const double m = 1.092E-31;
static const double E = 500000;
static const double tau = 3E-13;
 
int main(int argc, char *argv[])
{
  double time;
  double step;
  double vd = 0;
  int k = 0, count = 1000;
 
  std::cout << "TIME -> ";
  std::cin >> time;
 
  std::cout << "STEP -> ";
  std::cin >> step;
 
  int N = time/step;
  
  std::ofstream file("data.txt");
  if (file.is_open())
  {
    file << "Кинетика. Задача 1\ntime = " << time << "\tstep = " << step << "\tN = " << N << "\n\ni * step\tVd\n";
    for (int i = 0; i < N; i++, k++)
    {
      vd = vd + step * ((e * E) / m - vd / tau);
      if (k = count)
      {
        file << i * step << "\t\t\t" << vd << "\n";
        k = 0;
      }
    }
  }
 
  file.close();
  
  return 0;
}
где могла быть ошибка, что получаются такое огромные числа? типа 4.39283e+303 и т.д.
 
Текущее время: 12:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru