Внутренний продукт с использованием функции в C - PullRequest
0 голосов
/ 13 января 2019

Я пытался вычислить внутренний продукт, используя функцию, но возвращаемое значение неверно.

/* Inner product x[n]*y[n]   */

#include <stdio.h>
#define n 5

void main()
{
    int i,sum;
    int x[n]={1,2,-1,3,5};
    int y[n]={0,6,-2,4,1};
    sum=inner_prod(x[n],y[n]);
    printf("\nThe inner product = %d",sum);
}

int inner_prod( int a[n], int b[n] )
{
    int i, s=0;
    for(i=0;i<n;i++)
        s=s+b[i]*a[i];
    return (s);
}

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Насколько я знаю, передача массива некорректна. Вы можете просто сделать

в main():

sum = inner_prod(x, y)

и в inner_prod() функция:

int inner_prod(int *a, int *b)
{
    ....
}

Кроме того, определите эту функцию inner_prod() над функцией main().

0 голосов
/ 13 января 2019

Точечное произведение двух векторов x, y в вашем случае должно привести к 31 и будет сделано с вашей функцией inner_prod, но вы вычислили точечное произведение для x * x, что в вашем случае приводит к 40 ..

Короче говоря, разве вы не сделали опечатку?

sum=inner_prod(x[n],x[n]);

Я полагаю, вы хотели, чтобы это было следующим?

sum=inner_prod(x,y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...