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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 18:23   #1
Yulya92
Новичок
Джуниор
 
Регистрация: 12.11.2009
Сообщений: 3
По умолчанию Неправильно считает, очень прошу помочь

1:
Код:
#include <math.h>
float epswhile(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i=1;
  posl=0; 
  while(fabs(sl)<=eps)
	{
	  d=i+1;
	  sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
	  s=s+sl;
	  posl=sl;
	  i++;
	}
  z=i-1;
  return s;
}
2:
Код:
#include <math.h>
float epsdo(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i=1;
  posl=0; d=i+1;
  do
    {
	  s=s+sl;
	  posl=sl;
	  sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
	  i++;
    }
  while(fabs(sl)<=eps);
  z=i-1;
  return s;
}
3:
Код:
#include <math.h>
float epsfor(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i;
  posl=0; d=i+1;
  for(i=1;fabs(sl)<=eps;i++)
	{
	  s=s+sl;
	  posl=sl;
	  sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
	}
  z=i-1;
  return s;
}
4:
Код:
#include <iostream>
#include <conio.h>
float epswhile(float x,float eps, float& posl,int& z);
float epsdo(float x,float eps, float& posl,int& z);
float epsfor(float x,float eps, float& posl,int& z);
using namespace std;

void main (void)
{ float x, eps,posl,s,sl;int z,Cycle;
  char Ans;
  setlocale (LC_ALL, "rus");
  do
  {
    cout <<"Введите действительные числа х и Е такие, что 0<E<=1 \n";
    cin>>x>>eps;

   if (eps>0 && eps<=1)
	    {cout<<"Решить задачу с помощью \n 1-while \n 2-for \n 3-do...while";
             cin>>Cycle;
             switch (Cycle) 
             {
              case 1: sl=epswhile(x, eps,posl,z);break;
              case 2: sl=epsdo(x, eps,posl,z);break;
              case 3: sl=epsfor(x, eps,posl,z);break;
              default: cout<<"\n введите число от 1 до 3 \n";
             }
            cout<<"сумма S="<<s<<"\n последнее слогаемое вошедшее в сумму равно "<<posl<<"\n его номер "<<z;
        }
       else cout<<"Е не принадлежит заданному промежутку";
    
       cout<<"\n Повторить?\t Y/N";
    cin>>Ans;
  } 
  while (Ans=='Y');
}
Yulya92 вне форума Ответить с цитированием
Старый 12.11.2009, 19:56   #2
Yulya92
Новичок
Джуниор
 
Регистрация: 12.11.2009
Сообщений: 3
По умолчанию

вот задание

Yulya92 вне форума Ответить с цитированием
Старый 12.11.2009, 22:24   #3
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

п.2 и п.3
при вычислении
Код:
sl=(pow(-1,d)*log(i*x))/i*(i*i+1);
d -не изменяется, т.к. лежит за пределами цикла.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 12.11.2009 в 22:42.
Sweta вне форума Ответить с цитированием
Старый 12.11.2009, 23:12   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
#include <math.h>
float epswhile(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i=1;
  posl=0;
  while(eps>fabs(sl))
	{
	  d=i+1;
	  sl=(pow(-1,d)*log(i*x))/(i*(i*i+1));
	  s=s+sl;
	  posl=sl;
	  i++;
	}
  z=i-1;
  return s;
}
#include <math.h>
float epsdo(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i=1;
  posl=0;
  do
    {     d=i+1;
	  s=s+sl;
	  sl=(pow(-1,d)*log(i*x))/(i*(i*i+1));
           posl=sl;
	  i++;
    }
  while(eps>fabs(sl));
  z=i-1;
  return s;
}

#include <math.h>
float epsfor(float x,float eps, float& posl,int& z)
{ float s=0,sl=0,d; int i;
  posl=0;
  for(i=1;eps>fabs(sl);i++)
	{
          d=i+1;
	  s=s+sl;
 	  sl=(pow(-1,d)*log(i*x))/(i*(i*i+1));
 	  posl=sl;
	}
  z=i-1;
  return s;
}

#include <iostream>
#include <conio.h>
float epswhile(float x,float eps, float& posl,int& z);
float epsdo(float x,float eps, float& posl,int& z);
float epsfor(float x,float eps, float& posl,int& z);
using namespace std;

void main (void)
{ float x, eps,posl,s,sl;int z,Cycle;
  char Ans;
  setlocale (LC_ALL, "rus");
  do
  {
    cout <<"Введите действительные числа х и Е такие, что 0<E<=1 \n";
    cin>>x>>eps;

   if (eps>0 && eps<=1)
	    {cout<<"Решить задачу с помощью \n 1-while \n 2-for \n 3-do...while"<<endl;
             cin>>Cycle;
             switch (Cycle) 
             {
              case 1: sl=epswhile(x, eps,posl,z);break;
              case 2: sl=epsfor(x, eps,posl,z);break;
              case 3: sl=epsdo(x, eps,posl,z);break;
              default: cout<<"\n введите число от 1 до 3 \n";
             }
            cout<<"сумма S="<<s<<"\n последнее слогаемое вошедшее в сумму равно "<<posl<<"\n его номер "<<z;
        }
       else cout<<"Е не принадлежит заданному промежутку";
    
       cout<<"\n Повторить?\t Y/N"<<endl;
    cin>>Ans;
  }
  while (Ans=='Y');
}
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 12.11.2009, 23:33   #5
Yulya92
Новичок
Джуниор
 
Регистрация: 12.11.2009
Сообщений: 3
По умолчанию

Считает! Спасибо огромное!! Я очень тебе благодарна.
Yulya92 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помочь. Очень срочно!!! RAVEN23 Помощь студентам 5 06.06.2009 20:32
Очень прошу помочь! goggin Помощь студентам 1 15.12.2008 19:11
Очень прошу помочь со SciLab и Maxima ARES-IVAN Помощь студентам 2 19.11.2008 17:39
Очень прошу помочь! Таблица с раширением TBL Миха БД в Delphi 13 29.06.2007 09:46