Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100

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

06.05.2011, 04:45. Показов 1851. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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 тогда функция работает правильно в чем причина подскажите
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2011, 04:45
Ответы с готовыми решениями:

Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
Вопрос такой, почему в методе setnamedisc нужно использовать char *s для установки значения, а при возвращении значения в методе...

Ошибка при возвращении ссылки из функции
Когда функция возвращает ссылку, то ее можно использовать с левой стороны от знака &quot;=&quot;. Только не пойму почему не работает ...

Ошибка bad ptr при возвращении занчения из функции
Помогите по функции, не возвращает значения, вот как объявлена функция и вот как пытаюсь вызвать чтобы получить значение этой самой функции...

7
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
06.05.2011, 09:35
Если пройдёшь по первой ветке if'а (строки 10-11), то у тебя функция ничего не возвратит (т.е. возвратит мусор).
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.05.2011, 09:36
Попробуй сделать вот так:
C++
1
res=res*10+1.0*int(c-'0');
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
06.05.2011, 10:00
-=ЮрА=-, да хоть что ты не пиши, если у тебя по какой-то ветку не исполняется return, то это не поможет. А использование плавающей единицы в целочисленном выражении - это ещё и не каждый индус до такого додумается.
1
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
06.05.2011, 10:30  [ТС]
Evg, дело в том что функция она должна возвращать res иммено когда попадается не число,
то есть когда я ввожу число 452 она сначало res равен 4 ,потом res равен 45 и на последок res равен 452,если в функции в блоке елса поставить вывод ,то res выводится и правильный результат у него но когда возвращаю ,вот так получается странно иммено то ,что белебирда выводится когда тип функции float или double,или если не трудно помогите пожалуйста написать код который правильно работает

Добавлено через 19 минут
Все нашел ошибку) я рекурсию вызывал не правильно вместо number(); нужно было return number();
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.05.2011, 12:38
Evg, единицу ввёл т.к. учитывал тип возвращаемого значения 3-я строка
C++
1
float res=0;
, сам часто так делаю для явного преобразования типа переменных.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 13:23
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
сам часто так делаю для явного преобразования типа переменных
Только вот преобразование произошло к типу double, а нужен float. И чем не устроило настоящее явное преобразование float(c-'0')?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
06.05.2011, 16:03
Цитата Сообщение от zinador Посмотреть сообщение
Evg, дело в том что функция она должна возвращать res иммено когда попадается не число
В Си функция если возвращает, то она что-то должна возвращать. Тем более, что результат функции ты печатаешь всегда, а потом удивляешься, почему печатается мусор

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Evg, единицу ввёл т.к. учитывал тип возвращаемого значения 3-я строка
Да, я малость протупил, когда писал про целочисленное выражение. В правой части имеется res типа float, а потому выражение res*10 и так будет иметь тип float и при дальнейшем сложении второе слагаемое автоматически приведётся к float'у. Тем более, как уже говорилось, лучше использовать явное приведение типа, чем умножение на единицу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2011, 16:03
Помогаю со студенческими работами здесь

Выводит -1.#IND вместо значения переменной
Здравствуйте, очень долго бьюсь с проблемой. заключается она в следующем. Есть ряд Тейлора для sin(x)/x который равен(сразу распишу) sum...

Конструктор копии при возвращении объекта
main(): #include&quot;Class_Taxi.h&quot; #include&lt;vld.h&gt; #include&lt;iostream&gt; #include&lt;locale.h&gt; #define MAX 15 using namespace std; ...

Конструктор копии: при возвращении объекта ошибка памяти
Реализация класса: #include&quot;Class_Taxi.h&quot; #include&lt;fstream&gt; #include&lt;conio.h&gt; using namespace std; Zakaz::Zakaz() { ...

-nan ind при решении сл
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); float A; float U; ...

Ошибка -1.#IND при вводе не целого числа
После ввода дробного числа для b в консоли пишется ошибка -1.#IND. При вводе целого числа все считается. В чем причина? При использовании...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru