Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio da apostila da Casa do Código

Oi, pessoal. Estou com algumas dúvidas. Ando estudando por aqui e pela apostila de Lógica de Programação da Casa do Código. Em dado momento, a apostila apresenta dois problemas que eu estou tendo dificuldade para resolver, são eles:

3) Esse aqui é um desafio. Faça um código para obter esse resultado: (imagem aqui: https://imgur.com/a/ZcqS0ah )

4) Tente fazer o V de Vingança, usando asteriscos e underscores (_). (imagem aqui: https://imgur.com/HrSJoYX )

Até o momento, meu código está como abaixo, mostrando 3 linhas de 10 colunas.

Podem me ajudar? Acho que estou com dificuldade de saber por onde começar.

<meta charset = "UTF-8">


<script>

    function mostra (frase){

        document.write(frase);

    }

    for (var linha = 0; linha < 3; linha = linha + 1){
        for (var coluna = 0; coluna < 10; coluna = coluna + 1){

            mostra ("*");

        }

        document.write ("<br>");

    }


</script>
2 respostas
solução!

Olá, Maria Eugênia! Tudo bem? Como vai?

Acredito que tenha quebrado muita a cabeça rs...

Vamos ao primeiro: temos que colocar o número 10 no lugar do 3 para que ele imprima as nove linhas, uma vez que estamos pedindo menor que 10

linha < 10

Depois temos que dizer que enquanto minha coluna for menor que a linha aumente uma coluna

coluna < linha; coluna = coluna + 1

E para finalizar, temos que mostrar um asterisco dentro do for das colunas e também outro asterisco no for das linhas

 mostra("*");

    }

    mostra("*");

    document.write("<br>");

  }

O código completo ficará assim:

<meta charset="UTF-8">


<script>

  function mostra(frase) {

    document.write(frase);

  }

  for (var linha = 0; linha < 10; linha = linha + 1) {
    for (var coluna = 0; coluna < linha; coluna = coluna + 1) {

      mostra("*");

    }

    mostra("*");

    document.write("<br>");

  }


</script>

Vamos ao segundo exercício que tem, praticamente, a mesma lógica:

<meta charset="UTF-8">
<script>

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

    function mostra(frase) {
        document.write(frase);
    }

    var qtdLin = 10;
    var qtdCol = 20;

    for (var linha = 1; linha <= qtdLin; linha++) {
        for (var coluna = 1; coluna < qtdCol; coluna++) {
            if ((coluna == linha) || (coluna == qtdCol - linha)) {
                mostra("*");
            }
            else {
                mostra("_");
            }
        }
        pulaLinha();
    }


</script>

A diferença neste é que estou usando o operador lógico ou (||), que traduzindo quer dizer:

Se a coluna for igual a linha ou a coluna for igual a quantidade de colunas menos linha, exiba o asterisco, caso contrário, exiba o underline.

if ((coluna == linha) || (coluna == qtdCol - linha)) {
                mostra("*");
            }
            else {
                mostra("_");
            }
        }

Agora, peço que analise parte por parte, até conseguir aplicar por conta ;-)

Espero ter ajudado, Maria Eugênia!

Precisando é só nos procurar.

Bons estudos e vamos em fente!!!

Valeu, Cassio, quebrei muito a cabeça e na verdade a solução era super simples como vc mostrou.

Abraço!