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

Посчитать по формуле - C++

Восстановить пароль Регистрация
 
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
17.01.2014, 17:03     Посчитать по формуле #1
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{(x-2)(x-4)(x-8)(x-16)...(x-128)}{(x-1)(x-3)(x-7)(x-15)...(x-127)}

При любом введеном числе происходит деление на ноль. Как избавиться от этого?

ЗЫ. Кажется понял свою ошибку. i++ стоит заменить на i*=2, и при расчете знаменателя делать i-2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int i;
    float x;
    float result, pr1 = 1, pr2 = 1;
    cout << "Введите X: ";
    cin >> x;
    for (i = 1; i <= 128; i++)
    {
        if (i % 2 == 0)
            pr1 *= (x - i);
        else
            pr2 *= (x - i);
    }
    result = pr1 / pr2;
    cout << "Результат: " << result << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2014, 17:03     Посчитать по формуле
Посмотрите здесь:

Вычислить по формуле C++
C++ вычисление по формуле
Вычислить по формуле C++
Вычислить по формуле Вычислить по формуле C++
Вычислить по формуле C++
C++ Ошибка в формуле
Посчитать Si для элементов каждой строки по формуле C++
C++ Посчитать числа по формуле

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.01.2014, 17:35     Посчитать по формуле #2
Цитата Сообщение от Harmonster Посмотреть сообщение
При любом введеном числе происходит деление на ноль. Как избавиться от этого?
Если Вы введете нечетное в диапазоне [1..127], то всё равно получите ошибку деления на ноль.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
17.01.2014, 18:15     Посчитать по формуле #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main()
{
    double x;
    std::cout << "x: ";
    std::cin >> x;
 
    double uppPartMult(1), downPartMult(1);
    for (size_t i = 2; i <= 128; i *= 2) {
        uppPartMult *= (x - i);
        downPartMult *= (x - i - 1);
    }
    std::cout << "Result: " << (uppPartMult / downPartMult) << std::endl;
 
    std::system("pause");
    return 0;
}
Yandex
Объявления
17.01.2014, 18:15     Посчитать по формуле
Ответ Создать тему
Опции темы

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