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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 22:45   #1
KOLYTFR
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 17
Восклицание C++ циклы

Нада сделать программу которая должна вычислять з точностью e бесконечную сумму ряда. Там еще сказано что необходимую точность если следующий член ряда за модулем меньше за е. Ну я только начинающий программист и все на что меня хватило:


Код:
#include "stdafx.h"
#include "math.h"

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

int _tmain(int argc, _TCHAR* argv[])
{


   double x, e, sum ;
printf ("%s", "\n Vvedite x: ");
   scanf ("%lf", &x);
printf ("%s", " Vvedite e: ");
   scanf ("%lf", &e);
int k = 0 ;
   double ak = (pow(-1.0,k) * pow(x,2*k)) / (pow(2.0,k)*factorial(k));
while (ak >= e)
{
k++ ;
   ak = (pow(-1.0,k) * pow(x,2*k)) / (pow(2.0,k)*factorial(k));
sum = 0 ;
sum += ak ;
}
printf("\n%s", " Suma ryada: " );
printf("%.2lf", sum);
printf("\n%s", " Kolichestvo slogaemih: " );
printf("%d", k);

return 0;
}
Но оно выбивает "variable sum is being used without being defined". Помогите...

Последний раз редактировалось Stilet; 27.04.2009 в 09:41.
KOLYTFR вне форума Ответить с цитированием
Старый 26.04.2009, 22:50   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Покажите задание полностью и скажите на какой строчке возникает ошибка.

Код заключайте в тег CODE ("#" на панели в окне редактирования).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.04.2009, 22:55   #3
KOLYTFR
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 17
Радость

Задание значит такое:
вычислять з точностью e бесконечную сумму ряда и указать количество слогаемых. необходимую точность достигнуто если следующий член ряда за модулем меньше е. И дана формула ряда.

Я уже вроде разобралься, там в цикле не нада было sum присваивать 0. Но все равно проверьте. Заранее спасиба.

Код:
#include "stdafx.h"
#include "math.h"


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

int _tmain(int argc, _TCHAR* argv[])
{
	int o;
	do
	{
    double x, e ;
    double sum = 0 ;
 
	printf ("%s", "\n Vvedite x: ");
    scanf ("%lf", &x);
	printf ("%s", " Vvedite e: ");
    scanf ("%lf", &e);

	int k = 0 ;
    double ak = (pow(-1.0,k) * pow(x,2*k)) / (pow(2.0,k)*factorial(k));
	
	while (ak >= e)
	{
		k++ ;
	    ak = (pow(-1.0,k) * pow(x,2*k)) / (pow(2.0,k)*factorial(k));
		sum += ak ;
	}
	
	printf("\n%s", " Suma ryada: " );
	printf("%.2lf", sum);
	printf("\n%s", " Kolichestvo slogaemih: " );
	printf("%d", k);

    printf ("%s", "\n\n Eshe raz? (1 - Da) ") ;
    scanf ("%d", &o) ;
	}
	while (o == 1) ;

	return 0;
}
KOLYTFR вне форума Ответить с цитированием
Старый 26.04.2009, 23:21   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Фух.. Выловил, наконец, эту ошибку.

Сумму занулять надо перед циклом.
И в цикле
Код:
 sum += ak ;
должна быть первой строчкой.
А главное: в условии в цикле нужно брать ak по модулю:
Код:
#include "math.h"
#include <stdio.h>
#include <stdlib.h>

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

int main()
{
	int o;
	do
	{
    double x, e ;
    double sum = 0 ;

	printf ("%s", "\n Vvedite x: ");
    scanf ("%lf", &x);
	printf ("%s", " Vvedite e: ");
    scanf ("%lf", &e);

	int k = 1 ;
	sum = 0;
 double ak = (pow(-1.0,k) * pow(x,2*k)) / (pow(2.0,k)*factorial(k));
	while (fabs(ak) >= e)
	{
  sum += ak ;
		k++ ;
	 ak = (pow(-1.0,k) * pow(x,2*k)) / (pow(2.0,k)*factorial(k));
	}

	printf("\n%s", " Suma ryada: " );
	printf("%.2lf", sum);
	printf("\n%s", " Kolichestvo slogaemih: " );
	printf("%d", k);

    printf ("%s", "\n\n Eshe raz? (1 - Da) ") ;
    scanf ("%d", &o) ;
	}
	while (o == 1) ;

	return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.04.2009, 23:36   #5
KOLYTFR
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 17
Радость

Спасиба БОЛЬШУЩЕЕ Ато я так замучалься. Только один вопрос - пачему k считать начиная с единицы?
Код:
	int k = 1 ;
KOLYTFR вне форума Ответить с цитированием
Старый 26.04.2009, 23:38   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Только один вопрос - пачему k считать начиная с единицы?
Ну, полного текста задания (вместе с формулой) я не увидел. Поэтому рассуждал на основе своего опыта решения подобных задач, в которых перебор слагаемых ведется с первого элемента. Если у вас в задании написано, что нужно с нулевого, то, естественно, измените.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
циклы Кирилл17 Помощь студентам 4 30.10.2009 20:59
Циклы NDR777 Общие вопросы Delphi 9 06.02.2009 14:11
Циклы }{oт@бь)ч Общие вопросы Delphi 4 05.02.2009 16:41
циклы. Кирилл17 Помощь студентам 6 24.12.2008 03:23
Циклы! vlad1991 Паскаль, Turbo Pascal, PascalABC.NET 15 28.10.2008 22:07