1

Тема: цикли в Сі

Привіт, підкажіть, будь ласка, як правильно реалізувати дану задачу на Сі:
потрібно ввести дійсне число x та обчислити добуток x*(x-1/x)*(x-2/x)*(x-3/x)*...*(x-25/x).
В програмування нещодавно. Ось перші спроби написати код:

#include <stdlib.h>
#include <stdio.h>
#define MAX 25

int main()
{
    system("chcp 1251");
    double x, i = 0, res = 0, c = 1;
    printf("Введіть значення x:");
    scanf_s("&f", &x);
    while (i < MAX) {
        res = x * (x - c / x);
        c = c + 1;
        i++;
    }
    printf("Результат добутку x*(x-1/x)*(x-2/x)*...*(x-25/x)= %0.5f", res);
    getchar();
}

2

Re: цикли в Сі

так ви на кожному етапі циклу перезаписуєте res, а воно має множитись на попереднє

3

Re: цикли в Сі

FakiNyan написав:

так ви на кожному етапі циклу перезаписуєте res, а воно має множитись на попереднє

Не підкажете, будь ласка, як зробити правильно?

4 Востаннє редагувалося FakiNyan (23.01.2021 15:59:04)

Re: цикли в Сі

SiriusBlack написав:
FakiNyan написав:

так ви на кожному етапі циклу перезаписуєте res, а воно має множитись на попереднє

Не підкажете, будь ласка, як зробити правильно?

тре використовувати попереднє значення при обрахунку наступного, а ще у вас нащось використовується c, та i, при цьому обидва збільшуються на 1, адже i++, це те саме що й i = i +1

я б оте c взагалі прибрав, і най би було тіко i

while (i < MAX) {
        x *= (x - i / x); // те саме, що x = x * (x - i / x)
        i++;
    }
Подякували: SiriusBlack1

5

Re: цикли в Сі

Тобто щось ось таке би мало бути:

 while (i < MAX) {
        x *= (x - i / x); 
        res = x*res;
      i++;

Якщо чесно, то не до кінця все це розумію(((

6

Re: цикли в Сі

SiriusBlack написав:

Якщо чесно, то не до кінця все це розумію(((

Що ж тут не зрозуміло. Для того щоб обчислювати наступний крок функції, потрібно знати попередній.

#include <stddef.h>

int main()
{
    long double x = (-4.14L), // Ініціалізуємо змінну x вручну
        p = x;

    size_t n = 1;
    while (n <= 25)
        p = p * (x - n / x), n++;

    return 0;
}

І до чого ви у темі вказали цикли в Сі? Модераторам потрібно створити гілку на форумі "Допоможіть розв'язати домашку".

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

7

Re: цикли в Сі

Прошу вибачення, що набридаю. Але в мене не виходить:

#include <stdlib.h>
#include <stdio.h>
#define MAX 25

int main()
{
    system("chcp 1251");
   double x, i = 1, res = 0;
    printf("Введіть значення x:");
    scanf_s("%f", &x);
    while (i < MAX) {
        res = x;
        res = res * (x - i / x);
        i++;
    }
    printf("Результат добутку x*(x-1/x)*(x-2/x)*...*(x-25/x)= %0.5f", res);
    return 0;
}

Виходить щось ось таке:

Введіть значення x:11

Результат добутку x*(x-1/x)*(x-2/x)*...*(x-25/x)= 8567280404611006264688284146259184102164488405110255869302943159450107127459734303857158746440272983053373599573553165893632.00000

8 Востаннє редагувалося lucas-kane (23.01.2021 17:42:30)

Re: цикли в Сі

SiriusBlack написав:

Прошу вибачення, що набридаю. Але в мене не виходить:

Прихований текст
#include <stdlib.h>
#include <stdio.h>
#define MAX 25

int main()
{
    system("chcp 1251");
   double x, i = 1, res = 0;
    printf("Введіть значення x:");
    scanf_s("%f", &x);
    while (i < MAX) {
        res = x;
        res = res * (x - i / x);
        i++;
    }
    printf("Результат добутку x*(x-1/x)*(x-2/x)*...*(x-25/x)= %0.5f", res);
    return 0;
}

Виходить щось ось таке:

Введіть значення x:11

Результат добутку x*(x-1/x)*(x-2/x)*...*(x-25/x)= 8567280404611006264688284146259184102164488405110255869302943159450107127459734303857158746440272983053373599573553165893632.00000

#include <stdlib.h>
#include <stdio.h>
#define MAX 25

int main()
{
    long double x, i = 1;

    printf("Введіть значення x:");
    scanf_s("%lf", &x);

    long double res = x;
    while (i <= MAX) {
        res = res * (x - i / x);
        i++;
    }
    printf("Результат добутку x*(x-1/x)*(x-2/x)*...*(x-25/x)= %Le", res);
    return 0;
}
Прихований текст

https://www.google.com/search?rlz=1C1CH … 9wQ4dUDCA0
Знайдіть x = 11 і подивіться який там степінь на десяткою.

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

9

Re: цикли в Сі

Ще раз прошу вибачення, що набридаю. Але ну дуже хочу навчитися програмуванню