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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2016, 16:10   #1
MixaCooL
 
Регистрация: 07.10.2016
Сообщений: 5
По умолчанию Ошибка в вычислении суммы

Здравствуйте,объясните пожалуйста в чем ошибка в моей программе,в ответе всегда выдаёт 0
Задание во вложение
Моя программа:
Код:
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
	setlocale(LC_ALL, "RUS");
	int i=1;
	double eps;
	cin >> eps;
	double a=1000;
	double sum = 0;
	while (a >= eps)
	{
		a = 1 / (i*(i + 1));
			if (a > eps)
		{
			sum = sum + a;
		}
			i++;
	}
	cout << "Сумма: " << sum << endl;
	system("pause");
}
Изображения
Тип файла: jpg 1.jpg (63.8 Кб, 140 просмотров)
MixaCooL вне форума Ответить с цитированием
Старый 07.10.2016, 16:17   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
a = 1 / (i*(i + 1)); // int / int = целое от деления
Единицу нужно в float, double или еще чего вещественное преобразовать.
1.0f или (float) 1
pu4koff вне форума Ответить с цитированием
Старый 07.10.2016, 16:36   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

pu4koff, в точку!!!


второе, я бы суммировал без всяких проверок (это не принципиально, просто код чуть попроще):
Код:
	while (a >= eps)
	{
		a = 1.0f / (i*(i + 1.0f));
		sum += a;
		i++;
	}
ну и третье.
в данном случае числа все положительные и это никак не влияет,
но вообще, в задании указано, что проверять очередное слагаемое надо по модулю... (см. функцию Abs() )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.10.2016, 10:14   #4
MixaCooL
 
Регистрация: 07.10.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
pu4koff, в точку!!!


второе, я бы суммировал без всяких проверок (это не принципиально, просто код чуть попроще):
Код:
	while (a >= eps)
	{
		a = 1.0f / (i*(i + 1.0f));
		sum += a;
		i++;
	}
ну и третье.
в данном случае числа все положительные и это никак не влияет,
но вообще, в задании указано, что проверять очередное слагаемое надо по модулю... (см. функцию Abs() )
А что в данном случае обозначают f ?
MixaCooL вне форума Ответить с цитированием
Старый 12.10.2016, 10:20   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

что это число формата float...
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить количество циклов при вычислении с точностью 0,001 суммы TEIROP Visual C++ 5 01.11.2015 16:50
При приближенном вычислении суммы ряда расчет выполнять с точностью E. Использовать цикл с предусловием и цикл с постусловием. dvpvitas Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2015 18:43
Pascal ошибка при вычислении суммы ряда с заданной точностью RavenGuitarist Помощь студентам 4 23.08.2011 16:11
Ошибка при вычислении.. CodeExpert Помощь студентам 7 17.02.2010 17:24
ошибка в вычислении wowka Помощь студентам 4 21.07.2008 15:51