12
respostas

logica de programaçao

olá galera dev, to com um problema fui usar o metodo do jogo pra criar um programa de responder um comprimento de bom dia, boa tarde, boa noite usando a comparacao de valor e nao consigo encontrar o problema que nao faz o programa funcionar. abaixo ta o codigo se puder me ajudem?!

<meta charset="UTF-8">

<script>
function pulaLinha(){
    document.write("<br>");
}
function mostra(frase){
    document.write(frase);
}

var hora = parseInt(prompt("Qual a hora atual?"));
if (hora  <= 12 ) {
    mostra("Bom Dia!");
}else if(hora >= 18 ){
    mostra("Boa tarde!");
}else{
    mosta("Boa Noite!");
}

</script>
12 respostas

Seu código tem alguns erros, vou explicar para você. O Primeiro, que é o que não está deixando seu código rodar, é que no ultimo else, você escreveu "mosta" e o correto seria "mostra". Agora seu programa roda, porém ele tem alguns erros na lógica.

Da maneira que está, se eu colocar 22, por exemplo, que seria 10 horas da noite, ele vai me mostrar Boa tarde!, pois você disse que se a hora for maior que 18 então mostre Boa tarde. O correto seria: if(hora > 12 && hora <= 18) { mostra("Boa tarde"") ou seja: Se hora for maior que meio dia, e menor do que as 6 da tarde, então me dê Boa tarde. Último detalhe, mas isto é opcional: Se você quiser colocar os minutos, você tem que informar as horas separando os minutos por ponto(.), caso tente colocar os dois pontos(:), ele vai considerar apenas as horas e não os minutos.

Caso você queira que o usuário informe as horas e minutos separando-os por dois pontos, comenta aqui, que eu te mostro uma das formas de se fazer isso, mas isso é opcional. Espero que tenha compreendido, e se ficou alguma dúvida, comenta aqui. Valeu.

obrigado matheus. gostaria sim de saber como utilizar o programa usando os dois pontos no programa. é sempre bom ajudar. eu sempre to errando um detalhe desse tipo. tenho outros programas com algum tipo de erro e que quero compartilhar para exercitar o conhecimentos.

Faz muito bem em sempre postar aqui quando tiver dúvidas. A maioria não faz isso, simplesmente ignoram os erros, e se enganam achando que aprenderam, parabéns por fazer isso.

Em relação ao programa, ele entende 13.30, mas não entende 13:30, ou seja, ele aceita o ponto, mas não os dois pontos. Então o que temos que fazer é falar pro programa, que na hora que o usuário digitar o horário com os dois pontos, ele substitua por ponto, então, quando o usuário digitar 14:20, ele vai pegar 14.20, e vai verificar os ifs que você criou. Primeiro, você tem que tirar o parseInt do prompt na variavel hora, pois agora sua variável é uma string, já que agora você terá os dois pontos na sua variável, e isto não é um número. var hora = prompt("Qual a hora atual?");. Depois você tem que falar pro programa trocar os dois pontos pelo ponto fazendo assim: var horaReal = hora.replace(":", ".");. Então criei uma nova variavel, e eu to falando o seguinte: programa, pega a hora que o usuário digitou, e muda uma coisa pra mim - quando ele digitar dois pontos mude para ponto. Dessa forma, você vai conseguir utilizar os minutos de uma forma mais amigável para o usuário. Há outras formas, até melhores do que esta para se fazer isso, mas está é mais fácil. Não se preocupe em entender isto agora, esse replace, não é algo muito usado, apenas em casos muito especificos, apenas saiba que existe. Abraços.

obrigado vol fazer essas mudancas e assim qie tiver outros programas posto aqui pra servi e ajudar a complementar de outros e assim ter a troca de ideias o que ajuda a ampliar o aprendizado e fazer amigos. um abraço e até o proximo programa

matheus eu refiz colocabdo as alteraçoes q sugeriu mas quando coloco dois pontos ele da o resultado boa noite sendo que eu tenha digitado 12:50.

Posta seu código aqui como ficou fazendo um favor

<meta charset="UTF-8">

<script>
function pulaLinha(){
    document.write("<br>");
}
function mostra(frase){
    document.write(frase);
}

var hora = prompt("Qual a hora atual?");
var horaReal = hora.replace(":", ".");

if (hora  < 12 ) {
    mostra("Bom Dia!");
}    
else if(hora > 12 && hora <= 18){
    mostra("Boa tarde!");
}    
else{
    mostra("Boa Noite!");
}

</script>

//fiz e testei quando colocava dois pontos ele entendia como boa tarde.

Certo. Bom você criou a variável horaReal, que é a mesma coisa que a hora, mas no lugar dos dois pontos, ele substitui por ponto, mas perceba que você declarou esta horaReal, mas não está usando ela em lugar nenhum. Então o correto é, que na hora dos ifs, você tem que usar o horaReal, e não o hora.

Outro ponto: no if do bom dia, você verificar se a hora é menor do que 12 (meio dia), e no boa tarde, você verificar se é maior do que meio dia, mas e se pessoa digitar meio dia? Ele não vai entrar nem no bom dia, e nem no boa tarde, e então vai acabar aparecendo Boa noite. 12 horas já são boa tarde, então, no if do boa tarde, você tem que colocar: else if(horaReal >= 12 && hora <= 18), ou seja: Se a hora for maior ou igual ao meio dia e menor que 18:00, então dê boa tarde.

boa noite, desculpe nao ter respondido estou um pouco sem tempo. refiz o codigoque ficou perfeito!. Gostaria que desse uma olhada e diga o que achou.

<meta charset="UTF-8">

<script>
function pulaLinha(){
    document.write("<br>");
}
function mostra(frase){
    document.write(frase);
}

var hora = prompt("Qual a hora atual?");
var horaReal = hora.replace(":", ".");

if (horaReal <= 12 ) {
    mostra("Bom Dia!");
}    
else if(horaReal > 12  && horaReal <= 18){
    mostra("Boa tarde!");
}    
else 
    { 
    mostra("Boa Noite!");
}

</script>

É isso ai, ficou bom, parabéns.

boa noite acabei de criar outro codigo antes de usar else ou else if tava funcionando. o objetivo é que quando digitar acima do numero informado imprima na tela "por favor digite apenas um numero de 0 a 10" mas to no meio do caminho nao to encontrando uma soluçaõ ou nao sei como fazer essa parte.

<meta charset="UTF-8">

<script>

    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }
var numerador = parseInt(prompt("digite um numero de 0 a 10"));

if (numerador == 0 && numerador <= 10) {
   for (var multiplicador = 1; multiplicador <= 10; multiplicador ++ ){
    var resultado = numerador * multiplicador;
    mostra(numerador +  " X " + multiplicador + " = " + resultado);//quero que mostre em forma de tabela 1X1=0 
   }
  else{ (numerador >10)
    mostra("digite apenas numeros de 0 a 10");
   }
}    
   mostra("FIM!");
</script>

Beleza, primeiro coisa: Nessa parte: if (numerador == 0 && numerador <= 10), da maneira que está, o programa ta fazendo assim: Se o numero que o usuário digitar for zero E se também for menor ou igual a 10, faça algo. Ou seja, se o usuário digitar 1, ele não vai entrar no if, pois 1 não é igual a zero. Então você tem que verificar se o número é maior ou igual a zero, e se ele é menor ou igual a 10 - if (numerador >= 0 && numerador <= 10) ou seja, Se o numéro estiver entre 0 e 10, faça o restante.

Segundo ponto, o seu else, ele tem que ser depois do if, ou seja, se o if não for atendido, ai sim ele vai entrar no else. Portanto, não precisa colocar a condição no else, e no caso ficaria assim:

if (numerador >= 0 && numerador <= 10) {
   for (var multiplicador = 1; multiplicador <= 10; multiplicador ++ ){
    var resultado = numerador * multiplicador;
    mostra(numerador +  " X " + multiplicador + " = " + resultado);//quero que mostre em forma de tabela 1X1=0 
   } 
} else{
    mostra("digite apenas numeros de 0 a 10");   
}
   mostra("FIM!");

</script>

Se o numero que o usuário digitar, não estiver entre 0 e 10, o programa já vai saber que ele é maior que 10 (ou menor que zero), então ele automaticamente já entra no else, você não precisa falar pra ele.