id returned 1 exit status in C

-4

My code gets this error and I do not know what's wrong:

#include<stdio.h> // printf, scanf

// Função principal
int main(void) { // início do programa principal
// Declaração das variáveis locais
unsigned int Dias; // soma total dos dias
unsigned int Horas;   // soma do total de horas
unsigned int Minutos;  // soma do total de minutos
unsigned int d1;       // dias da primeira medida
unsigned int h1;       // horas da primeira medida
unsigned int m1;       // minutos da primeira medida
unsigned int d2;       // dias da segunda medida
unsigned int h2;       // horas da segunda medida
unsigned int m2;       // minutos da segunda medida
int n;
int i;
// Passo A. Leia o número de vezes que o algoritmos será executado
 printf("Quantas vezes o programa deve ser executado:");
 scanf("%d", &n);

for(i=1;i <= n; i++){
// Passo 1. Leia a entrada
// Passo 1.1 Leia o número de dias 1
printf("Numero de dias 1:");
scanf("%d",&d1);
// Passo 1.2 Leia o número de dias 2
printf("Numero de dias 2:");
scanf("%d",&d2);
// Passo 1.3 Leia o número de horas 1
printf("Numero de horas 1:");
scanf("%d",&h1);
// Passo 1.4 Leia o número de horas 2
printf("Numero de horas 2:");
scanf("%d",&h2);
// Passo 1.5 Leia o número de minutos 1
printf("Numero de minutos 1:");
scanf("%d",&m1);
// Passo 1.6 Leia o número de minutos 2
printf("Numero de minutos 2:");
scanf("%d",&m2);

// Passo 2. Calcule a soma das horas, dias e minutos
Dias = d1 + d2;
Horas = h1 + h2;
Minutos = m1 + m2;
Horas = Horas + Minutos / 60;
// Passo 2.1. Calcule a soma dos minutos
Minutos = Minutos % 60;

// Passo 2.2. Calcule a soma dos dias
Dias = Dias + Horas/24;

// Passo 2.3. Calcule a soma das horas
Horas = Horas % 24;

// Passo 3. Imprima o resultado
printf("%2u Dias %2u Horas %2u Minutos mais\n", d1, h1, m1);
printf("%2u Dias %2u Horas %2u Minutos\n", d2, h2, m2);
printf("eh igual a %2u Dias %2u Horas %2u Minutos\n", Dias, Horas, Minutos);
printf("\n");
} // fim for
return 0;

} // final da função principal
    
asked by anonymous 06.06.2016 / 00:31

1 answer

4

The reason for the error is the use of formatting scanf() incompatible with the data type, in this case unsigned int . Just use unlabeled types if you really need them and know the implications of this. A %u formatting could also resolve, as done later in printf() , but it is not the best solution. I used to improve some things.

#include<stdio.h>
int main(void) {
    int n;
    printf("Quantas vezes o programa deve ser executado:");
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        int d1;
        printf("Numero de dias 1:");
        scanf("%d", &d1);
        int d2;
        printf("Numero de dias 2:");
        scanf("%d", &d2);
        int h1;
        printf("Numero de horas 1:");
        scanf("%d", &h1);
        int h2;
        printf("Numero de horas 2:");
        scanf("%d", &h2);
        int m1;
        printf("Numero de minutos 1:");
        scanf("%d", &m1);
        int m2;
        printf("Numero de minutos 2:");
        scanf("%d", &m2);
        int dias = d1 + d2;
        int horas = h1 + h2;
        int minutos = m1 + m2;
        horas += minutos / 60;
        minutos %= 60;
        dias += horas / 24;
        horas %= 24;
        printf("%2u Dias %2u Horas %2u Minutos mais\n", d1, h1, m1);
        printf("%2u Dias %2u Horas %2u Minutos\n", d2, h2, m2);
        printf("eh igual a %2u Dias %2u Horas %2u Minutos\n\n", dias, horas, minutos);
    }
    return 0;
}

See running on ideone and on CodingGround .

    
06.06.2016 / 01:00