1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda programa em C

Discussão em 'Programação' iniciada por crazy1kill, 5 de Outubro de 2012. (Respostas: 5; Visualizações: 882)

  1. crazy1kill

    crazy1kill I fold therefore I AM

    Boas pessoal,

    Sei que para muitos de vocês isto é peanuts mas infelizmente para mim eu não estou a conseguir detectar onde se encontra o erro nesta linha de código cujo objectivo é criar um programa que transforme duas datas em segundos e que subtraia os dois tempos e depois que converta novamente tudo para dias, horas, minutos e segundos.
    Se alguém me pudesse ajudar agradecia.A linha de código é esta:

    #include <stdio.h>

    main(){
    int diasum;
    int horasum;
    int minutosum;
    int segundosum;
    int diasdois;
    int horasdois;
    int minutosdois;
    int segundosdois;
    int du,dd;
    int total;

    printf( " Insira os dias, horas,minutos e segundos pela respectiva ordem\n");
    scanf( "%hd" , & diasum);
    scanf( "%hd" , & horasum);
    scanf( "%hd" , & minutosum);
    scanf( "%hd" , & segundosum);
    printf(" '%hd'D '%hd'H '%hd'M '%hd'S \n", diasum, horasum, minutosum, segundosum);
    du=diasum*86400+horasum*3600+minutosum*60+segundosum;
    printf( " Total dia um e:'%hd'S", du);
    printf( "\n");
    printf( " Insira agora para o segundo dia\n");
    scanf( "%hd" , & diasdois);
    scanf( "%hd" , & horasdois);
    scanf( "%hd" , & minutosdois);
    scanf( "%hd" , & segundosdois);
    printf(" '%hd'D '%hd'H '%hd'M '%hd'S \n", diasdois, horasdois, minutosdois, segundosdois);
    dd= diasdois+86400+horasdois*3600+minutosdois*60+segundosdois;
    printf( "Total do dia dois e: '%hd'S", dd);
    If (du>dd)
    total=du-dd;
    else
    total=dd-du;
    printf(" Dia Total: %hd", total);
    }

    E o problema é ele dar-me o somatório negativo -.-'! Aqui vai um print screen:

    [​IMG]

    Uploaded with ImageShack.us

    Cumps
     
  2. ixjf

    ixjf Power Member

    No dia 2, tu escreveste:

    dd= diasdois+86400

    Mas no dia 1, tu escreveste * em vez de +:

    du=diasum*86400 -> du = diasum + 86400

    //

    P.S. Vê se melhoras um pouco o código xD, e usa o namespace std.
     
  3. crazy1kill

    crazy1kill I fold therefore I AM

    Essa parte já está corrigida obrigado mas agora deparei-me com outro problema que é a conversão dos segundos em horas dias minutos e segundos.No código já lá tenho uma ideia mas não me está a fazer a conversão completamente correcta que poderei fazer aqui para corrigir?

    #include <stdio.h>

    main(){
    int diasum,horasum,minutosum,segundosum;
    int diasdois,horasdois,minutosdois,segundosdois;
    int du,dd;
    int total,diad,diah,diam,dias;

    printf( " Insira os dias, horas,minutos e segundos pela respectiva ordem\n");
    scanf( "%d" , & diasum);
    scanf( "%d" , & horasum);
    scanf( "%d" , & minutosum);
    scanf( "%d" , & segundosum);
    printf(" '%d'D '%d'H '%d'M '%d'S \n", diasum, horasum, minutosum, segundosum);
    du=diasum*86400+horasum*3600+minutosum*60+segundosum;
    printf( " Total dia um e:'%d'S", du);
    printf( "\n");
    printf( " Insira agora para o segundo dia\n");
    scanf( "%d" , & diasdois);
    scanf( "%d" , & horasdois);
    scanf( "%d" , & minutosdois);
    scanf( "%d" , & segundosdois);
    printf(" '%d'D '%d'H '%d'M '%d'S \n", diasdois, horasdois, minutosdois, segundosdois);
    dd= diasdois*86400+horasdois*3600+minutosdois*60+segundosdois;
    printf( "Total do dia dois e: '%d'S\n", dd);
    if (du>dd)
    total=du-dd;
    else
    total=dd-du;

    diad = total/86400;
    diah = diad%3600;
    diam = diah%60;
    dias = (diah%60)*60;

    printf("Diferenca dos dois dias e: %d", total);
    printf(" Dia Total: %d D %d H %d M %d S", diad, diah, diam, dias);
    }
     
  4. ixjf

    ixjf Power Member

    Olha pelo meu código:

    P.S. Pus em quote pois não existe a tag
    Código:
    .
     
  5. crazy1kill

    crazy1kill I fold therefore I AM

    obrigadão pelo hint!


    Cumps
     
  6. ixjf

    ixjf Power Member

    Bom que eu pude ajudar :p
     

Partilhar esta Página