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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2008, 21:32   #11
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

малость напортачили мы с условием вот так стоит

while(s < (float)a && k < 1000000) s += 1/(float)k++;

------------

Цитата:
Это то зачем?
Пусть будет пока, а то вкруговую пойдем
B_N вне форума Ответить с цитированием
Старый 31.01.2008, 21:51   #12
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

#include <iostream.h>
int main()
{
float a;
long k=1;
float s=0;

cout<<"a=";
cin>>a;
while(s < (float)a && k < 1000000) s += 1/(float)k++;
cout<<"s="<<s-1/k;
cout<<"k="<<k-1;
cin>>s;


return 0;
}

Что-то не выходит. При а=2 выводит s = 2.08333 к=4 - чуть больше,чем надо
Amen вне форума Ответить с цитированием
Старый 31.01.2008, 21:54   #13
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Конечно не выходит, там еще типы надо приводить, а не торопить события.

Код:
#include <iostream.h>

int main()
{
	int a;
	long k=1;
	float s=0;
	long const Kmax = 10000000;

	cout << "a = ";
	cin >> a;

	while(s < (float)a) 
	{
		if( k >= Kmax )
		{
			cout << "Превышено Kmax";
			break;
		}
		s += 1/(float)k++;
	}

	cout << "s = " << (s - 1/(float)k ) << endl << "k = " << (k-1);
	cin >> s;

	return 0;
}

-----------
Можно добавить еще одну переменную (типа bool) и если превышено Kmax, то не печатать результат. Смысл Кmax заключается на самом деле в том, что у чисел (целочисленных типов в особенности) в машинном представлении есть вполне реальная верхняя граница, после которой увеличение значения уводит переменную или в отрицательные значения или в 0. Так что проверку, в принципе, можно и оставить, тем более, что этот ряд растет очень медленно.

Последний раз редактировалось B_N; 31.01.2008 в 21:59.
B_N вне форума Ответить с цитированием
Старый 31.01.2008, 22:03   #14
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Конечно не выходит, там еще типы надо приводить, а не торопить события.

Код:
#include <iostream.h>

int main()
{
	int a;
	long k=1;
	float s=0;
	long const Kmax = 10000000;

	cout << "a = ";
	cin >> a;

	while(s < (float)a) 
	{
		if( k >= Kmax )
		{
			cout << "Превышено Kmax";
			break;
		}
		s += 1/(float)k++;
	}

	cout << "s = " << (s - 1/(float)k ) << endl << "k = " << (k-1);
	cin >> s;

	return 0;
}

-----------
Можно добавить еще одну переменную (типа bool) и если превышено Kmax, то не печатать результат. Смысл Кmax заключается на самом деле в том, что у чисел (целочисленных типов в особенности) в машинном представлении есть вполне реальная верхняя граница, после которой увеличение значения уводит переменную или в отрицательные значения или в 0. Так что проверку, в принципе, можно и оставить, тем более, что этот ряд растет очень медленно.
Огромное спасибо, вы мне очень помогли. Сам бы точно не разобрался, т.к. синтаксис знаю очень плохо.
Amen вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, с решением Akademik Помощь студентам 2 23.04.2008 23:17
Помогите с решением функций. Nikopol Помощь студентам 6 15.06.2007 23:57
Помогите с решением задачи!Please! Инзия Помощь студентам 3 11.03.2007 07:50