Recebendo erro "Comparison between pointer and integer"

Pessoal estou tentando escrever um codigo de medicao de temparatura e estou recebendo esse erro.

Pelo que entendi sao os sinais de menor/maior. Mas antes de usar os arrays estavam dando certo.

int high[3];
int low[3];
int i;
int maximum = 40;
int minimum = -40;

double total;
double average;

for (i = 0; i < NUMS; ++i) {
        
    do{
        printf("Enter the high value for day %d: \n", i+1);
        scanf("%d", &high[i]);
        printf("Enter the low value for day %d: \n", i+1);
        scanf("%d", &low[i]);  
    
        if ((high > maximum) || (low < minimum) || (high < low)){
                printf ("Incorrect values, temperatures must be in the range -40 to 40, high must be greater than low.\n");
        }
    } while((high > maximum) || (low < minimum) || (high < low));

    total = high[i] + low[i];
    
    average = total / NUMS;

    printf("The average (mean) temperature was: %.2f\n", average);
}

Ajudaria se você tivesse colocado em quais linhas o compilador acusa o erro. :grin:

Sim, o problema é nas comparações, mas porque você não está especificando o índice que quer comparar, e está tentando comparar o ponteiro do array nas linhas:

if ((high > maximum) || (low < minimum) || (high < low)){
e
while((high > maximum) || (low < minimum) || (high < low));

Troque por algo como:

if ((high[0] > maximum) || (low[0] < minimum) || (high[0] < low[0])){
e
while((high[0] > maximum) || (low[0] < minimum) || (high[0] < low[0]));

Obs: talvez outros ajustes similares sejam necessários

Só não entendi o porquê de você estar tentando usar arrays. Se sim, o que ia fazer com os demais valores? Está tentando tirar a média de várias (3) temperaturas?

Abraço.

Obrigado TerraSkill, realmente poderia ter explicado onde era…Mas ontem a noite eu consegui e cheguei a esse final.

E sim, vc acertou estou tentando tirar a media, agora de 4 valores. E tambem salvar agora maxima e minima temperatura e registrar o dia em que aconteceu.

Porem estou preso na logica de como calcular em qual dia o valor for exibido.

int high[NUMS];
int low[NUMS];

int maximum = 40;
int minimum = -40;

int i;

float total;
float average;

printf("---=== IPC Temperature Analyzer ===---\n");

for (i = 0; i < NUMS; ++i) {
        
    do{
        printf("Enter the high value for day %d: \n", i+1);
        scanf("%d", &high[i]);
        printf("Enter the low value for day %d: \n", i+1);
        scanf("%d", &low[i]);  
    
       if ((high[i] > maximum) || (low[i] < minimum) || (high[i] < low[i])){
                printf ("Incorrect values, temperatures must be in the range -40 to 40, high must be greater than low.\n");
        }

    } while((high[i] > maximum) || (low[i] < minimum) || (high[i] < low[i]));

    total = total + (high[i] + low[i]);

}

for(i = 1; i < NUMS; ++i) 

{
   if((high[0] < high[i]))
       high[0] = high[i];

   if ((low[0] > low[i])) 
       low[0] = low[i];
}

 average = (total / (NUMS * 2));

printf("The average (mean) temperature was: %.2f\n", average);
printf("The highest temperature was %d, on day %d\n", high[0], high[0]);
printf("The lowest temperature was %d, on day %d\n", low[0], low[0]);

return 0;

Nao tive muitas aulas de arrays, por isso a dificuldade. :neutral_face:

Mas é obrigatório o uso de arrays? Porque você não precisa deles para esse exercício. Se você usar uma variáveis auxiliares ao invés de ler diretamente para as variáveis (ou arrays) high e low, pode somar os 4 valores lidos em uma mesma variável (para fazer a média depois) e usar as variáveis high e low para armazenar somente a maior e menor temperatura (e uma outra para armazenar o dia).

Abraço.

Arrays nao sao obrigatorios nao. Apenas usei pq pensei que era o caso mais facil de calcular e quando quiser saber qual o maior/menor valor.

Mas nao entendi como usar as variaveis auxiliares. Vou trabalhar agora e mais tarde tento novamente.