#include<stdio.h>
float functie(float vec[100],int dim2)
{
int j;
float suma,medie;
for(j=1;j<=dim2;j++)
{
suma=suma+vec[j];
}
medie=suma/dim2;
return medie;
}
int main()
{
int dim ,i;
float v[100],k;
printf("Introduceti dimensiunea: ");
scanf("%d",&dim);
for(i=1;i<=dim;i++)
{
printf("v[%d]= ",i);
scanf("%f",&v[i]);
}
k=functie(v[i],dim);
printf("Date de iesire: %.2f",k);
return 0;
}
我正在尝试对&#34; dim&#34;的向量进行算术平均。元素,
使用功能&#34; functie&#34 ;;但是我收到了这个错误:
'incompatible type for argument 1 of 'functie' problema3.c /problema3.c line 23 C/C++ Problem'
错误发生在&#34; k = functie(v [i],dim)&#34;行。
我做错了什么?
答案 0 :(得分:1)
此
k=functie(v[i],dim);
使用float作为第一个参数调用functie
,浮点数组i
的位置v
。
您的函数被声明为具有数组类型的参数(它衰变为指向float的指针)
所以你要把一个浮子喂给想要指针漂浮的东西
这就是编译器告诉你的。
为了解决问题,你应该检查两个非常相似的循环的原因,
一个在主,一个接一个地浮动到functie
,
一个内部functie
循环遍历所有数组,它没有得到
一旦你决定了你想要循环的地方,你就会突然发现解决类型冲突很容易
在不知道您想要做什么的情况下,无法提供解决方案代码。
您的代码还存在其他问题,这些问题不在您的问题范围内。
,例如,仅举几例:
dim
的数组元素1,但这只对dim = 100 答案 1 :(得分:0)
`k=functie(v,dim);`
如果要将数组作为参数传输,则应传输数组的原始地址(它表示数组的名称)
答案 2 :(得分:0)
在致电functie
时,您传递的是单个数组元素,而不是整个数组。该单个元素的类型为float
,其中函数期望float *
(浮点指针)。
如果要将整个数组作为参数传递,只需传递数组名称(无下标):
k = functie( v, dim );