Ajuda programa em C

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:



Uploaded with ImageShack.us

Cumps
 
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.
 
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);
}
 
Olha pelo meu código:

#include <iostream>
#include <stdio.h>

using namespace std;

int main(void)
{
int milisegundos = 0;
int segundos = 0;
int minutos = 0;
int dias = 0;
int horas = 0;

//pergunta os segundos
cout << "Digite o número de segundos:";
cin >> segundos;

//conversao
milisegundos = segundos * 1000;
segundos = ( milisegundos / 1000 ) % 60;
minutos = ( milisegundos / ( 1000 * 60 ) ) % 60;
horas = ( milisegundos / ( 1000 * 60 * 60 ) ) % 60;

printf("Total: %d dia(s), %d hora(s), %d minuto(s), %d segundo(s)", dias, horas, minutos, segundos);
return 1;
}

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