#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返回值未检查
无法从非数字输入中恢复

07-26 05:21