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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Anzu_1
0 / 0 / 0
Регистрация: 19.03.2014
Сообщений: 6
#1

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

19.03.2014, 12:32. Просмотров 229. Ответов 3
Метки нет (Все метки)

Программа расчета броска камня по Методу Рунге-Кутта. Выдает ошибку в классе вектор, не получается ее исправить. Программа в результате вычислений должна вывести следующие данные:
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++
Сабж: void vInit() { vInputing(); // Ввод вектора vector_Size = names.size(); cout &lt;&lt; &quot;Ваш вектор names: &quot;...

Программа расчета интеграла - C++
Программа расчет определенного интеграла по формулам Чебышева для случая семи узлов. Вообще не могу понять,ни в одном учебники не нашел...

Программа расчета по формуле - C++
#include &lt;iostream&gt; using namespace std; int main() { int a, y; cin &gt;&gt; a; y ==...

Программа расчета выражения - C++
Создать программу расчета математического выражения:

программа для расчета формул - C++
z=cosx*sinx z2=sin3x+sin2x+sinx

Программа расчета выгодности шантажистов - C++
Пишу программу, которая рассчитывает выгодность двух шантажистов. Смысл вот в чем. Вам дается кучка людей и предлагается выбрать среди них...

Программа расчета математического выражения - C++
Создать программу расчета математического выражения:

Программа для расчета логарифма - C++
Написать программу , которая считает логарифм , первое число основание , второе степень.

Программа для расчета энергии - C++
Народ помогите разобраться в чем дело. Вроде программа написана правильно, но работает не корректно. Компилил в dev c++. Привожу текст...

программа расчета и отображения накладной - C++
кто умеет такое решитьУпражнение 2.1. Напишите программу вычисления периметра и площади прямо-угольника. Длины сторон прямоугольника...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 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
322 / 305 / 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     Ошибка в коде. Программа расчета броска камня
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru