С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Ri
48 / 11 / 1
Регистрация: 15.09.2011
Сообщений: 87
1

Ошибка в коде?

17.09.2015, 22:23. Показов 394. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Буду очень благодарна,если кто-нибудь поможет разобраться с моей программой (потугами на нее)))) Суть дела: программа должна вычислить D. Задаются параметры. Скрины формул и данных прикладываю. Код вот он:
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
#include <iostream>
#include <cstdlib>
#include <math.h>
#include <stdio.h>
using namespace std;
 
int main()
{
double b0=0;
double Ym=0;
double f=0;
double hm=0;
double D=0;
printf("\nPolutolshina sloya Ym = "); scanf("%lf", &Ym);
printf("\nRabochaa chastota f = "); scanf("%lf", &f);
printf("\nVisota sloya hm = "); scanf("%lf", &hm);
printf("\nUgol vihoda v gradusax b0 = "); scanf("%lf", &b0);
double temp=80.6*pow(10,12);
double f0=sqrt(temp);
double F=f/f0; //отношение рабочей частоты к критической
int re=6700;
double Rm=hm+re; //значение r, при котором концентрация максимальна
double r0=Rm-Ym; //начало слоя
double g=acos((re/r0)*cos(b0));
double A=1-(1/pow(F,2))+pow(r0/(F*Ym),2);
double B=-((2*Rm*pow(r0,2))/(pow(F,2)*pow(Ym,2)));
double C=pow((Rm*r0)/(F*Ym),2)-pow(re,2)*pow(cos(b0),2);
D=2*re*((g-b0)-((re*cos(b0)/2*sqrt(C)*log((B*B-4*A*C)/(4*C*((sin(g)+(sqrt(C)/r0)+(B/(2*sqrt(C))))*(sin(g)+(sqrt(C)/r0)+(B/(2*sqrt(C)))))))))); //расстояние скачка вдоль поверхности
printf("D = %lf \n",D);
return 0;
}
Заранее спасибо за то,что обратили внимание на мою тему))Не сердитесь,я просто ооочень давно не занималась написанием подобного( Должно получиться то,что в табличке в столбце D. При соответствующих данных. Но результат либо огромное число,либо NaN.
Миниатюры
Ошибка в коде?   Ошибка в коде?   Ошибка в коде?  

Ошибка в коде?   Ошибка в коде?   Ошибка в коде?  

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2015, 22:23
Ответы с готовыми решениями:

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде)
Задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать...

Ошибка с графикой в приложении Windows form (ошибка не в коде!)
Всем доброго времени суток! Написал программу в windows form. Несколько раз скомпилировал и все...

Ошибки в коде Qt - ошибка: undefined reference to `qMain(int, char**)'; ошибка: error: ld returned 1 exit status
Здравствуйте, есть проект в нем 2 ошибки, не очень понимаю как их можно решить. Помогите, буду...

Ошибка в коде CS0649. Не понятно почему выдает данную ошибку.Также ошибка в форме со словом ref
Код Класса using System; using System.Collections.Generic; using System.Linq; using...

6
Заблокирован
17.09.2015, 22:31 2
В строке 17 угол в градусах.
В строке 24 от него берется косинус. Там должны быть радианы.

Ну и дальше нужно смотреть.
Вы запустите в дебаге и отслеживайте, что выходит.
0
Ri
48 / 11 / 1
Регистрация: 15.09.2011
Сообщений: 87
17.09.2015, 22:44  [ТС] 3
Спасибо,сейчас попробую. Про радианы сначала сделала,но потом сама же удалила. То есть в 24й строчке под косинусом в радианы переводить?Верно?
C++
1
double g=acos((re/r0)*cos(b0*3.14/180));
Добавлено через 6 минут
Во всех местах где этот в градусах под косинусом видимо в радианы.
0
Заблокирован
17.09.2015, 22:55 4
Все тригонометрические функции берутся от радиан.
0
Ri
48 / 11 / 1
Регистрация: 15.09.2011
Сообщений: 87
17.09.2015, 23:02  [ТС] 5
Да,спасибо) Я то исправила это. Но,видимо,ошибка главная в другом) Ищу)
0
Заблокирован
17.09.2015, 23:55 6
Ищите:
- деление на 0
- корень из отрицательного числа
- возведение отрицательного числа в степень и другие проблемы с
pow:
If the base is finite negative and the exponent is finite but not an integer value, it causes a domain error.
If both base and exponent are zero, it may also cause a domain error on certain implementations.
If base is zero and exponent is negative, it may cause a domain error or a pole error (or none, depending on the library implementation).
The function may also cause a range error if the result is too great or too small to be represented by a value of the return type
0
Модератор
Эксперт С++
13721 / 10918 / 6478
Регистрация: 18.12.2011
Сообщений: 29,147
18.09.2015, 08:29 7
Цитата Сообщение от Ri Посмотреть сообщение
double temp=80.6*pow(10,12);
Вы не знаете, как записываются константы типа double?
C++
1
double temp=80.6e12;
Зачем #include <iostream> если программа написана на Си?

Цитата Сообщение от Ri Посмотреть сообщение
pow(F,2)
Это принято писать как F*F

формулу в строке 28 разбейте на части:
C++
1
2
3
double D=B*B-4.0*A*C;
double t1=sin(g)+sqrt(C)/r0+B/(2.*sqrt(C));
....
0
18.09.2015, 08:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2015, 08:29
Помогаю со студенческими работами здесь

Ошибка в коде (Ошибка сегментирования (core dumped)
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; string s; ...

Ошибка в коде и ошибка HTTP 400
Здарова всем, у меня тут проблема случилась, я только начинаю программировать. Выдает ошибку HTTP...

Ошибка в коде , ошибка 200
Всем привет, помогите пожалуйста, я новичек в Паскале, вот программа, суть её переводить любое...

В чём ошибка.В коде там где коментарий там ошибка поучается.
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class CMyString{ char *pStr;...


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

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