Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2012, 22:29   #1
АлександрМих
Пользователь
 
Аватар для АлександрМих
 
Регистрация: 10.04.2012
Сообщений: 12
По умолчанию Бессконечность

Подскажите пожалуйста как задать бесконечность в Си?
АлександрМих вне форума Ответить с цитированием
Старый 10.04.2012, 22:51   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Бесконечность это математическая абстракция, её нет в си. Для каких именно целей она вам нужна?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.04.2012, 22:53   #3
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
бесконечность в Си?
Целочисленную?
или IEEE-754?
EUGY вне форума Ответить с цитированием
Старый 10.04.2012, 23:00   #4
АлександрМих
Пользователь
 
Аватар для АлександрМих
 
Регистрация: 10.04.2012
Сообщений: 12
По умолчанию

нужно вычислить это уравнение. Единственное что из этого я не как задать здесь бессконечность
Изображения
Тип файла: png Безымянный.png (1.8 Кб, 117 просмотров)
АлександрМих вне форума Ответить с цитированием
Старый 10.04.2012, 23:13   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Даже если это было бы возможно, ваш компьютер считал бы бесконечно долго. Вычисляйте это значение с некоторой заданной точностью, например
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.04.2012, 23:30   #6
АлександрМих
Пользователь
 
Аватар для АлександрМих
 
Регистрация: 10.04.2012
Сообщений: 12
По умолчанию

Как я понимаю при каждом вычислении этого выражения результат будет уменьшатся. То есть мне нужно оборвать вычисление после определенного прохода?
АлександрМих вне форума Ответить с цитированием
Старый 10.04.2012, 23:31   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Да, что-то типа того.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.04.2012, 23:33   #8
АлександрМих
Пользователь
 
Аватар для АлександрМих
 
Регистрация: 10.04.2012
Сообщений: 12
По умолчанию

Спасибо за помощь
АлександрМих вне форума Ответить с цитированием
Старый 10.04.2012, 23:35   #9
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Как-то так
Код:
#include <math.h>
#include <float.h>

double func(double f)
{
	double S = 0.0, ss = 0.0;
	int i = 1;
	while (1)
	{
		ss	= (f*f + fabs(f)) / (f + pow( f, i));
		if (fabs(ss) <=	DBL_EPSILON)
			break; // оборвать
		S += ss;
		i++;
	}
	return S;
}


void main()
{
	printf("%e", func(100));
};
Писал небрежно, поэтому критично посмотри.

Последний раз редактировалось EUGY; 10.04.2012 в 23:40. Причина: int i=1
EUGY вне форума Ответить с цитированием
Старый 10.04.2012, 23:39   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Для этой формулы не нужна бесконечность. Вполне подойдёт тип unsigned ling.
Его предел - 4 294 967 295. Если цикл сойдётся, выходим из него через return, если не сойдётся - через вывод ошибки по окончании цикла.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц