| Autor | Mensagem | 
| janick Veterano
 | # mar/10 
 
 Beleza? To aqui resolvendo uns exercícios de C++ e estou a uma boa meia hora preso em um que pede para "Ler uma medida de tempo dada em segundos e escrever esta mesma medida expressa em horas, minutos e segundos, no formato H:M:S. Por exemplo: se a medida for 5000 segundos, teremos: 1:23:20."
 
 Ta dando quase certo, mas por exemplo, se eu coloco uma medida segundos que 60 minutos quando transforma os segundos em minutos em horas, ele não subtrai 60 minutos e adiciona uma hora, ele põe por exemplo, 61 minutos, 82 minutos. E ai, como eu resolvo isso, alguém sabe?
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 # include <iostream>
 # include <math.h>
 using namespace std;
 int main ()
 
 {
 int TEMPO, SEGUNDOS, MINUTOS, HORAS;
 cout << "\n\nInforme a medida de tempo em segundos: ";
 cin >> TEMPO;
 SEGUNDOS=TEMPO%60;
 MINUTOS=TEMPO/60;
 HORAS=TEMPO/600;
 cout << "\n\nMedida expressa em horas: "<<HORAS<<":"<<MINUTOS<<":"<<SEGUNDOS<< "\n\n";
 }
 
 Aqui o meu programa.
 
 
 | 
| Gan Veterano
 | # mar/10 · votar
 
 e aew champz, faz assim:
 
 int main(){
 
 int tempo = 5000;
 
 int hora = tempo/3600;
 
 int resto  = tempo % 3600;
 
 int minutos = resto / 60;
 
 int segundos = resto % 60;
 
 printf("%d:%d:%d",hora,minutos,segundos);
 }
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 Saquei! Mas como eu faço para informar um numero em segundos via "cin" e ele jogar isso pra H:M:S ? a formula ta certa, mas essa parte que eu n to conseguindo
 
 
 | 
| Simonetti Veterano
 | # mar/10 · votar
 
 # include <iostream>
 # include <math.h>
 using namespace std;
 int main ()
 
 {
 int TEMPO, SEGUNDOS, MINUTOS, HORAS;
 cout << "\n\nInforme a medida de tempo em segundos: ";
 cin >> TEMPO;
 
 SEGUNDOS = TEMPO % 60;
 MINUTOS = ((TEMPO - SEG) / 60) % 60;
 HORAS= (TEMPO - SEGUNDOS - MINUTOS * 60) %3600
 
 cout << "\n\nMedida expressa em horas: "<<HORAS<<":"<<MINUTOS<<":"<<SEGUNDOS<< "\n\n";
 }
 
 
 | 
| Gan Veterano
 | # mar/10 · votar
 
 janick
 qual fórmula q tá certa?? a sua???
 
 
 | 
| Palermo Veterano
 | # mar/10 · Editado por: Palermo · votar
 
 janick
 Saquei! Mas como eu faço para informar um numero em segundos via "cin" e ele jogar isso pra H:M:S ? a formula ta certa, mas essa parte que eu n to conseguindo
 
 igual como você fez cara.
 cout << "\n\nInforme a medida de tempo em segundos: ";
 cin >> TEMPO;
 
 
 Ele colocou fixo o tempo. Você apenas declara a variavel tempo e faz o cin.
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 Simonetti
 Oi! Fantástico! Deu certo aqui, depois que eu joguei no complilador, mas deixa eu te perguntar uma coisa, quando a medida dos minutos tem a casa das unidades zero, a mesma não aparece, aparece apenas o algarismo das dezenas. Como eu resolvo isso?
 Palermo
 Oi cara! Agora entendi... mas mesmo trocando para cin >> tempo, não deu certo, continuou com um resultado fixo! Mas agora eu dei um jeito aqui!
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 Vacilo meu aqui! Deu certíssimo!
 
 Obrigado à todos que colaboraram aqui no tópico, me ajudaram demais tanto à fazer como entender qual era meu erro!
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 Engraçado, eu coloco 72.000 segundos = 1 hora, e da 0:0:0 :S
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 comofas agora?
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 # include <iostream>
 # include <math.h>
 using namespace std;
 int main ()
 
 {
 int TEMPO, SEGUNDOS, MINUTOS, HORAS;
 cout << "\n\nInforme a medida de tempo em segundos: ";
 cin >> TEMPO;
 
 SEGUNDOS = TEMPO % 60;
 MINUTOS = ((TEMPO - SEGUNDOS) / 60) % 60;
 HORAS= (TEMPO - SEGUNDOS - MINUTOS * 60) %3600;
 
 cout << "\n\nMedida expressa em horas: "<<HORAS<<":"<<MINUTOS<<":"<<SEGUNDOS<< "\n\n";
 }
 
 
 | 
| Gan Veterano
 | # mar/10 · votar
 
 janick
 Engraçado, eu coloco 72.000 segundos = 1 hora, e da 0:0:0 :S
 72.000 segundos não é uma hora, 3600 segundos é uma hora.
 
 bem, mas no código q eu postei não dá esse problema nem pra 3600, nem pra 7200 e nem pra 72.000...
 
 seu programa pode estar explodindo por causa do tamanho do inteiro no compilador que você usa, Se o seu compilador representa inteiros sem sinal com 16 bits, então vc não vai conseguir representar uma grandeza maior do q 2^16
 
 
 | 
| ZakkWyldeEMG Veterano
 | # mar/10 · votar
 
 declara aquele TEMPO como unsigned long int
 
 
 | 
| Guilherme 90 Veterano
 | # mar/10 · votar
 
 Dahora isso aí!
 
 ^^
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 Gan
 Duas horas digo. eu ponho 3600 da a mesma merda. e 3599, da 0:59:59
 
 =/
 
 Não ta demonstrando o algarismo da casa das unidades, comofas?
 
 
 | 
| -Toolbar- Veterano
 | # mar/10 · votar
 
 É bem legal ver os tópicos assim e entender. \o/
 
 
 | 
| Jesus de Nazaré Rei dos Judeus Veterano
 | # mar/10 · votar
 
 dornocelebro
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 Jesus de Nazaré Rei dos Judeus
 Não tinha nada melhor para comentar não seu acéfalo?
 
 
 | 
| ZakkWyldeEMG Veterano
 | # mar/10 · Editado por: ZakkWyldeEMG · votar
 
 SEGUNDOS = TEMPO % 60;
 MINUTOS = ((TEMPO - SEGUNDOS) / 60) % 60;
 HORAS= (TEMPO - SEGUNDOS - MINUTOS * 60) %3600;
 
 
 o correto seria somente:
 
 HORAS = TEMPO/3600;
 
 agora a formatação dos zeros eu tava tentando isso:
 
 Podemos também determinar o caractere a ser utilizado para preencher os espaços em branco de um campo de exibição. Isto é feito com o seguinte método:
 
 cout.fill ( "caractere");
 
 Onde substituímos "caractere" pelo caractere que será exibido. É necessário utilizar aspas entre o caractere, para indicar para o compilador que não se trata de uma variável.
 
 O exemplo abaixo mostra a utilização conjunta destes dois métodos:
 
 int variavel = 10;
 cout.width ( 8 );
 cout.fill("0");
 cout << variavel;
 
 Este exemplo fará a seguinte exibição na tela, preenchendo os espaços em branco determinados por cout.width com o caractere 0, determinado por cout.fill:
 
 00000010
 
 Fonte: http://apostilacpp.awardspace.com/index.php?pagina=modulo05
 
 Mas não deu certo.
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 ZakkWyldeEMG
 CARA! Foi só fazer isso que rodou perfeitamente meu programa :)
 
 Muito obrigado aos amigos foristas que me ajudaram, era o único exercício de uma lista de PC que faltava eu fazer, agora vou levar tudo funfano beleza \o/
 
 
 | 
| ZakkWyldeEMG Veterano
 | # mar/10 · votar
 
 janick
 
 eu me encuquei com o lance da formatação e por falta de atenção, esqueci um detalhe. aí vai a correção:
 
 #include <cstdlib>
 #include <iostream>
 #include "math.h"
 
 using namespace std;
 
 int main ()
 
 {
 
 unsigned int TEMPO, SEGUNDOS, MINUTOS, HORAS;
 
 cout << "\n\nInforme a medida de tempo em segundos: ";
 cin >> TEMPO;
 
 SEGUNDOS = TEMPO % 60;
 MINUTOS = ((TEMPO - SEGUNDOS) / 60) % 60;
 HORAS = TEMPO / 3600;
 
 cout << "\n\nMedida expressa em horas: ";
 cout.fill('0');
 cout.width(2);
 cout <<HORAS;
 cout <<":";
 cout.fill('0');
 cout.width(2);
 cout <<MINUTOS;
 cout <<":";
 cout.fill('0');
 cout.width(2);
 cout <<SEGUNDOS;
 cout << "\n\n";
 system("PAUSE");
 
 }
 
 
 | 
| ZakkWyldeEMG Veterano
 | # mar/10 · votar
 
 apesar de eu ter viajado no enunciado (só pedia formato H:M:S e não HH:MM:SS como um relógio convencional), aí fica o segundo jeito
 
 =)
 
 
 | 
| janick Veterano
 | # mar/10 · votar
 
 ZakkWyldeEMG
 
 Caralho! hehehe esse HH:MM:SS fica tenso MESMO. E o cara nem ensinou pra gente esses conceitos ainda, mas vou tentar aprender!
 
 
 | 
| Guilherme 90 Veterano
 | # mar/10 · votar
 
 Eu to tentando aqui também..
 
 [/mentira]
 
 
 | 
| Socomegaton Veterano
 | # mar/10 · votar
 
 Faz em VB hehehe.
 
 
 | 
| -Toolbar- Veterano
 | # mar/10 · votar
 
 Pqp. Agora fiquei mó confuso em fazer isso aqui.. =/
 
 Foda é que é bem simples mas eu não consigo! ¬¬
 
 "Dado o preço de um produto (valor inteiro), elaborar um programa para verificar qual a menor quantidade  de notas necessárias para efetuar o pagamento da compra. Considerar os valores das notas atuais (1, 2, 5, 10, 20, 50 e 100). Utilizar os operadores % (resto) e / (divisão inteira) para a solução deste problema."
 
 =l
 
 quem estiver disposto em ajudar, valeu!
 
 
 | 
| -Toolbar- Veterano
 | # mar/10 · votar
 
 obrigado
 
 
 |