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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2013, 18:48   #1
ingushmen
Пользователь
 
Аватар для ingushmen
 
Регистрация: 13.11.2010
Сообщений: 13
По умолчанию Помогите с лабораторной: "Составить функцию вычисления суммы с точностью ε и последнего слагаемого, включенного в сумму..."

Здравствуйте, проблема возникла при написании 5-ой лабы по инфе (С++).

Препод, попросила меня переделать лабу по этой формуле. Вроде код я накатал, но чуть к другой задаче. Через 4 дня сдавать лабу А я до сих пор маюсь с ней.

Вот задание:



Вот код:

Код:
#include <iostream>
#include <conio.h>

using namespace std;

double zWhile (float x, float k, float eps, double& psl, int& kol);
double zDoWhile (float x, float k, float eps, double& psl, int& kol);
double zFor (float x, float k, float eps, double& psl, int& kol);

char myMenu(void);

int main(int)
{
	setlocale(0,"");
	char m;
	float x, eps;
	double last, sum,psl;
	int N, kol;
	char p, s;

	cout << "\nВведите Х: ";
	cin>>x;

	cout << "\nВведите N: ";
	cin>>N;

	while (N<=1)
	{
		cout<<endl<<"Введи новое N больше \"1\" \t";
		cin>>N;
	}

	cout << "\nВведите EPS [1>=eps>0]: ";
	cin>>eps;

	while (eps>1 || eps<=0)
	{
		cout<<endl<<"Неверный EPS! Повторите еще раз!: ";
		cin>>eps;
	}
	do
	{

	cout << "\nВведите Х: ";
	cin>>x;

	while(x==0)
	{
		cout<<endl<<"Х равен нулю! Введите значение больше нуля: ";
		cin>>x;
	}

	cout<<"\n";

	m=myMenu();
    switch(m)
	{ 
	case '1':
	sum=zFor(x, N, eps, last, kol);
	break;
	
	case '2':
	sum=zWhile(x, N, eps, last, kol);
	break;
	
    case '3':
	sum=zDoWhile(x, N, eps, last, kol);
	break;

}
	cout<<"\nСумма: "<< sum;
	cout<<"\nКоличество слагаемое: "<<kol;
	cout<<"\nПоследнее слагаемое: "<<last;

    cout<<"\n\n Повторить вычисление (y - да; n - нет?";
	cin>>p;
	}while (p=='y');
    _getch();
}
Вот функции, сразу добавлю все три в один код:

Код:

long double fact(int N)
{
    if(N < 0)    return 0; 
    if (N == 0)  return 1; 
    else         return N * fact(N - 1); 
}

double zFor (float x, float k, float eps, double& psl, int& kol)
{
	double sum=0;
	double sl=(pow((-1),k)*pow(x,2*k+1))/(fact((k+1))*(2*k+1));
	int g;
	psl=0;
	for(; 1>=eps || eps>0 || x>0; g++)
	{
		sum=sum+sl;
		psl=sl;
		sl=sl/fact((k+1))*(2*k+1);
	}
	kol=k-2;
	return sum;
}

double zWhile (float x, float k, float eps, double& psl, int& kol)
{
	double sum=0;
	double sl=(pow((-1),k)*pow(x,2*k+1))/(fact((k+1))*(2*k+1));
	psl=0;
	while (1>=eps || eps>0 || x>0)
	{
		sum=sum+sl;
		psl=sl;
		sl=1/((k*x*x+2)*(k+3));
		k++;
	}
	kol=k-2;
	return sum;
}

double zDoWhile (float x, float k, float eps, double& psl, int& kol)
{
	double sum=0;
	double sl=(pow((-1),k)*pow(x,2*k+1))/(fact((k+1))*(2*k+1));
	psl=0;
	do{
		sum=sum+sl;
		psl=sl;
		sl=(pow(-1,k)*pow(x,2*k+1))/(fact((k+1))*(2*k+1));
		k++;
	} while ( 1>=eps || eps>0 || x>0);

	return sum;
}
Прошу помочь, я со вчерашнего дня сидел голову ломал. Думал может кто из этого форума сможет помочь.
ingushmen вне форума Ответить с цитированием
Старый 13.12.2013, 12:55   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Код:
	for(; 1>=eps || eps>0 || x>0; g++)
	{
		sum=sum+sl;
		psl=sl;
		sl=sl/fact((k+1))*(2*k+1);
	}
что это за ужОс?!?!

Цитата:
я со вчерашнего дня сидел голову ломал
может стоит начать с начала?
Цитата:
Вроде код я накатал, но чуть к другой задаче
к какой "чуть другой задаче" ты этот код накатал? тут намешано всего в кучу и оно, кроме ввода значений никак дальше работать не будет...

условия выхода из цикла просто шикарны!

UPD
писать за тебя не буду, но на мысль натолкну
Цитата:
требуемая точность достигнута, если очередное слагаемое суммы оказалось по модулю меньше чем EPS
условие для выхода из цикла eps>=fabs(sl)
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 13.12.2013 в 13:15.
SaLoKiN вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с заданием "Найти функцию с точностью e..." rigger Общие вопросы C/C++ 4 29.11.2013 20:29
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Составить функцию вычисления суммы с точностью эпсилон maxick96 Помощь студентам 9 20.10.2012 23:32
Вывести величину последнего слагаемого и суммы. umiko Microsoft Office Excel 2 16.05.2009 08:29
Вывести величину последнего слагаемого и суммы. umiko Microsoft Office Excel 1 16.05.2009 08:28