#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;
}
我正在尝试对“暗淡”元素的向量进行算术平均,
使用功能“功能”;但我收到此错误:
'incompatible type for argument 1 of 'functie' problema3.c /problema3.c line 23 C/C++ Problem'
错误在“ k = functie(v [i],dim)”行上。
我做错了什么?
最佳答案
这个
k=functie(v[i],dim);
以浮点数作为第一个参数调用
functie
,浮点数位于数组i
的位置v
处。您的函数被声明为具有数组类型的参数(它会衰减为一个指向float的指针)。
因此,您正在将浮点数添加到想要指针浮点的内容中。
那就是编译器告诉您的。
为了解决这个问题,您应该查看出现两个非常相似的循环的原因,
一个主要,给
functie
一个接一个的浮动,一个
functie
内部循环遍历所有数组,但没有得到。一旦确定了要循环的位置,您会突然发现解决类型冲突很容易。
不知道要做什么,就不可能提供解决方案代码。
您的代码还有其他问题,不在问题范围内。
例如,仅举几例:
访问大小小于
dim
的数组元素一,尽管仅对dim = 100有效由于缺少大小检查,可能会输入太大的数组
scanf返回值未检查
无法从非数字输入中恢复