Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456

Бесконечность вместо чисел, cout<< #INF

14.03.2018, 12:30. Показов 7326. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Считаю комплексные в цикле.
z,с заданы.
C++
1
2
3
4
5
for(int i=0;i<20;i++)
    {
        cout << "z=" << z << '\n';
        z=z*z+c;        
    }
Название: ScreenShot00092.jpg
Просмотров: 138

Размер: 30.0 Кб
Как просто сделать чтобы остановился цикл при любой ошибке? Если -1.#INF и т.п. гадость то выйти из for и записать последнее посчитанное число double в z.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2018, 12:30
Ответы с готовыми решениями:

Выводится 1.#INF вместо значения
проблема с выводом значения v, должно быть значение в десятичной дроби , а выводится 1.#INF подскажите как исправить #include...

Выводит INF вместо значения
Не ругайте за стиль , только учусь. проблема с выводом значения X строка 63,68. Вроде 97/97 должно быть 1, он даёт INF // решение систем...

Cout пишет адрес вместо значения
cout пишет адрес вместо значения. Спасибо

31
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
14.03.2018, 23:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
Это такая же попытка заткнуть проблему Чем длиннее арифметика, тем позже выскочит infinity. Но всё равно выскочит
это уже будет метафизический коллапс, заткнуть который уже никогда не удастся ))

но тогда уж может проверять на корректность попадания входного набора значений в заданный диапазон?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.03.2018, 00:07
Цитата Сообщение от XLAT Посмотреть сообщение
но тогда уж может проверять на корректность попадания входного набора значений в заданный диапазон?
Не понял, что ты имел в виду

У товарища по сути дела в задаче число каждый раз в квадрат возводится. И рано или поздно эта цепочка превратится в бесконечность, каким бы длинным не был используемый тип. Проверка на "кривые числа" - один из способов отловить границу
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
15.03.2018, 00:13  [ТС]
Цитата Сообщение от mat_for_c Посмотреть сообщение
imag()
, не??
Точно.

Работает INF.
C++
1
2
3
#include <limits>
const double inf = numeric_limits<double>::infinity();
if (z.real() == inf || z.imag() == inf)

Как использовать правильно?
Так считает лишний INF.
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i=0;i<MaxIterNumber;i++)
    {
    if (z.real() == inf || z.imag() == inf)
            {
            break;
            }
    cout << "z=" << z <<'\n';
    z=z*z+c;
    IterNumber++;   
    }
cout << "============" <<  '\n';
cout << "IterNumber=" << IterNumber <<'\n';
Название: ScreenShot00108.jpg
Просмотров: 53

Размер: 18.6 Кб

Так почемуто появился какой-то IND и бесконечный цикл в отладке.
C++
1
2
3
4
5
6
7
8
for(int i=0;i<MaxIterNumber && z.real() != inf || z.imag() != inf;i++)
{
    cout << "z=" << z <<'\n';
    z=z*z+c;
    IterNumber++;
}   
cout << "============" <<  '\n';
cout << "IterNumber=" << IterNumber <<'\n';
Печалька… Как сделать правильно?
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
15.03.2018, 00:16  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
задаче число каждый раз в квадрат возводится.
Я рисую фрактал мандельброт.
Фрактал Мандельброта (C++)
Рисовал никого не трогал и вдруг INF…
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
15.03.2018, 00:42
Цитата Сообщение от Evg Посмотреть сообщение
А вот nan'ов много и простым сравнением на "равно" не сравнить
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <limits>
 
int main()
{
  double nan = std::numeric_limits<double>::quiet_NaN();
  if (nan != nan) 
     std::cout << "It's NaN!!!";
   return 0;
}
в том и прелесть NaN, что он не равен даже самому себе
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
15.03.2018, 00:42
Цитата Сообщение от Evg Посмотреть сообщение
Не понял, что ты имел в виду
Цитата Сообщение от Evg Посмотреть сообщение
в задаче число каждый раз в квадрат возводится
если задача сугубо практическая, то там никакого инфинити быть не может, а если вдруг может,
то, есно, задача перестает решаться.

в случае если задача академическая, то для "потренироваться не зарывать проблему":
https://habrahabr.ru/company/xakep/blog/257897/
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
15.03.2018, 00:47
Лучший ответ Сообщение было отмечено Excalibur921 как решение

Решение

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Так почемуто появился какой-то IND и бесконечный цикл в отладке
C++
1
2
3
#include <cmath>
 
for(int i=0;i<MaxIterNumber && (abs(z.real()) != inf || abs(z.imag()) != inf);i++)
1
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
15.03.2018, 01:08  [ТС]
Вариант:
C++
1
isnormal_double(z.real())
Показывает 1 итерацию.
Название: ScreenShot00109.jpg
Просмотров: 52

Размер: 2.3 Кб
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i=0;i<MaxIterNumber;i++)
    {
    if (isnormal_double(z.real()) || isnormal_double(z.imag()))
            {
            break;
            }
    cout << "z=" << z <<'\n';
    z=z*z+c;
    IterNumber++;   
    }
cout << "============" <<  '\n';
cout << "IterNumber=" << IterNumber <<'\n';
Вариант:
Показывает 11 итераций.
Название: ScreenShot00110.jpg
Просмотров: 52

Размер: 17.4 Кб
C++
1
2
3
4
5
6
7
8
for(int i=0;i<MaxIterNumber && (abs(z.real()) != inf || abs(z.imag()) != inf);i++)
{
    cout << "z=" << z <<'\n';
    z=z*z+c;
    IterNumber++;
}   
cout << "============" <<  '\n';
cout << "IterNumber=" << IterNumber <<'\n';
На 100 вариантах все посчитал без INF. Потом попробую на 262 000.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.03.2018, 10:28
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Я рисую фрактал мандельброт
Я не математик, но подозреваю, что для фрактала нужна сходящаяся последовательность, а у тебя расходящаяся

Цитата Сообщение от mat_for_c Посмотреть сообщение
в том и прелесть NaN, что он не равен даже самому себе
Согласен, сигнальный nan в такой задаче не волнует, а потому в простых случаях можно сравнить с самим собой

Цитата Сообщение от XLAT Посмотреть сообщение
если задача сугубо практическая, то там никакого инфинити быть не может, а если вдруг может,
то, есно, задача перестает решаться
В "практической" задаче почти наверняка не потребуется использование длинной арифметики. Да, я согласен с тем, что для академических задач может потребоваться длинная арифметика. Но совать её куда попало не нужно. В большинстве задач начального уровня люди начинают применять длинную арифметику НЕ по делу и по своей сути это является затаптыванием проблемы (типа некорректно построенного алгоритма)

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Вариант:

C++
isnormal_double(z.real())
Показывает 1 итерацию.
И для кого я, спрашивается, написал в посте #11

Цитата Сообщение от Evg Посмотреть сообщение
Т.е. тебе по сути нужна проверка "if (x == 0 || isnormal(x)) - значит хорошее, иначе плохое"
Добавлено через 1 минуту

Не по теме:

Excalibur921, у тебя сейчас начинаются какие-то метания между различными вариантами, предложенными в этой баге. Такое ощущение, что ты тупо их применяешь, не вникая в то, что эти коды делают

0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
15.03.2018, 15:32  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
нужна сходящаяся последовательность, а у тебя расходящаяся
Это эксперименты по окрасу.
Цитата Сообщение от Evg Посмотреть сообщение
люди начинают применять длинную арифметику НЕ по делу
Для фрактала она нужна, вчера поменял float на double и появилась картинка. Вероятно нужно будет шаманить с ней, но позже…
Цитата Сообщение от Evg Посмотреть сообщение
И для кого я, спрашивается, написал в посте #11
Не справится limits тогда попробую ваш велик. Для меня это voodoo code. Для чего-то ведь создали limits.h
Цитата Сообщение от Evg Посмотреть сообщение
начинаются какие-то метания между различными вариантами
Какие метания? Я же написал все работает правильно. Все что написал mat_for_c, работает и отрезает INF.
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
15.03.2018, 17:07
А в чем вопрос-то? Если нужно проверить, какое значение находится в переменной: INFINITY или NAN, можно использовать стандартные макросы, которые находятся в заголовочном файле <cmath>:
C++
1
2
std::isinf( ^arg^ );
std::isnan( ^arg^ );
1
Объявлятель переменных
 Аватар для SpBerkut
1225 / 411 / 321
Регистрация: 24.09.2011
Сообщений: 1,279
11.01.2021, 14:33
Не, я понимаю, что теме уже почти три года...

Если комплексное число является частью множества Мадельброта, то его абсолютное значение не превышает 2. Достаточно было в цикл добавить условие, что сумма квадратов действительной и мнимой частей не превышает 4. И никаких бесконечностей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2021, 14:33

Как записать вместо cout printf?
#include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; double z(double x, double y) { return x * x + y * y * y; } ...

Вместо значений массива в cout выводит адреса
Помогите пожалуйста! Вместо значений массива в cout выводит адреса #include&lt;iostream&gt; #include&lt;conio.h&gt; #include...

С++ и бесконечность простых чисел
Тысячи лет назад математики знали, что количество простых числ бесконечно и придумали простое доказателство &quot;от противного&quot;: ...

Почему при вводе чисел в ответе выводит #INF
где ошибка почему при вводе чисел в ответе выводит #INF #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; ...

Задан массив целых чисел. Записать +1 вместо максимального элемента массива и -1 вместо минимального
Не понимаю, что не так, помогите исправить код. #include&lt;conio.h&gt; #include&lt;iostream&gt; #include&lt;stdlib.h&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru