Форум программистов, компьютерный форум CyberForum.ru

В чем ошибка и как исправить? - C++

Восстановить пароль Регистрация
 
Zapt1k
1 / 1 / 0
Регистрация: 08.05.2013
Сообщений: 25
12.05.2013, 16:40     В чем ошибка и как исправить? #1
Была задача написать программу с использованием рекуррентных соотношений. (см. вложение) Выдал ошибку. вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>
#include <conio.h>
void main ()
{int c,k,n,x;
double s;
cout<<"x="; cin>>x;
cout<<"n="; cin>>n;
s=0;
c=-1;
k=-1;
do
{c=(c*x*x)/(k+1);
k=k+1;
s=s+c;}  while (k<=n);
cout<<"s="<<s<<endl;
getch ();
}
Миниатюры
В чем ошибка и как исправить?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
12.05.2013, 16:52     В чем ошибка и как исправить? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <conio.h>
using namespace std;
void main ()
{
    int k,n;
    double c,s,x;
    cout<<"x="; cin>>x;
    cout<<"n="; cin>>n;
    
    c=-1./x;
    s=c;// первый член (при к=-1)
    k=0;
    do
    {
        c=(c*x*x)/(k+1.); // второй и последующие
        s+=c;
        k++;
    }while (k<=n);
    cout<<"s="<<s<<endl;
    getch();
}
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
12.05.2013, 17:04     В чем ошибка и как исправить? #3
Цитата Сообщение от Zapt1k Посмотреть сообщение
Выдал ошибку.
Действительно выдал ошибку.

Неправильно считаете не те формулы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <cmath>
#include <iostream>
#include <iomanip>
 
/* забьем на гамма-функции, и примем, что факториал может быть только 
 * у положительного числа
 */
unsigned long int factorial(unsigned int number) {
  unsigned long int result = 1;
  while (number > 1) {
    result *= number--;
  }
  return result;
}; 
 
/*
 * Значение выражения 2 * k + 3 будет всегда нечетным.
 * Поэтому (-1) в степени 2 * k + 3 всегда будет равно -1.
 * Бессмысленную операцию нафиг.
 */
 
int main(int argc, char *argv[]) {
  double result = 0;
  int n = 5;
  double x = 2;
  
  for (int k = -1; k <= n; ++k) {
    result += pow(x, 2 * k + 1) / factorial(k + 1);
  }
  
  std::cout << std::fixed << std::setprecision(4) << result << std::endl;
  return 0;
}
Zapt1k
1 / 1 / 0
Регистрация: 08.05.2013
Сообщений: 25
12.05.2013, 17:07  [ТС]     В чем ошибка и как исправить? #4
zss, а без 3 строки как написать? учитывая то, что я это вижу впервые не думаю, что мой препод будет в восторге.

Добавлено через 1 минуту
lemegeton, а здесь для меня все очень сложно)
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
12.05.2013, 17:11     В чем ошибка и как исправить? #5
Цитата Сообщение от Zapt1k Посмотреть сообщение
lemegeton, а здесь для меня все очень сложно)
В чем сложность?
Еще, вы умножили c на икс квадрат. Это отличается от задания. Вы не считаете факториал, это отличается от задания...

Цитата Сообщение от Zapt1k Посмотреть сообщение
zss, а без 3 строки как написать?
Припишите std:: к cin, cout и endl.
Zapt1k
1 / 1 / 0
Регистрация: 08.05.2013
Сообщений: 25
12.05.2013, 17:19  [ТС]     В чем ошибка и как исправить? #6
Всем спасибо. можно закрывать тему)
Yandex
Объявления
12.05.2013, 17:19     В чем ошибка и как исправить?
Ответ Создать тему
Опции темы

Текущее время: 21:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru