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

Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63) - C++

Восстановить пароль Регистрация
 
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
14.11.2012, 19:14     Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63) #1
Всем привет помогите пожалуйсто с примером
Вводим Х с клавиатуры
Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63)
Заранее благодарю
P.S. в качестве ввода и вывода информации нужно использовать printf(); и scanf_s();

Добавлено через 41 минуту
очень нужно у самого неправильно считает (
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
14.11.2012, 19:28     Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63) #2
А как вы считаете?
наверняка вначале все умножаете, а потом делите?
скорее всего происходит переполнение
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
14.11.2012, 19:56  [ТС]     Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63) #3
покачто имеется вот это
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
#include <conio.h>
#include <iostream>
#include <math.h> 
 
using namespace std;
void main()
{
    setlocale(0, "russian");
    double x = 0, Result_1 = -1 , Result_2 = 1 , Result = 0 ;
    cout << "введите значение х = "; cin >> x;
    for(int i = 1 ; i <= 6 ; i++)
    {
        Result_1 = (x - pow(2.0 , i));
        Result_1 = Result_1 * ( x - pow(2.0 , i + 1));
        //cout << Result_1 << endl;
    }
    for(double j = 1 ; j <= 63 ; j = j + 2)
    {
        Result_2 = Result_2 * (x-j);
        //cout << Result_2;
    }
    Result = Result_1 / Result_2 ;
    cout << Result;
    _getch();
}
Добавлено через 7 минут
При некоторых значениях Х например 1 , Result получается -1#.INF что это озночает ?)

Добавлено через 11 минут
а если выводить и вводить информацию с помощью printf и scanf_s то каким бы нибыло значение Х , Result всегда получается 0,00000
maxiv608
3 / 3 / 0
Регистрация: 10.08.2012
Сообщений: 9
14.11.2012, 20:03     Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63) #4
Цитата Сообщение от Starscream Посмотреть сообщение
При некоторых значениях Х например 1 , Result получается -1#.INF что это озночает ?)
При х=1 выходит деление на ноль.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
14.11.2012, 20:14     Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63) #5
а какие х ты вводишь и что ожидаешь увидеть?
введёшь натуральные чётные <=64 будет 0
введёшь натуральные нечётные <=64 будет деление на 0
а ввести дробные. Ну так кто его знает верный ответ или нет?
Вобщем, оба варианта выводят одинаковый ответ
твой вариант исправленный
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
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
    setlocale(0, "russian");
    double x = 0;
    double Result1=1.0;
    double Result2=1.0;
    double Result;
    cout << "введите значение х = "; cin >> x;
    int r=1;
    for(int i = 1 ; i <= 6 ; i++)     //for (r=1; r<13; r++)
    {
        Result1 = Result1 *(x - (1<<i));///(x-r);
        //r+=2;
    }
    for (r=1; r<64; r+=2)
    //while(r<64)
    {
        Result2 = Result2*(x-r);
    //  r+=2;
    }
    cout << Result1/Result2;
    _getch();
return 0;
}
Вариант, предложенный доктором I.M.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{
    setlocale(0, "russian");
    double x = 0;
    double Result=1.0;
    cout << "введите значение х = "; cin >> x;
    int r=1;
    for(int i = 1 ; i <= 6 ; i++)     //for (r=1; r<13; r++)
    {
         
        Result = Result *(x - (1<<i))/(x-r);
        r+=2;
    }
    
    while(r<64)
    {
        Result = Result/(x-r);
        r+=2;
    }
    cout << Result;
    _getch();
return 0;
}
LeMax24
51 / 13 / 2
Регистрация: 29.09.2012
Сообщений: 90
18.11.2012, 13:36     Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63) #6
Думаю так , если даже чисто математически решать должно быть правельно..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main()
{
    setlocale (LC_ALL, "Russian");
    double Summa = 0, Result1 = 1, Result2 = 1, x = 0;
 
    std::cout << "Введите Х: ";
    std::cin >> x;
 
    for(int i = 2; i <= 64; i += 2)
        Result1 *= (x - i);
 
    for(int j = 1; j <= 63; j += 2)
        Result2 *= (x - j);
 
    Summa = Result1 / Result2;
 
    std::cout << "Сумма = " << Summa << std::endl;
 
    system("pause");
    return 0;
}
Yandex
Объявления
18.11.2012, 13:36     Вычислить Sum = ((x-2)(x-4)(x-8) . . . (x-64)) / (x-1)(x-3)(x-5) . . . (x-63)
Ответ Создать тему
Опции темы

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