id returned 1 Exit status in C

Asked

Viewed 740 times

-4

My code keeps giving this error and I don’t 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
  • Did the answer solve your problem? Do you think you can accept it now? See [tour] to understand how it works. It would be helpful to indicate to everyone that the solution was useful and satisfactory for you. You can also vote on any question or answer you find useful on the entire site (when you have 15 points).

1 answer

4

The reason for the error is the use of scanf() incompatible with the type of data, in this case the unsigned int. Only use unmarked types if you really need to know the implications of this. A formatting %u could also resolve, as done after the printf(), but it is not the best solution. I took the opportunity 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);
    }
}

Behold working in the ideone. And in the repl it.. Also put on the Github for future reference.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.