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

Dev C++. Проблема с вычислением

04.11.2020, 21:27. Показов 1473. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, столкнулся с проблемкой:
При вводе любого значения х первое выражение: t1=0 всегда. Как это можно исправить


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
#include <iostream> 
#include <conio.h>
#include <math.h>
#include <iomanip>
#include <stdio.h.>
using namespace std;
 
int main ()
 
 
 
{
setlocale(LC_ALL, "Russian");
 
 float x,t1,t2;
 const double a=10.25,b=3.25;
 
 
cout<<"x= "; 
cin>>x; 
cout<<setprecision(3);
 
 if (x==0)
 {
 cout<<"Ошибка! Деление на 0"<<"\n";
 getch();
 return 1;
    
 }
 if((a+x)/(a-x)<0) cout<<"Ошибка! При вычислении t1 под логарифмом меньше 0"<<"\n";
  else
  
 {
    t1=1/6*pow(a,3)*log((a+x)/(a-x))+1/2*pow(a,3);
    cout<<"t1 = "<<t1<<"\n"; printf("             У t1 всегда получается 0\n");
 }
  
  if(tan(a*x+b)/tan(a*x-b)<0) cout<<"Ошибка! При вычислении t2 под логарифмом меньше 0"<<"\n";
   else
  
  {
    t2=1/a*b*log(tan(a*x)+b/tan(a*x)-b);
    cout<<"t2 = "<<t2<<endl; 
}
 
  getch();
return 0; 
 
}
Изображение этих двух отдельных выражений прикрепил.
Миниатюры
Dev C++. Проблема с вычислением  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2020, 21:27
Ответы с готовыми решениями:

Странная проблема с вычислением
В конце программы, в цикле, в мейне: sX2 и sY2 становятся равными sX1 и sY1, из за того, что sR...

Проблема с вычислением переменной, и использование pow
Появилась проблема с вычислением переменной ModZ(в одной функции вычисления идет без проблем, а с...

Проблема с Dev-C++ 5.11
Здравствуйте, проблема заключается в изменении переменной num, после последующего умножения, при...

Проблема с вычислением
Программа почему-то считает что 0 + 0 не может = 0, не понимаю что не так; много попыток было...

6
264 / 183 / 87
Регистрация: 03.05.2020
Сообщений: 790
04.11.2020, 21:30 2
mrgig, в сторонке посчитайте сколько будет 1/6 и 1/2, не говорите что "по формуле же", а именно посчитайте
2
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.11.2020, 21:47 3
Цитата Сообщение от mrgig Посмотреть сообщение
1/6
= 0. Первая заповедь сишника.
Лечится точкой 1./6
Но эксперимент, предложенный уважаемым AnyKey, обязательно проделайте!

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от mrgig Посмотреть сообщение
столкнулся с проблемкой:
Не ты первый. Увы! - и не последний

1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.11.2020, 00:53 4
Лучший ответ Сообщение было отмечено mrgig как решение

Решение

кроме того, что сказано выше (целочисленное деление) пропущены скобки
Цитата Сообщение от mrgig Посмотреть сообщение
1/6*pow(a,3)
1./(6.*pow(a,3))
Цитата Сообщение от mrgig Посмотреть сообщение
1/2*pow(a,3)
1./(2.*pow(a,3))
Цитата Сообщение от mrgig Посмотреть сообщение
log(tan(a*x)+b/tan(a*x)-b)
log((tan(a*x)+b)/(tan(a*x)-b))

в общем, держите:
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main ()
{
    const double a=10.25, b=3.25, eps=1e-9;
    double x, u, tg, t1, t2;
    
    cout << "x="; cin >> x;
    
    if(x!=a && (a+x)/(a-x)>eps) 
    {
        u=a*a*a;
        t1=log((a+x)/(a-x))/(6.*u)+1./(2.*u);
        cout << "t1=" << t1 << "\n";
    }    
    else cout << "t1 not determined\n";
 
    if((cos(a*x)<-eps || cos(a*x)>eps) && (tan(a*x)+b)/(tan(a*x)-b)>eps) 
    {
        tg=tan(a*x);
        t2=log((tg+b)/(tg-b))/(a*b);
        cout << "t2=" << t2 << "\n"; 
    } 
    else cout << "t2 not determined\n";
    
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 04.11.2020
Сообщений: 7
05.11.2020, 12:15  [ТС] 5
Всем спасибо большое. По поводу eps, даже не знал, что есть подобная команда, которая позволяет определить значение достаточно близкое к нулю, я пробывал float вводить вместо double и в setprecision выше кол-во значений после запятой ставить, но ничего не помогало. Еще раз спасибо!

Добавлено через 8 минут
Только у меня один вопрос а почему именно взята -9 у eps=1e-9???
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
05.11.2020, 12:17 6
Цитата Сообщение от mrgig Посмотреть сообщение
почему именно взята -9 у eps=1e-9???
От фонаря. Просто маленькое число. = 0.000000001
0
0 / 0 / 0
Регистрация: 04.11.2020
Сообщений: 7
05.11.2020, 12:19  [ТС] 7
Ну да, по дефолту у eps -12 стоит)
0
05.11.2020, 12:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2020, 12:19
Помогаю со студенческими работами здесь

Проблема с вычислением функции
При вычислении функции от угла фи=90deg,91deg..810deg последнее число почему-то становится...

Проблема с вычислением предела
\lim_{x \rightarrow \infty } (x-\sqrt{(x-2)(x^{2}-4x+1)}) Чтобы избавиться от неопределённости ,...

Проблема с вычислением скидки
function calculate_price($cart) { $price = 0.0; $disc = 0; if(is_array($cart)) { ...

Проблема при запуске ubuntu: /dev/nvme0n1p7: clean
Какова природа этой проблемы и как её устранить?

Ищу драйверы для ven-8086 dev-2804 и ven-14F1 dev-5069
Можете дать ссылки на скачку таких драйверов,их ID: 1.ven-8086 dev-2804 2.ven-14F1 dev-5069

Запрос с вычислением
Помогите пожалуйста! Вывести список рейсов, километраж которых более чем на 20% превышает...


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

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