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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2009, 10:28   #1
Vultar
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 12
Вопрос Cходящийся ряд (программа по идее должна работать но почему не работает понять не могу) в С++

Поясните пожалуйста почему программа с данным кодом не работает:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
int k;
double y;

int main()
{
const int maxiter=500;
double x, Eps;
double y,p;
int k;
cout<<"Vvedite argument"<<endl;
cin>>x;
if (x==0)
{
cout<<"Wrong value of argument"<<endl;
return 0;
}
cout<<"Vvedite tochnost"<<endl;
cin>>Eps;
if (Eps<0)
{
cout<<"Wrong value of tochnost"<<endl;
return 0;
}
k=1;
p=((-1)*x*x*x/3);
y=p;
for (k=2;fabs(p)>Eps;k++)
{
p*=(-1)*x*x/k*(2*k+1);
y+=p;
}
if (k<maxiter)
{
cout<<"\nZnachenie funkcii:"<<y<<" dlia x="<<x<<endl;
cout<<"\nVichisleno posle "<<k<<" iterazii"<<endl;
}
if (k>maxiter)
{
cout<<"Riad rashoditsa";
return 0;
}
}
Все дело в том что ошибок и предупреждений нет вообще, а в консоли срабатывает только ввод x и Eps после чего работа программы останавливается
Vultar вне форума Ответить с цитированием
Старый 17.12.2009, 11:16   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Дело в том, что если Ваш ряд расходится, то Погрешность никогда не будет достигнута. Цикл становиться бесконечным. И значение p и y выберутся за разрядную сетку. Так при х=2 это происходит на 321 цикле, а далее ошибка.
В этом месте
Код:
{
cout<<"Riad rashoditsa";
return 0;
}
}
измените на
Код:
{
cout<<"Riad rashoditsa";
}
getch();
return 0;
}
и в шапку добавьте
Код:
#include <conio.h>
тогда при сходящемся ряде увидите правильную работу программы.
И используйте тег CODE. Выделите свою программу и нажмите значок # на панели сообщения.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 17.12.2009 в 11:33.
Sweta вне форума Ответить с цитированием
Старый 17.12.2009, 12:56   #3
Vultar
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 12
По умолчанию

А каким образом можно сделать так чтобы выводило кол-во проделанных шагов в цикле?По идее оно опять же должно тут работать но оно выдает значение равное начальному значению k в цикле
Vultar вне форума Ответить с цитированием
Старый 17.12.2009, 13:04   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Проглядела. У Вас k и y объявлены дважды.
Уберите здесь
Код:
using namespace std;
int k;
double y;
должно остаться
Код:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;


int main()
Неприятности приходят и уходят, а жизнь продолжается!

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает...хм....понять не могу! Артур Иваныч Microsoft Office Excel 9 01.12.2009 17:58
Не могу понять почему блокируется папка Paul Hindenburg Общие вопросы Delphi 4 07.05.2009 10:47
Плииз!!! помогите! Не могу понять почему не работает! (Паскаль) Викуська_ Помощь студентам 5 21.04.2009 20:37