1

Тема: Виправити помилки в коді

Потрібно знайти суму ряду (картинка):
х=3.5
n=10


Є наступний код

#include <iostream>
#include <cmath>
using namespace std;
int fact(int x) {
    int p = 1;
    if (x == 0) return 1;
    for (int i = x; i >= 1; --i) {
        p *= i;
    }
    return p;
}

int main() {

    int n = 10, i = 2, j = 1;
    double S = 0;
    double x=3.5;
while (i++ <= 10);
{
    S +=  pow(x, j) / fact(i);
    ++i;
    j += 1;

}
    cout << S << endl;

    return 0;
}
Post's attachments

Снимок экрана 2020-10-05 132112.png 1.58 kb, 53 downloads since 2020-10-05 

2

Re: Виправити помилки в коді

Рішення у маткаді є: https://replace.org.ua/uploads/images/8036/7c7dea9e3e69e6e7bbd50213cdad8013.png
Кодом я ніяк не зрозумію як виправити

3

Re: Виправити помилки в коді

А чому ви вирішили, що в цьому коді є помилки?

4

Re: Виправити помилки в коді

koala написав:

А чому ви вирішили, що в цьому коді є помилки?

Відповідь невірна, а даний ряд був порахований у Exel та у маткаді, відповідь там однакова. Ось відповідь у Visual Studio https://replace.org.ua/uploads/images/8036/bf2fc8c655fc603526050f9bdabbc198.png

5

Re: Виправити помилки в коді

В MATCAD який тип даних для змінних використовували?

6

Re: Виправити помилки в коді

Я не питатиму, кого зраджує ваша відповідь, лише вкажу на те, що ви в циклі два рази інкремент робите. Ну й j там зайве, вистачить самого i.
Ну і вирівнюйте код, ви самі собі життя ускладнюєте.

7

Re: Виправити помилки в коді

koala написав:

Я не питатиму, кого зраджує ваша відповідь, лише вкажу на те, що ви в циклі два рази інкремент робите. Ну й j там зайве, вистачить самого i.
Ну і вирівнюйте код, ви самі собі життя ускладнюєте.

Дякую! Тепер працює правильно.

8 Востаннє редагувалося ur_naz (05.10.2020 20:19:31)

Re: Виправити помилки в коді

Рішення у маткаді є: https://replace.org.ua/uploads/images/8 … ad8013.png

це є помилкове рішення

9

Re: Виправити помилки в коді

При і=1, там вже 3.5 в суму додається. Як там 0.76 може вийти.

Подякували: leofun011