我有一個函數可以計算具有用戶指定大小(維度)的向量的大小
float VectorMagnitude(int vectorA[], int sizeVector)
{
float total = 0;
for (int i = 0; i < sizeVector; i++) {
total = total + (vectorA[i] * vectorA[i]);
}
total = sqrt(total);
return total;
}
如果我打印結果
printf("Magnitude of vector = %.2f\n", VectorMagnitude(Vec, size));
如果我運行調試器vectorA = {7, 5, 7}
(顯然大小為 3),則total
返回之前的值是 11.09...(這是正確的)。
但是,打印值為 0.0。
我究竟做錯了什麼?(它用於 uni 項目,因此隨機值只是填充物,我還不需要使用實際值)
完整代碼 main.c
#include <stdio.h>
#include <stdlib.h>
#include "matrixOperations.h"
int main()
{
int size;
printf("Enter size of vector:\n");
scanf("%d",&size);
int Vec[size];
FillMatrix(Vec,1,size);
DisplayMatrix(Vec,1,size);
printf("Magnitude of vector = %.2f\n",VectorMagnitude(Vec,size));
return 0;
}
矩陣操作.c
#include "matrixOperations.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/////////////////////////////////
void DisplayMatrix(int matrix[], int sizeRow, int sizeCol)
{ printf("Print matrix:\n");
for (int i=0;i<sizeRow;i++)
{
for (int j=0;j<sizeCol;j++)
{
printf("%d ", matrix[i*sizeCol+j]);
}
printf("\n");
}
printf("\n");
}
////////////////////////////////////////////////
void FillMatrix(int matrix[], int sizeRow, int sizeCol)
{
srand(time(0));
for (int i=0;i<sizeRow;i++)
{
for (int j=0;j<sizeCol;j++)
{
matrix[i*sizeCol+j]=rand()%10;
}
}
}
/////////////////////////////////////////////////////////////
float VectorMagnitude(int vectorA[], int sizeVector)
{
float total=0;
for (int i=0;i<sizeVector;i++)
{
total=total+ (vectorA[i]*vectorA[i]);
}
total = sqrt(total);
return total;
}
/////////////////////////////////////////////////////////////
矩陣操作.h
#ifndef MATRIXOPERATIONS_H_INCLUDED
#define MATRIXOPERATIONS_H_INCLUDED
#endif // MATRIXOPERATIONS_H_INCLUDED
你#include "matrixOperations.h"
在 main.c 中丟失了......錯誤......我的意思是:你在函數的範圍內缺少一個有效的原型(在沒有原型的情況下,C 假設函數接受int
參數並返回int
值)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句