Pulse 0 Denunciar post Postado Abril 7, 2015 Um novo terminal de computador foi instalado na biblioteca para facilitar a consulta de livros. A você coube fazer a interface de apresentação. Como parte deste projeto escreva um pequeno programa que leia do teclado um valor correspondente à hora do dia (XX h XX min XX seg) e imprima na tela “Bom Dia!”, “Boa Tarde!” ou “Boa Noite!” de acordo com o horário. Se o horário estiver compreendido entre 0h e 6h, deve imprimir “Sistema Indisponível”. #include <stdio.h> int main () { int horas, minutos, segundos; do { printf("Digite as horas, minutos e segundos"); scanf("%d%d%d", &horas, &minutos, &segundos); }while ((horas<0) || (horas>23) || (minutos<0) || (minutos>59) || (segundos<0) || (segundos>59)); if ((horas>=6) && (horas<13)) { printf("Bom dia!"); } else if ((horas>=13) && (horas<18)) { printf("Boa tarde!"); } else if ((horas>=18) && (horas<=23)) { printf("Boa noite!"); } else { printf("Sistema indisponivel"); } } Queria saber se tá correto. Rodei alguns testes e o programa funcionou mas estou um pouco inseguro por não ter utilizado as variáveis minutos e segundos. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 7, 2015 A informação "horário" tem sentido quando os componentes estão juntos. Se um lugar abre às 9:30h, no informe não vai estar dizendo que ele abre quando o ponteiro menor valer 9.Como a descrição do problema pede que sejam lidos minutos e segundos, entendo que esses componentes influem na interpretação de hora. Por exemplo: às 06:00:00 o sistema está indisponível, mas às 06:00:01 ele deve imprimir "bom dia". Compartilhar este post Link para o post Compartilhar em outros sites
Pulse 0 Denunciar post Postado Abril 7, 2015 Entendi, Isis! Realmente não tinha pensado dessa forma. Fiz novamente o código. Ficou correto agora? #include <stdio.h> int main () { int horario; do { printf("Digite o horario"); scanf("%d", &horario); }while ((horario>235959) || (horario<0)); if ((horario>=060000) && (horario<130000)) { printf("Bom dia!"); } else if ((horario>=130000) && (horario<180000)) { printf("Boa tarde!"); } else if ((horario>=180000) && (horario<=235959)) { printf("Boa noite!"); } else { printf("Sistema indisponivel"); } } Compartilhar este post Link para o post Compartilhar em outros sites
Felipe-Petrópolis 11 Denunciar post Postado Abril 8, 2015 Olá! Olha dei uma olha nos codigos, não posso afirmar com muita segurança mas ao que parece não tem nenhum problema grande com o qual você possa vir a se preocupar agora! Mas como a _Isis_ mencionou o fato de no problema constar minutos e segundos, deve-se prestar atenção, para que se siga a risca as especificações descritas em um problema ( Algoritmo ). Quando compilei o código aqui a única coisa que o sistema fez foi gerar um alerta pela falta do return 0; no fim antes da chave de fechamento! Com relação aos testes eu particularmente não tive nenhum grande problema com as horas que testei. Aqui no primeiro código: entre as 00 00 00 e 05 59 59 é exibido sistema indisponível. entre as 06 00 00 e 12 59 59 é exibido bom dia entre as 13 00 00 e 17 59 59 é exibido doa tarde entre as 18 00 00 e 23 59 59 é exibido boa noite só tenho duas duvidas: - no primeiro código só funciona os horários se introduzidos espaços entre os componentes - acho que a tarde deve começar as 12:00 horas e terminar as 17:59 se não me engano, a não ser que o problema descreva como você nos introduziu no codigo! Aqui no segundo código ente 00 00 00 e 05 59 58 é exibido sistema indisponível entre 05 59 59 e 12 59 59 é exibido bom dia entre 13 00 00 e 17 59 59 é exibido boa tarde entre 18 00 00 e 23 59 59 é exibido boa noite só mais duas duvidas: - apenas de uma olha com relação ao 05 59 59 com bom dia - e aqui ocorre exatamente o oposto quando da introdução de espaços entre os componentes, simplesmente apenas aparece sistema indisponível, em todos os horarios! Espero ter ajudado! Compartilhar este post Link para o post Compartilhar em outros sites
Pulse 0 Denunciar post Postado Abril 8, 2015 Olá, Felipe. - no primeiro código só funciona os horários se introduzidos espaços entre os componentes Eu coloquei para "pegar" todos os valores (horas, minutos e segundos) em um mesmo scanf, deve ter sido por isso. - acho que a tarde deve começar as 12:00 horas e terminar as 17:59 se não me engano, a não ser que o problema descreva como você nos introduziu no codigo! Não descreveu não, eu não tenho certeza quanto a esses valores que usei, foi só pra testar mesmo. - apenas de uma olha com relação ao 05 59 59 com bom dia Realmente, acontece isso aqui também, mas não sei qual a causa. - e aqui ocorre exatamente o oposto quando da introdução de espaços entre os componentes, simplesmente apenas aparece sistema indisponível, em todos os horarios! Eu fiz esse código me baseando no fato de que o usuário iria digitar o horário no formato XXHYYMZZS, sem os espaços, só esqueci de colocar essa instrução no printf pedindo o horário. Muito obrigado! Vou revisar o código e tentar resolver o problema do 055959 e retorno. Não consegui consertar o erro, procurei em alguns lugares e parece que tem algo haver com o C reconhecendo 055959 como octal ou algo assim mas não consegui arrumar. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 8, 2015 Cara, eu não falei pra você jogar fora as variáveis separadas e colocar um inteiro gigante. A forma mais fácil de se fazer a leitura é usar variáveis separadas, mas é possível ler como "xx:xx:xx".Eu falei que a informação "horário" tem sentido com todos os componentes. Quando você pergunta que horas são não faz sentido a pessoa te dizer 9h se na realidade são 9:20h. Use a tag CODE p/ postar códigos. É chato entrar no fórum só p/ ficar editando essas coisas. Compartilhar este post Link para o post Compartilhar em outros sites