No internet connection
  1. Home
  2. Exercícios do Beecrowd

Sequencia I J 2 - 1096

Boa tarde Pessoal!

Depois de muito quebrar a cabeça, consegui resolver a questão com um código que sei que está ruim. Como posso melhorá-lo? Segue:

using System;

namespace SequenciaIJ2_1096
{
public class Program
{
public static void Main(string[] args)
{
int i = 1;
int j = 7;

        while (i <= 9) 
        {
            Console.WriteLine($"I={i} J={j}");
            Console.WriteLine($"I={i} J={j -= 1}");
            Console.WriteLine($"I={i} J={j -= 1}");
            i += 2;
            Console.WriteLine($"I={i} J={j += 2}");
            Console.WriteLine($"I={i} J={j -= 1}");
            Console.WriteLine($"I={i} J={j -= 1}");
            i += 2;
            Console.WriteLine($"I={i} J={j += 2}");
            Console.WriteLine($"I={i} J={j -= 1}");
            Console.WriteLine($"I={i} J={j -= 1}");
            i += 2;
            Console.WriteLine($"I={i} J={j += 2}");
            Console.WriteLine($"I={i} J={j -= 1}");
            Console.WriteLine($"I={i} J={j -= 1}");
            i += 2;
            Console.WriteLine($"I={i} J={j += 2}");
            Console.WriteLine($"I={i} J={j -= 1}");
            Console.WriteLine($"I={i} J={j -= 1}");
            break;
        }

    }
}

}

  • 15 respostas
  1. Daniel pinheiro @daniel015
      2022-12-10 22:15:30.774Z

      Eu fiz utilizando dois for, ficou desse jeito:

      for(int i = 1; i <= 9; i += 2) {
           for (int j = 7; j >= 5; j--) {
                Console.WriteLine($"I={i} J={j}");
           }
      }
      
      1. Daniel Carvalho @DanielCarvalho
          2022-12-12 12:10:34.999Z

          valeu, daniel! me ajudou muito aqui

        • Em resposta ajvbevangelista:
          Luciano Fróes @LucianoFroes
            2022-12-10 22:42:14.117Z
            1. Thiago Marinho @ThiagoMarinho
                2022-12-10 22:47:24.995Z

                realmente o código fica mais enxuto com o For.

                1. Em resposta aLucianoFroes:
                  Luciano Fróes @LucianoFroes
                    2022-12-10 22:43:34.193Z

                    Utilizando o for, fica muito mais fácil e simples. Depois dê uma olhadinha nessa ferramenta. Um participante do fórum aqui fez uma publicação muito legal sobre as ferramentas de repetição.

                  • Em resposta ajvbevangelista:
                    André Filipe @andresantos
                      2022-12-10 23:01:32.376Z

                      Veja como solucionei o problema 1098, que é parecido com o 1096. Você verá que é possível usar apenas um for

                      1. André Filipe @andresantos
                          2022-12-10 23:44:15.679Z

                          Observe que você usou um break sem definir uma condição para execução dele. Logo, o laço irá parar imediatamente na primeira iteração.

                          Isso quer dizer que o while está inútil e while (i <= 9) não é verificado várias vezes.

                          Para confirmar, você escreveu 15 Console.WriteLine() ao invés de no máximo 3. Sabe o que isso significa? Que o algoritmo está sendo executado como se fosse um problema de "assunto sequencial" ao invés de "assunto repetição" do beecrowd.

                          1. Eu vi sua solução para o 1098 e achei excelente!

                            Nesse algoritmo que montei a repetição realmente ficou toda pelo meu CTRL C + CTRL V, ao invés de automatizada. Sua solução e a de todos aqui abriram meus olhos pra como resolver este problema. Acabei submetendo outra vez, dessa vez utilizando um laço de repetição na solução.

                        • Em resposta ajvbevangelista:
                          Rafael Santos @Rafaxd22
                            2022-12-11 00:25:20.940Z

                            Eu fiz usando o while mesmo, fazendo enquanto o i for menor ou igual ao 9 e diminuindo no próprio console.writeline

                            static void Main(string[] args)
                            {
                                int i = 1, j = 7;
                            
                                while (i <= 9)
                                {
                                    Console.WriteLine($"I={i} J={j}");
                                    Console.WriteLine($"I={i} J={j - 1}");
                                    Console.WriteLine($"I={i} J={j - 2}");
                            
                                    i += 2;
                                    j += 0;
                                }
                            }
                            

                            }

                            1. E passou? Tentei submeter algo parecido antes e o J começava em 7, mas recomeçava sempre no menor valor do loop anterior...

                              1. Rafael Santos @Rafaxd22
                                  2022-12-12 12:08:06.645Z

                                  Deu certo sim, no caso ali eu to incrementando +2 no i, e em cada loop to fazendo a impressão dos dados, no primeiro loop o j vai estar valendo 7, ai no primeiro console.writeline ele vai repetir o valor de j que é 7, no segundo ele vai fazer 7 - 1 e no último 7 - 2

                              2. Em resposta ajvbevangelista:
                                MARIO IGOR BARBOSA @migorking
                                  2022-12-12 10:47:54.215Z

                                  o meu fiz um pouco mais resumido, vê se te ajuda.

                                  int entradaI, entradaJ;

                                          entradaI = 1;
                                          entradaJ = 7;
                                  
                                          while (entradaI <= 9)
                                          {
                                              for (int i = 0; i < 3; i++)
                                              {
                                                  Console.WriteLine($"I={entradaI} J={entradaJ}");
                                                  entradaJ--;
                                                  
                                              }
                                              entradaJ = 7;
                                              entradaI += 2;
                                          }
                                  
                                  1. Em resposta ajvbevangelista:
                                    Thiago Marinho @ThiagoMarinho
                                      2022-12-10 22:38:32.977Z

                                      Boa noite, segue como eu fiz utilizando o while, como o i so muda depois que a variável j termia, eu coloquei o i no final do loop.

                                       class Program
                                          {
                                              public static void Main(string[] args)
                                              {
                                                  int i = 1;
                                      
                                                  while (i <= 9)
                                                  {
                                                      int j = 7;
                                                      Console.WriteLine($"I={i} J={j}");
                                                      j--;
                                                      Console.WriteLine($"I={i} J={j}");
                                                      j--;
                                                      Console.WriteLine($"I={i} J={j}");
                                      
                                                      i += 2;
                                                  }
                                              }
                                          }```
                                      1. I
                                        Em resposta ajvbevangelista:
                                        Iuri Rezende @iurizada
                                          2022-12-10 21:03:07.858Z

                                          Oi Joao,

                                          Eu criei 2 for, um dentro do outro. Primeiro eu fiz para o I e depois para o J (dentro do I)

                                          for (int I = 1; I <= 9; I += 2)
                                          {
                                          for (int J = 7; J >= 5; J--)

                                                          Console.WriteLine($"I={I} J={J}");
                                                      }
                                                  }
                                          
                                          1. G
                                            Em resposta ajvbevangelista:
                                            Ribeiro Engenharia @GuilhermeAugusto
                                              2022-12-10 21:11:07.974Z

                                              João eu fiz assim, talvez pode te ajudar:

                                              // ESTABELECE O LOOPING COM AS CONDIÇÕES DE VERDADE
                                              for (int i=0; i<=9; i+=2)
                                              {
                                              // DEFINE O ACRESCIMO E A ALTERAÇÃO DESEJADA
                                              I +=2;

                                                          // DEFINE AS FORMAS DE VISUALIZAÇÃO
                                                          Console.WriteLine("I={0} J={1}", I, J1);
                                                          Console.WriteLine("I={0} J={1}", I, J2);
                                                          Console.WriteLine("I={0} J={1}", I, J3);