Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Математические операции


Автор: Scorpio 14.11.2006, 19:40
Требуется небольшая помощь:

Нужно посчитать произведение (1 + sin(kx)/k!). K изменяется от 1 до n, которое вводит пользователь, x также задается пользователем.

Вот мое решение (не работает):

Код

#include <stdio.h>
#include<math.h>

float n, k, f = 1;
float x, al, P;

int main ( void )
{
    printf("Input value for n: ");
    scanf("%d", &n);
    printf("Input value for x: ");
    scanf("%f", &x);
    
    P = 0;
    for( k = 1; k <= n; k++)
    {
         f = f * k;
         P *= 1 + sin(k*x)/f;
    }      
    
    printf("Proizvedenie ravno %f", P);
    
    getch();
}


Кто-нибудь мог бы подсказать что не правильно?

Автор: Kuvaldis 14.11.2006, 20:00
Scorpio,
1. Если ты считаешь произведение, то первый член должен быть 1, а не 0 (иначе всегда произведение будет 0)
2. лучше всегда использовать тип double, так как именно этот тип возвращается большинством функций из <math.h> 
Код

//----------------------------------------
#include <stdio.h>    
#include <conio.h>
#include<math.h>
//----------------------------------------    
int    n, k, f = 1;    
double x, P;    
int main ( void )    
{    
    printf("Input value for n: ");    
    scanf("%d", &n);    
    printf("Input value for x: ");    
    scanf("%lf", &x);    
     
    P = 1;    
    for( k = 1; k <= n; k++)    
    {    
         f = f * k;    
         P *= 1 + sin(k * x) / f;    
    }       
     
    printf("Proizvedenie ravno %6.1lf", P);    
     
    getch();
    return 0;
}
//----------------------------------------

Автор: Scorpio 14.11.2006, 21:13
Спасибо! Вроде разобрался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)