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
|