Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 55
1

Не могу найти ошибку

25.03.2018, 23:37. Показов 904. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не высчитывается значение U_n и E_kvd_ot_r_n,точнее выдёт 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
 
int main(){
    setlocale(LC_CTYPE,"rus");
    double A = 5 * 1e9, n = 4, gamma = 3;
    double p_no = 7500;
    double L_no = 0.01;
    double D = 8000;
    double p_vv = 1600;
    long double R_0;
    double M_dv = 40;
    int vid_dv = 235;
    double R_no = 0.19;
    double Pi = 3.14 ;
    double r_vo;
    double r_no;
    double R_vo = R_no - L_no;
    long double U_n;
    double p_dv = 18700;
    double x = 0.05, y = 0.01, r_sh = pow(3 * M_dv / (4 * Pi * p_dv) , 1./3.);
    double r_n = r_sh + 1e-6,Ot = R_vo - x,Do = r_sh + y;
    double shag = (Do - Ot) / 5;
    double mass[6];
    int j=0; 
    cout << " ðàäèóñ øàðà =" << r_sh <<endl;
    cout << " Îò =" << Ot <<endl;
    cout << " Äî =" << Do <<endl;
    cout << " øàã = " <<shag<<endl;
    //Òàáëèöà çíà÷åíèé r_no.
    cout << "   r_no \n" << endl;
    r_no = Ot + shag;
    mass[0] = r_no;
    cout << "r_no (1) = "<< mass[0] << endl;    
    for ( int i = 1; i <= 5 ; i++){
        r_no += shag; 
        mass[i] = r_no;
        cout << "r_no ("<< i << ") = "<< mass[i] << endl;   
    }
    cout << " \n" << endl;
    for( int i = 0; i<= 5; i++){
    cout << "òî÷êà ¹" << i <<"\n"<<endl;
    // 1) Ðàññ÷èòûâàåì âåëè÷èíó R_0.
    double M_no = (4 / 3) * Pi * p_no * ( pow(R_no + L_no, 3) - pow(R_no,3));
    double M_vv = (4 / 3) * Pi * p_vv *( pow(R_no,3) - pow(mass[i],3));// Ìàññà ÂÂ.
    R_0 = (mass[i] * M_dv + Pi * p_vv * ( pow( R_no,4) - pow( mass[i],4)) + R_no * M_no) / (M_dv + M_no + M_vv);
    
    cout << " Ro = " << R_0 <<endl;
    // 2) Ðàà÷èòàåì U_n.
    double P_go = p_vv * pow(D,2) / (2 * (gamma + 1));
    double V_0 = (4 / 3) * Pi * (pow(R_0,3) - pow(mass[i],3));
    double V_ot_r_n = (4 / 3) * Pi *(pow(R_0,3) - pow(r_n,3));
    double r_v = pow( pow(r_n,3) - 3 * M_dv / (4 * Pi * p_dv) , 1./3.);
    double y_1 = y - 1;
    U_n = pow( (P_go * V_0 / (gamma - 1) * ( 1 - pow(V_0/V_ot_r_n, y_1)) / ((2 * Pi * p_dv * pow(r_n,3) * (r_n - r_v) / r_v) + ((2/5) * Pi * p_vv * V_0 / V_ot_r_n) * (pow (R_0,3)/6 + pow(R_0,2) * r_n/3 + R_0*pow(r_n,2)/2 -pow(r_n,3)))) , 1./2.);
    cout << " Uí = " << U_n <<endl;
    // 3) Ðàññ÷èòàåì Åêâä(r_í):
    double E_kvd_ot_r_n = 2* Pi * p_dv * pow(U_n,2) * pow(r_n,3) * (r_n - r_v) / r_v;
    cout << " Eêâä( r_í ) = " << E_kvd_ot_r_n <<endl;
    cout << " \n" << endl;
    }
    
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2018, 23:37
Ответы с готовыми решениями:

Найти слова, повторяющиеся более одного раза, не могу найти ошибку
#include &lt;iostream&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int...

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку)
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой...

Не могу найти ошибку!
Написал функцию &quot;Сортировка пузырьком&quot;, но почему то в конце функции выводит те же значения, что...

ошибку не могу найти(
не могу понять почему не считает((((( #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt;...

6
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
26.03.2018, 00:08 2
Отлаживай пpогpамму. В коде много иеpоглифов, мне кажется ни кто не будет из-за этого его изучать.

Добавлено через 31 секунду
Отлаживай и смотpи, на каком этапе пpогpамма начинает не так pаботать и изменяй этот кусочек кода
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
26.03.2018, 00:26 3
BladeMaster, убери все выводы, и сверху вниз поочередно их добавляй. А что эта программа делает?
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 55
26.03.2018, 00:28  [ТС] 4
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
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
 
int main(){
    setlocale(LC_CTYPE,"rus");
    double A = 5 * 1e9, n = 4, gamma = 3;
    double p_no = 7500;
    double L_no = 0.01;
    double D = 8000;
    double p_vv = 1600;
    long double R_0;
    double M_dv = 40;
    int vid_dv = 235;
    double R_no = 0.19;
    double Pi = 3.14 ;
    double r_vo;
    double r_no;
    double R_vo = R_no - L_no;
    long double U_n;
    double p_dv = 18700;
    double x = 0.05, y = 0.01, r_sh = pow(3 * M_dv / (4 * Pi * p_dv) , 1./3.);
    double r_n = r_sh + 1e-6,Ot = R_vo - x,Do = r_sh + y;
    double shag = (Do - Ot) / 5;
    double mass[6];
    int j=0; 
    cout << " радиус шара =" << r_sh <<endl;
    cout << " От =" << Ot <<endl;
    cout << " До =" << Do <<endl;
    cout << " шаг = " <<shag<<endl;
   //Таблица значений r_no.
    cout << "   r_no \n" << endl;
    r_no = Ot + shag;
    mass[0] = r_no;
    cout << "r_no (1) = "<< mass[0] << endl;    
    for ( int i = 1; i <= 5 ; i++){
        r_no += shag; 
        mass[i] = r_no;
        cout << "r_no ("<< i << ") = "<< mass[i] << endl;   
    }
    cout << " \n" << endl;
    for( int i = 0; i<= 5; i++){
    cout << "точка №" << i <<"\n"<<endl;
    // 1) Рассчитываем величину R_0.
    double M_no = (4 / 3) * Pi * p_no * ( pow(R_no + L_no, 3) - pow(R_no,3));
    double M_vv = (4 / 3) * Pi * p_vv *( pow(R_no,3) - pow(mass[i],3));
    R_0 = (mass[i] * M_dv + Pi * p_vv * ( pow( R_no,4) - pow( mass[i],4)) + R_no * M_no) / (M_dv + M_no + M_vv);
    
    cout << " Ro = " << R_0 <<endl;
    // 2) Расчитаем U_n.
    double P_go = p_vv * pow(D,2) / (2 * (gamma + 1));
    double V_0 = (4 / 3) * Pi * (pow(R_0,3) - pow(mass[i],3));
    double V_ot_r_n = (4 / 3) * Pi *(pow(R_0,3) - pow(r_n,3));
    double r_v = pow( pow(r_n,3) - 3 * M_dv / (4 * Pi * p_dv) , 1./3.);
    double y_1 = y - 1;
    U_n = pow( (P_go * V_0 / (gamma - 1) * ( 1 - pow(V_0/V_ot_r_n, y_1)) / ((2 * Pi * p_dv * pow(r_n,3) * (r_n - r_v) / r_v) + ((2/5) * Pi * p_vv * V_0 / V_ot_r_n) * (pow (R_0,3)/6 + pow(R_0,2) * r_n/3 + R_0*pow(r_n,2)/2 -pow(r_n,3)))) , 1./2.);
    cout << "Uн = " << U_n <<endl;
    // 3) Рассчитаем Еквд(r_н):
    double E_kvd_ot_r_n = 2* Pi * p_dv * pow(U_n,2) * pow(r_n,3) * (r_n - r_v) / r_v;
    cout << " Eквд( r_н ) = " << E_kvd_ot_r_n <<endl;
    cout << " \n" << endl;
    }
    
    return 0;
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.03.2018, 00:42 5
результаты будут неверные, т.к. используете целочисленное деление, например 4/3 и т.д.
0
5 / 5 / 6
Регистрация: 23.03.2018
Сообщений: 98
26.03.2018, 01:02 6
эт расчет колебаний каких-то?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.03.2018, 01:53 7
Лучший ответ Сообщение было отмечено BladeMaster как решение

Решение

BladeMaster, nan получается потому что извлекаете квадратный корень (используйте для него функцию sqrt которая работает быстрее) из отрицательного числа - выражение 1 - pow(V_0/V_ot_r_n, y_1)

Не забудьте везде исправить целочисленное деление.
1
26.03.2018, 01:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2018, 01:53
Помогаю со студенческими работами здесь

С++ не могу найти ошибку
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; typedef double TMatrix; typedef...

Не могу найти ошибку
Здравствуйте,столкнулся с такой проблемой ,нужно было написать программу,которая определяет...

Не могу найти ошибку
В общем написал программу , только не понимаю ошибок

Не могу найти ошибку
Задача: вывести элементы массива, которые повторяются ровно 2 раза #include &lt;cstdlib&gt; #include...

Не могу найти ошибку
Всем добрый день! Уже второй день бьюсь над одной ошибкой и никак не могу найти ее. Вот отрезок...

Не могу найти ошибку
#include &lt;iostream&gt; #include &lt;cmath&gt; #define N = 3 using namespace std; void vvodMatr(int a,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru