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

Ошибка в коде. Программа расчета броска камня - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Игра крестики-нолики не пойму где ошибка http://www.cyberforum.ru/cpp-beginners/thread1123751.html
void instryk() { cout << "\t\tИгра крестики-нолики"; cout << "Правила игры\n"; cout << "Играют 2 игрока\n"; cout << "Пока один из игроков не соберёт выигрышную комбинацию\n"; cout << "Вид поля\n"; int l = 1; for (int i(0); i < 3; i++) {
C++ Передача в параметр многомерного массива произвольного размера Пусть, например, имеется функция void Gauss(double **a, double *b, size_t n, double *x) { size_t i; size_t j; size_t k; double s; double kof; for (i=0; i<n; ++i) { for (j=i+1; j<n; ++j) http://www.cyberforum.ru/cpp-beginners/thread1123739.html
Преобразовать массив, прибавив к четным числам первый элемент C++
Не получается решить задачу можете помочь что как нужно? Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам первый элемент. Первый элемент массива не изменять. Много мучаюсь #include<iostream> #include<stdio.h> #include<conio.h> main()
Swap для двунаправленного списка C++
Поменять просто значения узлов, не интересно. Я запутываюсь с ссылками. элементы могут быть заглавными или последними. struct node { int k; node *next; node *pred; };
C++ Составить программу, которая по дате рождения человека (день, месяц, год в числовой форме) вычисляет, сколько лет, недель и дней прожил человек http://www.cyberforum.ru/cpp-beginners/thread1123712.html
Составить программу, которая по дате рождения человека (день, месяц, год в числовой форме) вычисляет, сколько лет, недель и дней прожил человек по настоящую дату.
C++ Составить программу , которая содержит динамическую информацию о наличие автобусов в парке Составить программу , которая содержит динамическую информацию о наличие автобусов в автобусном парке . Сведения о каждом автобус включают : - номер автобуса ; - фамилия и инициалы водителя ; - номер маршрута . Программа должна обеспечивать : - начальное формирование данных о всех автобусы в парке в виде списка ; - при выезде каждого автобуса из парка вводится номер автобуса , и программа... подробнее

Показать сообщение отдельно
Anzu_1
0 / 0 / 0
Регистрация: 19.03.2014
Сообщений: 6
19.03.2014, 12:32     Ошибка в коде. Программа расчета броска камня
Программа расчета броска камня по Методу Рунге-Кутта. Выдает ошибку в классе вектор, не получается ее исправить. Программа в результате вычислений должна вывести следующие данные:
t=0.050000 x=0.050000 y=0.087738
t=0.100000 x=0.100000 y=0.150950
t=0.150000 x=0.150000 y=0.189637
t=0.200000 x=0.200000 y=0.203800
t=0.250000 x=0.250000 y=0.193437
t=0.300000 x=0.300000 y=0.158550
t=0.350000 x=0.350000 y=0.099137
t=0.400000 x=0.400000 y=0.015200
t=0.450000 x=0.450000 y=-0.093263

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
class vector{
   public:
   float x, y, vx, vy;
   vector(){
       x = 0;
       y = 0;
       vx = 0;
       vy = 0;
   }
   vector(float ax, float ay, float avx, float avy){
       x = ax;
       y = ay;
       vx = avx;
       vy = avy;
   }
   void out(){
       printf("x=%f\t", x);
       printf("y=%f\t", y);
       printf("vx=%f\t", vx);
       printf("vy=%f\t", vy);
   }
};
vector operator +(vector a, vector b){
   vector c;
   c.x = a.x + b.x;
   c.y = a.y + b.y;
   c.vx = a.vx + b.vx;
   c.vy = a.vy + b.vy;
   return(c);
}
vector operator -(vector a, vector b){
   vector c;
   c.x = a.x - b.x;
   c.y = a.y - b.y;
   c.vx = a.vx - b.vx;
   c.vy = a.vy - b.vy;
   return(c);
}
vector operator *(float a, vector b){
   vector c;
   c.x = a * b.x;
   c.y = a * b.y;
   c.vx = a * b.vx;
   c.vy = a * b.vy;
   return(c);
}
vector operator *(vector b, float a){
   vector c;
   c.x = a * b.x;
   c.y = a * b.y;
   c.vx = a * b.vx;
   c.vy = a * b.vy;
   return(c);
}
//В данном участке кода мы ввели класс под названием vector. У него есть 4 компонента: x, y, vx, vy. Далее мы ввели операции сложения и вычитания таких а также операции умножения вектора на число и числа на вектор.
//Функция F(U,t) для задачи с камнем:
vector F(vector U, float t){
   vector res;
   float g = 9.81;
   res.x = U.vx;
   res.y = U.vy;
   res.vx = 0;
   res.vy = - g;
   return(res);
}
//Главная часть программы, которая будет использовать этот код:
#include <stdio.h>
void main(){
   float t=0, dt = 0.05;
   float vx = 1, vy = 2;
   float x=0, y=0;
   vector U(x, y, vx, vy);
   vector k1, k2, k3, k4;
   while(U.y >= 0){
       k1 = F(U, t)*dt;
       k2 = F(U + 0.5*k1, t+0.5*dt)*dt;
       k3 = F(U + 0.5*k2, t+0.5*dt)*dt;
       k4 = F(U + k3, t+dt)*dt;
       U = U + 1.0/6.0 * (k1 + 2*k2 + 2*k3 + k4);
       t += dt;       
       printf("t=%f   x=%f  y=%f\n", t, U.x, U.y);
   }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru