Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2020, 15:18   #1
Banki
 
Регистрация: 13.11.2020
Сообщений: 9
По умолчанию Вычислить n сомножителей произведения. Си

Допер только до этого, проблема появляется при N="нечетное число"

Код:
int main()
{
    int N, i;
    float rez=1;
    printf("Введите N = ");
    scanf("%d", &N);
 
    for (i=2; i<=N; i++)
    {
        rez=rez*i/(i-1)*i/(i+1);
    }
 
    printf("%lf", rez);
    return 0;
В итоге пришел к этому, но отказывается считать REZ

Код:
int main()
{
    int N, i;
    int a=2, b=1; //a-числитель b-знаменатель
    int d_a=0, d_b=2; //прибавка к числителю и знаменателю

    printf("Введите N = ");
    scanf("%d", &N);

    for (float rez=1, i=0; i<=N; i++)
    {
        rez*=(a/b);

        a=a+d_a;
        b=b+d_b;

        d_a=2-d_a;
        d_b=2-d_b;
        printf("a=%d, b=%d, rez=%.2lf\n", a, b, rez);
    }


    return 0;
}
Изображения
Тип файла: png Безымянный.png (2.5 Кб, 24 просмотров)
Banki вне форума Ответить с цитированием
Старый 15.11.2020, 07:32   #2
ep1ckby
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 20
По умолчанию

Код:
int a=2,b=1;
int n;
    cin >> n;
    int *arr = new int[n];
    for(int i=0;i<n;i++)
    {
        arr[i] = a;
        if(i==0)
        {
            a=a;
        }
        if(i%2!=0)
        {
            a+=2;
        }
    }
    int *arr1 =new int[n];
    for(int i=0;i<n;i++)
    {
        arr1[i] = b;
        if(i%2==0)
        {
            b+=2;
        }
    }
что то на подобии логики для увеличения а и б )

Последний раз редактировалось ep1ckby; 15.11.2020 в 07:42.
ep1ckby вне форума Ответить с цитированием
Старый 15.11.2020, 12:48   #3
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Там ошибка - целочисленное деление (a/b) равно 0 при a<b.
Поэтому нужно
Код:
rez = (rez*a)/b;
А на другом форуме советовал упростить выражение
Код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int n=8;
 
    double rez=1.0;
    int a=2;        //числитель
    int b=1;        //знаменатель
    int delta=0;    //добавка к числителю и знаменателю для перехода к следующему элементу
    for(int i=0; i<n; i++)
    {
        rez=(rez*a)/b;
 
        a=a+delta;
        delta ^=2;
        b=b+delta;
    };
    printf("%f", rez);
    return 0;
}
FPaul вне форума Ответить с цитированием
Старый 26.11.2020, 13:34   #4
Banki
 
Регистрация: 13.11.2020
Сообщений: 9
По умолчанию

Спасибо за помощь!
Banki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычислить отношение произведения всех элементов больших 1,5 к их сумме галл Паскаль, Turbo Pascal, PascalABC.NET 0 12.10.2013 01:24
Вычислить и запомнить в массивах P(n) и K(n) произведения и количество положительных элементов строк матрицы D(n,m) (кубэйсик) Lika_ Помощь студентам 1 21.10.2012 13:33
вычислить квадратный корень из произведения модулей чётных элементов Visual Basic Madmozavr Microsoft Office Excel 2 21.05.2010 16:41
вычислить сумму скалярного произведения векторов 2sin Помощь студентам 1 19.05.2010 00:04
Как в С++ Вычислить произведение первых N сомножителей? JiLiYa Общие вопросы C/C++ 2 18.02.2009 12:30