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

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

Восстановить пароль Регистрация
 
Anzu_1
0 / 0 / 0
Регистрация: 19.03.2014
Сообщений: 6
19.03.2014, 12:32     Ошибка в коде. Программа расчета броска камня #1
Программа расчета броска камня по Методу Рунге-Кутта. Выдает ошибку в классе вектор, не получается ее исправить. Программа в результате вычислений должна вывести следующие данные:
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);
   }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 12:32     Ошибка в коде. Программа расчета броска камня
Посмотрите здесь:

программа расчета и отображения накладной C++
программа для расчета формул C++
C++ Программа расчета интеграла
C++ Программа расчета по двум формулам
C++ Программа расчета математического выражения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
19.03.2014, 12:37     Ошибка в коде. Программа расчета броска камня #2
Цитата Сообщение от Anzu_1 Посмотреть сообщение
Выдает ошибку в классе вектор
Что за ошибка? Куда конкретно указывает?
Anzu_1
0 / 0 / 0
Регистрация: 19.03.2014
Сообщений: 6
19.03.2014, 15:00  [ТС]     Ошибка в коде. Программа расчета броска камня #3
Вот лог ошибок
C:\Users\Loa\Documents\Untitled111.cpp In member function 'void vector::out()':
17 26 C:\Users\Loa\Documents\Untitled111.cpp [Error] 'printf' was not declared in this scope
C:\Users\Loa\Documents\Untitled111.cpp At global scope:
68 11 C:\Users\Loa\Documents\Untitled111.cpp [Error] '::main' must return 'int'
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
19.03.2014, 15:01     Ошибка в коде. Программа расчета броска камня #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Anzu_1,
C++
1
#include <cstdio>
и смените у функции main void на int.
а отчего б не использовать для вывода std::cout?
Yandex
Объявления
19.03.2014, 15:01     Ошибка в коде. Программа расчета броска камня
Ответ Создать тему
Опции темы

Текущее время: 16:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru