Форум программистов, компьютерный форум CyberForum.ru

-1.#IND при возвращении значения функции - C++

Восстановить пароль Регистрация
 
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
06.05.2011, 04:45     -1.#IND при возвращении значения функции #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
using namespace std;
float res=0;
 
float number()
{
char c=cin.get();
     if(c>='0' && c<='9')
    {
     res=res*10+c-'0';
     number();
    }
    else
    {
cin.putback(c);
return res;
    }
 
}
int main()
{
cout<<number();
}
Здраствуйте форумчане,непойму почему когда ввожу число возвращает всегда -1.#ind
причем если изменить тип функции number() с float на int тогда функция работает правильно в чем причина подскажите
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2011, 04:45     -1.#IND при возвращении значения функции
Посмотрите здесь:

C++ При расчёте функции не учитываюся значения после запятой
Ошибка при присвоении значения элементу массива в функции C++
C++ Ошибка при возвращении ссылки из функции
C++ Составить программу вычисления значения функции y(x) при произвольном значении х
C++ Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
06.05.2011, 09:35     -1.#IND при возвращении значения функции #2
Если пройдёшь по первой ветке if'а (строки 10-11), то у тебя функция ничего не возвратит (т.е. возвратит мусор).
-=ЮрА=-
Заблокирован
Автор FAQ
06.05.2011, 09:36     -1.#IND при возвращении значения функции #3
Попробуй сделать вот так:
C++
1
res=res*10+1.0*int(c-'0');
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
06.05.2011, 10:00     -1.#IND при возвращении значения функции #4
-=ЮрА=-, да хоть что ты не пиши, если у тебя по какой-то ветку не исполняется return, то это не поможет. А использование плавающей единицы в целочисленном выражении - это ещё и не каждый индус до такого додумается.
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
06.05.2011, 10:30  [ТС]     -1.#IND при возвращении значения функции #5
Evg, дело в том что функция она должна возвращать res иммено когда попадается не число,
то есть когда я ввожу число 452 она сначало res равен 4 ,потом res равен 45 и на последок res равен 452,если в функции в блоке елса поставить вывод ,то res выводится и правильный результат у него но когда возвращаю ,вот так получается странно иммено то ,что белебирда выводится когда тип функции float или double,или если не трудно помогите пожалуйста написать код который правильно работает

Добавлено через 19 минут
Все нашел ошибку) я рекурсию вызывал не правильно вместо number(); нужно было return number();
-=ЮрА=-
Заблокирован
Автор FAQ
06.05.2011, 12:38     -1.#IND при возвращении значения функции #6
Evg, единицу ввёл т.к. учитывал тип возвращаемого значения 3-я строка
C++
1
float res=0;
, сам часто так делаю для явного преобразования типа переменных.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 13:23     -1.#IND при возвращении значения функции #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
сам часто так делаю для явного преобразования типа переменных
Только вот преобразование произошло к типу double, а нужен float. И чем не устроило настоящее явное преобразование float(c-'0')?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2011, 16:03     -1.#IND при возвращении значения функции
Еще ссылки по теме:

C++ Найти значения функции при заданном шаге агрумента
Вычислить и напечатать значения функции при следующих условиях C++
C++ Ошибка -1.#IND при вводе не целого числа

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
06.05.2011, 16:03     -1.#IND при возвращении значения функции #8
Цитата Сообщение от zinador Посмотреть сообщение
Evg, дело в том что функция она должна возвращать res иммено когда попадается не число
В Си функция если возвращает, то она что-то должна возвращать. Тем более, что результат функции ты печатаешь всегда, а потом удивляешься, почему печатается мусор

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Evg, единицу ввёл т.к. учитывал тип возвращаемого значения 3-я строка
Да, я малость протупил, когда писал про целочисленное выражение. В правой части имеется res типа float, а потому выражение res*10 и так будет иметь тип float и при дальнейшем сложении второе слагаемое автоматически приведётся к float'у. Тем более, как уже говорилось, лучше использовать явное приведение типа, чем умножение на единицу
Yandex
Объявления
06.05.2011, 16:03     -1.#IND при возвращении значения функции
Ответ Создать тему
Опции темы

Текущее время: 23:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru