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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2008, 21:24   #1
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию Задачи на вычисление суммы

Вычислить бесконечную сумму ряда с заданной точностью e(e>0).

Исправьте пожалуйста код программы, чтобы работало правильно:
Код:
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main()
{
int n,i=1;
float e,s=0,a=1;
cout<<"e=";cin>>e;
while(abs(a)>=e)
{
i++;a/=pow(i,2);s+=i;
}
cout<<"s="<<s<<endl;
getch ();
}
Many man вне форума Ответить с цитированием
Старый 20.12.2008, 21:33   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Наверно, e — это всё-таки погрешность (от слова error).
(Понятие "точность" — тогда не e, а 1/e.)
Ну а сумма, в пределе, =1, это известно?..
Что у Вас cout?
Sasha_Smirnov вне форума Ответить с цитированием
Старый 20.12.2008, 21:40   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Собственно:
Код:
while(a>=e)
{
i++;
a/=2;
s+=a;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.12.2008, 22:04   #4
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Постоянно выходит s=0;
Many man вне форума Ответить с цитированием
Старый 20.12.2008, 22:07   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Постоянно выходит s=0;
Странно.. Проверил несколько раз - все работает.
А вы какое значение e вводите? Нужно, чтобы e было меньше 1.
Например, при e=0.001 s=0.999023
Вот полный код:
Код:
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

int main(){
int i=1;
float e,s=0,a=1;
cout<<"e=";cin>>e;cout<<endl;
while(a>=e)
{
i++;
a/=2;
s+=a;
}
cout<<"s="<<s<<endl;
getch ();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.12.2008, 22:11   #6
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Помогите ещё с одной задачей на сумму :
Вычислить и вывести на экран значение функции F(x) на отрезке [a,b] c шагом h=0.1
c точностью e.Результат работы программы представить в виде таблицы.

Исходный код
Код:
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
float fun(float x, float e, int &n)
{
float s=0,a=1-pow(x,2)/3;
n=0;
while(fabs(a)>=e)
{
s+=a;
a*=pow(x,3)/5;
n++;}
return s;}
int main()
{
float a=0,b=1,e,h=0.1,f,x;
cout<<"e=";cin>>e;
cout<<setprecision(3);
cout<<"i\t x\t f(x)\t n\n";
for(x=a,i=1;x<=b;x+=h,i++)
{
f=fun(x,e,n);
cout<<i<<"\t"<<x<<"\t"<<f<<"\t"<<n<<endl;
getch ();
}
Many man вне форума Ответить с цитированием
Старый 20.12.2008, 22:13   #7
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Странно.. Проверил несколько раз - все работает.
А вы какое значение e вводите? Нужно, чтобы e было меньше 1.
Например, при e=0.001 s=0.999023
Вот полный код:
Код:
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

int main(){
int i=1;
float e,s=0,a=1;
cout<<"e=";cin>>e;cout<<endl;
while(a>=e)
{
i++;
a/=2;
s+=a;
}
cout<<"s="<<s<<endl;
getch ();
return 0;
}
Понял спасибо!
Many man вне форума Ответить с цитированием
Старый 20.12.2008, 22:47   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Many man Постарался оставить побольше из вашего варианта, чтобы вы быстрее разобрались.
Вроде как работает, но хорошо бы проверить.

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

using namespace std;

//вычисление факториала
int fact(int k){
int r=1;
while(k!=1)
 r *= k--;
return r;
}

float fun(float x, float e, int &n)
{
 float s=0,a;
 int stp=4;
 a = 1-pow(x,2)/fact(3);
 n = 0;
 s = a;
 while(fabs(a)>=e)
 {
   a = pow(-1,n)*pow(x,stp)/fact(stp+1);
   stp += 2;
   s += a;
   n++;
  }

 return s;
}

int main(){
float a=0,b=1.0,e,h=0.1,f;
int n;
cout<<"e=";cin>>e;cout<<endl;
cout.precision(3);
cout<<"i\t x\t f(x)\t n\n";
for(int i=1;a<=b;a+=h,i++)
 {
  f = fun(a,e,n);
  cout<<i<<"\t"<<a<<"\t"<<f<<"\t"<<n<<endl;
 }

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

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

Последний раз редактировалось Sazary; 20.12.2008 в 22:49.
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление суммы при переменном диапазоне Million Microsoft Office Excel 1 23.09.2008 15:42
Вычисление суммы первых членов Juhn Паскаль, Turbo Pascal, PascalABC.NET 4 09.12.2007 18:56
StringGrid, вычисление суммы Gorin Компоненты Delphi 5 23.08.2007 19:44