Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Sheol
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18
1

Исправление ошибки

20.09.2015, 17:58. Просмотров 510. Ответов 10
Метки нет (Все метки)

Здравствуйте. Не могу понять, в чем заключается ошибка кода и как ее решить. Помогите, пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
    float d = 4.4; //значение первой переменной (третья функция)
    float b = -2.5; //значение второй перемнной (третья функция)
    float c = 0.15; //значение третьей переменной (третья функция)
    float y = -0.1; //значение четвертой переменной (третья функция)
    float F3; //значение функции
    F3 = sqrt(abs(b*y))*log10(sqrt(2 * abs(y)) + c*pow(y, 2) - exp(-d*y))*pow(10, 6); //введение третьей функции
    float result = F3;
    printf("Result: %0.5f\n", result); //точность - 5 знаков после запятой
    _getch();
}
Выдает это:
Ошибка C4578 'abs': conversion from 'float' to 'int', possible loss of data (Did you mean to call 'fabsf' or to #include <cmath>?)

Ругается на эту строчку
C++
1
F3 = sqrt(abs(b*y))*log10(sqrt(2 * abs(y)) + c*pow(y, 2) - exp(-d*y))*pow(10, 6);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2015, 17:58
Ответы с готовыми решениями:

исправление ошибки
задание:напишите программу, которая считывает строку символов, выбирает числа...

Исправление ошибки
Добрый день, ув. форумчане! Помогите, пожалуйста, исправить ошибку. Не пойму в...

Исправление ошибки
Как сделать в else чтобы число n генерировалось заново,если числа n и m не...

Исправление ошибки в программе
Задача напечатать таблицу значений в виде |N | x | S(x) | F(x) | Х изменяется...

Исправление ошибки. Строки С++
Помогите, пожалуйста, с решением следующей задачи: Пусть имеется словарь,...

10
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
20.09.2015, 18:12 2
fabs() используй и выбрось float - только double.
1
Sheol
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18
20.09.2015, 18:19  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
fabs() используй и выбрось float - только double.
Выкинуть все float или в каком-то конкретном месте? И в каком месте использовать fabs()?
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
20.09.2015, 18:33 4
Везде используй double. fabs() использовать вместо abs(). Последний для целых чисел.
1
Sheol
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18
20.09.2015, 18:40  [ТС] 5
Некорректно работает. Выдает: "Result: -nan(ind)"
0
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,631
Завершенные тесты: 1
20.09.2015, 19:01 6
А это, что за изыск?
Цитата Сообщение от Sheol Посмотреть сообщение
*pow(10, 6)
такая константа записывается так: 1e6
1
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
20.09.2015, 19:01 7
У тебя в логарифме отрицательное число -1.10399.
Это pow(10, 6) записвается как 1E6.
1
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,631
Завершенные тесты: 1
20.09.2015, 19:02 8
Цитата Сообщение от Sheol Посмотреть сообщение
pow(y, 2)
Это пишем так: y*y
1
Sheol
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18
20.09.2015, 19:21  [ТС] 9
Цитата Сообщение от zss Посмотреть сообщение
Это пишем так: y*y
Попытался, все равно не работает.

Цитата Сообщение от nmcf Посмотреть сообщение
У тебя в логарифме отрицательное число -1.10399.
Это pow(10, 6) записывается как 1E6.
И это тоже попробовал, результат все тот же - -nan(ind). Даже все числа на нули заменял, безрезультатно.
0
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,631
Завершенные тесты: 1
20.09.2015, 19:27 10
Вам же написали, что выражение sqrt(2 * fabs(y)) + c*y*y - exp(-d*y) равно -1.10399
Соответственно, логарифм от него не существует
А если все числа заменить на нули, то оно равно -1
Если заменить на единицы, то посчитается!
1
Sheol
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18
20.09.2015, 19:36  [ТС] 11
Странно, что сначала ничего не исправилось. Спасибо всем за ответы. Проблема решена.
0
20.09.2015, 19:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2015, 19:36

Исправление ошибки в коде
Всем доброе утро!!!Вот тут задачка запускается , вроде все по примеру делал...

Исправление ошибки в работе со строками
Каждый раз в моём коде со строками выдает эту ошибку. Иногда, если...

Исправление ошибки в работе со строками
Пожалуйста, подправьте программу. На borland 5 версии все работает ок. начал...


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

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

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