3
respostas

Problema em tentar tirar uma media

Meu codigo nao soma os valores inseridos, o computador sempre tira a media dos dois ultimos numeros inseridos. Como acertar isso?

#include <stdio.h>
#define NUMS 3

int main(void){

    int high;
    int low;
    int i;

    float totalHigh = 0;
    float totalLow = 0;

    double average;

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

    for (i = 0; i < NUMS; ++i) {

         float totalHigh = 0;
         float totalLow = 0;   

        do{
            printf("Enter the high value for day %d: \n", i+1);
            scanf("%d", &high);
            printf("Enter the low value for day %d: \n", i+1);
            scanf("%d", &low);  

            if ((high > 40) || (low < -40) || (high < low)){
                    printf ("Incorrect values, temperatures must be in the range -40 to 40, high must be greater than low.\n");
            }

        } while((high > 40) || (low < -40) || (high < low));


        totalHigh = totalHigh + high;
        totalLow = totalLow + low;
    }

    average = ((totalHigh + totalLow) / NUMS) / 2;

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

    return 0;
}
3 respostas

Você está declarando as variáveis totalHigh e totalLow 2 vezes e que eu saiba isso não é possível talvez isto esteja fazendo o erro acontecer.

Tire essas variáveis de dentro do laço FOR:

float totalHigh = 0; float totalLow = 0;

pois estão sendo zeradas a cada entrada no laço. Deixe-as antes do laço FOR.

    float totalHigh = 0;
    float totalLow = 0;

    double average;

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

    for (i = 0; i < NUMS; ++i) {

   //Retirei as variáveis daqui

        do{
            printf("Enter the high value for day %d: \n", i+1);

Tenta assim:

#include <stdio.h>
#define NUMS 3

int main(void){

    int high;
    int low;
    int i;

    float totalHigh = 0;
    float totalLow = 0;

    double 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);
            printf("Enter the low value for day %d: \n", i+1);
            scanf("%d", &low);  

            if ((high > 40) || (low < -40) || (high < low)){
                    printf ("Incorrect values, temperatures must be in the range -40 to 40, high must be greater than low.\n");
            }

        } while((high > 40) || (low < -40) || (high < low));


        totalHigh = totalHigh + high;
        totalLow = totalLow + low;
    }

    average = ((totalHigh + totalLow) / NUMS) / 2;

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

    return 0;
}