2015-11-24 2 views
0

Я не могу найти здесь ошибку, я пытаюсь вставить массив tMax в функцию avgMax.Как вставить одномерный массив в функцию

Ошибка: Названный объект 'Tmax' это не функция или указатель на функцию ...

Мой код:

#include <stdio.h> 
int avgMax(int tMax[6]) 
{ 
    int i,avgH=0; 
      for(i=0;i<6;i++) 
      { 
       avgH +=tMax[i]; 
      } 
    return avgH; 
} 

int main() 
{ 

    int tMax[6],tMin[6],i,j,avgH; 

      avgH=0; 

      for(i=0;i<6;i++) 
      { 
       printf("Temperatura maxima din %d zi : \n", i+1); 
        scanf(" %d",&tMax[i]); 
      } 

      for(j=0;j<6;j++) 
      { 
       printf("Temperatura minima din %d zi : \n", j+1); 
        scanf(" %d",&tMin[j]); 
      } 

      for(i=0;i<6;i++) 
      { 
       avgH +=tMax[i]; 
      } 


     printf("Average temperature max = %d",avgMax(tMax(6))); 

    return 0; 
} 
+1

'avgMax (Tmax (6))' ==> 'avgMax (Tmax)' –

ответ

0

В C, когда вы передать массив в функцию он преобразуется в указатель, так как длина, который указывается в официальном параметр tMax игнорируется компилятором. Рекомендуемый подход состоит в том, чтобы передать длину массива как отдельный параметр. В модифицированной версии ниже я также использовать наиболее удобный LEN макрос:

#include <stdio.h> 

#define LEN(arr) (sizeof (arr)/sizeof (arr)[0]) 

int avgMax(const int tMax[], int tMaxLen) 
{ 
    int i, avgH = 0; 
    for (i = 0; i < tMaxLen; i++) { 
     avgH += tMax[i]; 
    } 
    return avgH; 
} 


int main() 
{ 

    int tMax[6], tMin[6], i, j, avgH; 

    avgH = 0; 

    for (i = 0; i < LEN(tMax); i++) { 
     printf("Temperatura maxima din %d zi : \n", i + 1); 
     scanf(" %d", &tMax[i]); 
    } 

    for (j = 0; j < LEN(tMin); j++) { 
     printf("Temperatura minima din %d zi : \n", j + 1); 
     scanf(" %d", &tMin[j]); 
    } 

    for (i = 0; i < LEN(tMax); i++) { 
     avgH += tMax[i]; 
    } 

    printf("Average temperature max = %d\n", avgMax(tMax, LEN(tMax))); 

    return 0; 
} 
0

Последнее, но одна строка:

printf("Average temperature max = %d",avgMax(tMax(6))); 

Должно быть:

printf("Average temperature max = %d",avgMax(tMax)); 
0

Проблема возникает здесь:

printf("Average temperature max = %d",avgMax(tMax(6))); 

с этим синтаксисом tMax(6) вы пытаетесь вызвать функцию с именем Tmax.

Чтобы передать ваш массив в качестве аргумента изменить линию:

printf("Average temperature max = %d",avgMax(tMax)); 
Смежные вопросы