比较float和float的元素数组时出错



所以我有一个程序来创建一个数组并向其添加6个等级,然后它必须在不同的函数中计算平均值,然后检查哪些等级高于平均值。这一切都起了作用,直到这个小操作开始抛出这样的错误:main.c:29:18:错误:二进制<(有"浮动(*((浮动*("one_answers"浮动"(

#include <stdio.h>
#include <stdlib.h>
float media(float grades[]){
int sum = 0;
for(int i = 0; i < 5; i++){
sum += grades[i];
}
float media = sum/6;
printf("A media é %f", media);
return media;
}
int acimamedia(float media(float grades[]), float vetor[], int x){
for(int i = 0; i < 6;i++){
float z = vetor[i];   
if(media < z){       // <<<<<<<<<<<<< [Error here]
x += 1;
}
}
return x;
}
int main(int argc, char** argv) {
float grades[6];
int acimadamedia;
printf("As notas sao: n");
for(int i = 0; i < 6; i++){
grades[i] = rand()%100;
printf("Nota [%d] -- %f",i , grades[i]);
}
printf("Existem %d notas acima da media.", acimadamedia());

media是一个函数声明:

float media(float grades[]) 

z是单个浮点值

所以你试图将函数指针与浮点值进行比较,因此错误与它所说的完全一样:

error: invalid operands to binary < (have 'float (*)(float *)' and 'float') 

此外,您对acimadamedia((的调用试图将整数视为函数。

如果我有点理解你想做什么,并对你的代码做最小的更改:

#include <stdio.h>
#include <stdlib.h>
float media(float grades[]){
int sum = 0;
for(int i = 0; i < 5; i++){
sum += grades[i];
}
float media = sum/6;
printf("A media é %fn", media);
return media;
}
int acimamedia(float media(float grades[]), float vetor[]){
int x = 0;
float avg = media(vetor);
for(int i = 0; i < 6;i++){
float z = vetor[i];
if(avg < z){
x += 1;
}
}
return x;
}
int main(int argc, char** argv) {
float grades[6];
int acimadamedia;
printf("As notas sao: n");
for(int i = 0; i < 6; i++){
grades[i] = rand()%100;
printf("Nota [%d] -- %fn",i , grades[i]);
}
acimadamedia = acimamedia(&media, grades);
printf("Existem %d notas acima da media.n", acimadamedia);
return 0;
}

将显示等级、平均等级和高于平均的等级数量

通常用于传递函数的acimamedia函数被指定为:

int acimamedia(float (*media)(float grades[]), float vetor[])

最新更新