Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pulse

Terminal biblioteca

Recommended Posts

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

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

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

 

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.