Recebendo erro "Comparison between pointer and integer"
4 respostas
Erik_Gabriel
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.
inthigh[3];intlow[3];inti;intmaximum=40;intminimum=-40;doubletotal;doubleaverage;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.
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:
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.
Erik_Gabriel
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.
inthigh[NUMS];intlow[NUMS];intmaximum=40;intminimum=-40;inti;floattotal;floataverage;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]);return0;
Nao tive muitas aulas de arrays, por isso a dificuldade.
TerraSkilll
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.
Erik_Gabriel
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.