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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 00:06   #1
Ywko
 
Регистрация: 01.09.2011
Сообщений: 5
По умолчанию задача на точность.Не работает =/

Не могу понять почему ошибка=/ те возвращает 0
http://clip2net.com/s/1hyQz << Задание
решил сделать пока while и без switch ; 1 файлом работало вроде правильно , но когда разделил на два беда=/
тут вроде все номально
Код:
#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;

int factorial (int n)
{
    int f = 1, i ;
    for(i=2;i<=n;++i)
    {
        f=f*i ;
    }
    return f;
}


void main()
{
	setlocale(LC_ALL , "");
    
	char otvet;
	do
	{
        double e , s = 0 , x , c = -1 , d = 1 ; // c и d чтобы убрать цифры из формулы
		int k = 0 ;

	    cout <<"Введите e = "  ;
	    cin >> e;
	    cout <<"Введите x = "  ;
	    cin >> x ;
	
            double a = (pow(c,k)*pow(x,2*k+d))/(factorial(k+d)*(2*k+d));
		
		while (fabs(a) >= e)
	    {  
		   s += a ;
		   k++ ;
		   a = (pow(c,k)*pow(x,2*k+d))/(factorial(k+d)*(2*k+d)); 
	    }


	   cout <<"Сумма ряда = " << s << endl ;
	   cout <<"Повторить? y для повтора " ;
	   cin >> otvet;

	}while (otvet == 'y');
	_getch();
}
а тут не получается=/
Код:
main.cpp
#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;

double While(double,double,double&) ;


void main()
{
	setlocale(LC_ALL , "");
    
	char otvet;
	do
	{
        double e , s , x  ;
	    int k = 0 ;

	    cout <<"Введите e = "  ;
	    cin >> e;
	    cout <<"Введите x = "  ;
	    cin >> x ;
        
            While(x, e , s );


	   cout <<"Сумма ряда = " << s << endl ;
	   cout <<"Повторить? y для повтора " ;
	   cin >> otvet;

	}while (otvet == 'y');
	_getch();
}


While.cpp
#include <iostream>
#include <math.h>
#include <conio.h>

int factorial (int n)
{
    int f = 1, i ;
    for(i=2;i<=n;++i)
    {
        f=f*i ;
    }
    return f;
}

double While(double x,double e,double& s)
{
	double k = 0 , s = 0;
	
	double a = (pow(-1,k)*pow(x,2*k+1))/(factorial(k+1)*(2*k+1));

    while (fabs(a) >= e)
	{   
            s = s + a ;
            k++ ;
	    a = (pow(-1,k)*pow(x,2*k+1))/(factorial(k+1)*(2*k+1));
	}
}

Последний раз редактировалось Ywko; 01.11.2011 в 00:53.
Ywko вне форума Ответить с цитированием
Старый 01.11.2011, 00:47   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Потому что кто-то невнимателен.
Цитата:
Код:
            While(e , x , s );
Код:
double While(double x,double e,double& s)
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 00:53   #3
Ywko
 
Регистрация: 01.09.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Потому что кто-то невнимателен.
да тут ошибочка но все равно... поменял и так же все
Ywko вне форума Ответить с цитированием
Старый 01.11.2011, 00:58   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

While?
while. Язык С++, чувсвителен к регистру.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 01.11.2011, 01:04   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Можно ещё k переделать из double в int.
А можно заметить, что в начале k можно подставить
Код:
double a = x;
...а в цикле - связать следующее значение a с предыдущим
Код:
a = -(a*x*x*(2*k-1))/((k+1)*(2*k+1));
Более того, последнее предложение задания прямо советует так и поступить.
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 17:35   #6
Ywko
 
Регистрация: 01.09.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
While?
while. Язык С++, чувсвителен к регистру.
это название функции
Ywko вне форума Ответить с цитированием
Старый 01.11.2011, 18:26   #7
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Как у Вас main() понимает где взять double While(double x,double e,double& s) при разделении файлов?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 01.11.2011, 18:35   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Sweta,
Цитата:
double While(double,double,double&) ;
Всё есть, всё хорошо.
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 18:54   #9
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

А где данная функция
Код:
double While(double x,double e,double& s)
{
	double k = 0 , s = 0;
	
	double a = (pow(-1,k)*pow(x,2*k+1))/(factorial(k+1)*(2*k+1));

    while (fabs(a) >= e)
	{   
            s = s + a ;
            k++ ;
	    a = (pow(-1,k)*pow(x,2*k+1))/(factorial(k+1)*(2*k+1));
	}
}
возвращает значение?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 02.11.2011, 21:23   #10
Ywko
 
Регистрация: 01.09.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Sweta Посмотреть сообщение
А где данная функция
Код:
double While(double x,double e,double& s)
{
	double k = 0 , s = 0;
	
	double a = (pow(-1,k)*pow(x,2*k+1))/(factorial(k+1)*(2*k+1));

    while (fabs(a) >= e)
	{   
            s = s + a ;
            k++ ;
	    a = (pow(-1,k)*pow(x,2*k+1))/(factorial(k+1)*(2*k+1));
	}
}
возвращает значение?
по ссылке? разв нет?
Ywko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точность double в c++ firephenix Помощь студентам 0 25.10.2011 12:35
Точность вычислений aly-lucenko Фриланс 1 02.05.2011 21:38
Болшая точность Zeir Помощь студентам 6 10.10.2010 18:57
Точность обработки БД в С++ Maks7482 Общие вопросы C/C++ 3 23.08.2010 13:34
Точность Sour Помощь студентам 2 31.05.2007 21:08