Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Aleksandr2468
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 5
#1

Вычисления значений функций

15.09.2015, 13:15. Просмотров 501. Ответов 20
Метки нет (Все метки)

Мне была поставлена задача - вычислить значение функции.

http://www.cyberforum.ru/cgi-bin/latex.cgi?F(x)=\begin{cases}<br />
-x^2-9 & \text{ , } x \ge 13 \\ <br />
-\frac{1}{x^2+9} & \text{ , } x \lt 13<br />
\end{cases}

Программа вроде правильно работает, но не считает "0" - пишет "-inf".
В чем может быть проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<conio.h>
#include <math.h>
main()
{
float x,result;
printf("Vvedite X => ");
scanf("%f", &x);
if(x>=13)
printf("Rezul'tat: %f", -(pow(x,2)*-1)-9);
else
if(x<=13)
printf("Rezul'tat: %f", -(1/pow(x,2)+9));
getch();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2015, 13:15
Ответы с готовыми решениями:

Вычисления значений рядных функций
Помогите написать программу для вычисления значения функции(в аттаче)....

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

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

Сотавьте программу для вычисления таблицы значений функций
Здравствуйте посмотрите пожалуйста верно ли я составил программу для задачи:...

Передача значений функций в главную программу, вызов функций
Здравствуйте! Скорее всего, неправильно передаю значения функциям и в главную...

20
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 13:26 #2
Ну во первых if(x<13) там же строго меньше
и во вторых запись не понял -(pow(x,2)*-1)-9)
и в третьих scanf("%f", &x); точно дробные числа
0
nonedark2008
1036 / 773 / 215
Регистрация: 28.07.2012
Сообщений: 2,154
15.09.2015, 13:27 #3
Цитата Сообщение от Aleksandr2468 Посмотреть сообщение
Программа вроде правильно работает
Ты ошибаешься.
Цитата Сообщение от Aleksandr2468 Посмотреть сообщение
В чем может быть проблема?
Проблема в скобочках.
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 13:31 #4
Попробуй введи 0.0, почему у тебя везде %f
0
Даценд
Модератор
Эксперт .NET
4134 / 3927 / 2597
Регистрация: 20.04.2015
Сообщений: 7,119
15.09.2015, 13:36 #5
Исправьте:
первое выражение: -pow(x,2)-9
второе: -1/(pow(x,2)+9)
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 13:38 #6
printf("Rezul'tat: %f", -(pow(x,2))-9);
else
if(x<=13)
printf("Rezul'tat: %f", -(1/(pow(x,2)+9)));
getch();
return 0;
Скобки добавь во втором условии а в первом подправь
Так как идет деление на ноль вот тебе и инф, а тогда уже комплексные числа
0
nonedark2008
1036 / 773 / 215
Регистрация: 28.07.2012
Сообщений: 2,154
15.09.2015, 13:46 #7
Цитата Сообщение от Игорь1986 Посмотреть сообщение
а тогда уже комплексные числа
Не вводи людей в заблуждение, это не так.
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 13:52 #8
Та ладно деление на ноль можно обойти только комплексными числами
0
Даценд
Модератор
Эксперт .NET
4134 / 3927 / 2597
Регистрация: 20.04.2015
Сообщений: 7,119
15.09.2015, 13:56 #9
Цитата Сообщение от Игорь1986 Посмотреть сообщение
деление на ноль можно обойти только комплексными числами
нельзя
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 13:57 #10
Вспомните вышку умники, вы неправы никак
0
nonedark2008
15.09.2015, 14:01
  #11

Не по теме:

Цитата Сообщение от Игорь1986 Посмотреть сообщение
Вспомните вышку умники, вы неправы никак
Приведи доказательство.

0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 14:08 #12
Я думаешь помню курс матана, я заканчивал кафедру пм и ты неправ
Ну вот из википедии
В расширенной комплексной плоскости делить на ноль можно. Это связано с тем, что в ней бесконечность — не предельно-недостижимое значение, а вполне конкретная точка, соответствующая точке (0, 0, 1) в стереографической проекции. Правда, при этом подобное множество внезапно перестает быть полем, но это мало кого волнует.

Добавлено через 6 минут
числа с плавающей запятой делить на ноль можно
0
nonedark2008
15.09.2015, 14:11
  #13

Не по теме:

Цитата Сообщение от Игорь1986 Посмотреть сообщение
расширенной комплексной плоскости
Ха, расширить ты можешь и целочисленную алгебру, определив там операцию деления на 0.
Но что бы не делалось, оно будет противоречить стандартному определению операции деления, как обратной к умножению.

0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 14:13 #14
А я тебе не говорил про стандартное деление, а про применение комплексных чисел, для того чтобы возможно было разделить на ноль
0
nonedark2008
15.09.2015, 14:29
  #15

Не по теме:

Цитата Сообщение от Игорь1986 Посмотреть сообщение
про применение комплексных чисел, для того чтобы возможно было разделить на ноль
Такое же можно применить и к любому множеству чисел. Стоит только расширить их понятие.
Но кто сказал, что это применимо к конкретной задаче?
Будет у человека следующим шагом поиск обратного значения функции,
ну умножит он бесконечность на ноль, ну получит он NaN, NaN ведь тоже относится к числам с плавающей запятой согласно стандарту.

0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 14:31 #16
Ну ты же читал, что я написал, что деление на ноль дает бесконечность либо инфинити, а тогда если надо разделить применяй комплексные числа, в чем я неправ
0
zss
Модератор
Эксперт С++
7102 / 6630 / 4199
Регистрация: 18.12.2011
Сообщений: 17,490
Завершенные тесты: 1
15.09.2015, 14:33 #17
Игорь1986, А где Вы увидели деление на ноль?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
main()
{
   cout<<"Vvedite X => ");
   double x;cin>>x;
   cout<<"Rezul'tat: ";   
   if(x>=13.0)
      cout<<-x*x-9.0; // здесь деления нет
   else
      cout<<-1./(x*x+9.);// здесь знаменатель всегда больше 9
   cout<<endl;
   system("pause");
   return 0;
}
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 14:37 #18
printf("Rezul'tat: %f", -(1/pow(x,2)+9));
вот вам деление на ноль, я увидел его в исходном варианте, а не переделанном
-(1/0+9)
а по вашей строке
cout<<-1./(x*x+9.);// здесь знаменатель всегда больше 9
не всегда больше а может быть и равен 9 воть
0
nonedark2008
15.09.2015, 14:48
  #19

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
// здесь знаменатель всегда больше 9
Ну, если применить комплексные числа....
Цитата Сообщение от Игорь1986 Посмотреть сообщение
если надо разделить применяй комплексные числа
Я могу так поделить и не применяя комплесные числа.
В компиляторе бесконечность - это чистая условность для чисел, которые не помещаются в используемый тип данных.
Не спорю, что в некоторых задачах это может быть удобно, но только если конкретная задача позволяет это делать.

0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,031
Завершенные тесты: 1
15.09.2015, 14:54 #20
Я с вами спорил потому что вы отвергли категорично мое мнение, если бы вы сказали, можно не только так, я бы не спорил, а так говорю все вроде правильно и про знаменатель тоже
0
15.09.2015, 14:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2015, 14:54

Вычислить и распечатать таблицу значений заданных функций для указанных значений
для всех х, меняющихся с шагом hx=0.5 и всех y, меняющихся с шагом hy=0,25...

Перегрузка функций вычисления площади треугольника
Есть 11 функций которые считают площадь треугольника. Каждая по отдельной...

Написать программу вычисления одной из функций
Задача в С++ C=\begin{cases} f^2(x)+\sqrt{x}+sin(y) &amp; \text{ , } x-y=0 \\ ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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