none
Como saber a maior sequência em um programa RRS feed

  • Pergunta

  • Prezados, estou com um problema.
    Preciso fazer um programa que receber do usuário uma sequência de números inteiros positivos, que será finalizada com -1
    O mesmo programa deve responder qual é o tamanho da maior sequência crescente recebida
    Ex: 12, 4, 8, 15, 16, 23, 42, 9, 11, 7, 5, 77, 95, -1
    Resposta correta: 6

    Segue o código: 

       class Program
        {
            static void Main(string[] args)
            {
                int contador = 0;
                int aux = 0;            
                while (contador != -1)
                {
                    Console.WriteLine("Digite um número inteiro e positivo:");
                    contador = int.Parse(Console.ReadLine());                             
                    aux++;                  
                }
                Console.WriteLine("A sequência de numeros foram: "+aux);
                Console.ReadKey();
            }
        }

    segunda-feira, 10 de fevereiro de 2020 20:28

Respostas

  • Boa noite amigo!

    Fiz um código rapidinho para solucionar o problema proposto. O código está bem feio, precisa de revisão e consistências! Mas testei vários cenários e acho que a lógica está coesa. Não está escrito da melhor maneira. Tentei ser o mais didático possível para não ficar dúvidas em como a lógica flui, ok? Um abraço!

    using System;
    using System.Collections.Generic;
    
    namespace MaiorSequencia
    {
        class Program
        {
            static void Main(string[] args)
            {
                var listaNum = new List<int>();
                int contador = 0;
                while (contador != -1)
                {
                    Console.Write("Digite um número inteiro e positivo: ");
                    contador = int.Parse(Console.ReadLine());
                    
                    // Adiciona o número à lista de números
                    listaNum.Add(contador);
                }
    
                // Verifica a sequência de números e exibe o resultado
                int maiorSequencia = -999;
                int sequencia = 0;
                int anterior = -999;
                Console.Write("Sequência inserida: ");
                foreach (int num in listaNum)
                {
                    // Verifica se o número atual é maior que o número anterior
                    // Caso seja, está na sequência. Caso contrário, quebra a sequência.
                    if (num > anterior)
                    {
                        ++sequencia;
    
                        // Armazena a maior sequência encontrada
                        if (sequencia > maiorSequencia)
                            maiorSequencia = sequencia;
                    }
                    else
                    {
                        // Assume que houve quebra de sequência
                        // Reseta para a posição 1, pois o próprio número conta como 1 sequência unitária
                        sequencia = 1;
                    }
    
                    // Armazena o número anterior
                    anterior = num;
    
                    if (num != -1) Console.Write("{0}  ", num);
                }
                
                Console.WriteLine("\nA MAIOR sequência de números encontrados foi: " + maiorSequencia);
                Console.ReadKey();
            }
        }
    }
    

    segunda-feira, 10 de fevereiro de 2020 23:23

Todas as Respostas

  • Boa noite amigo!

    Fiz um código rapidinho para solucionar o problema proposto. O código está bem feio, precisa de revisão e consistências! Mas testei vários cenários e acho que a lógica está coesa. Não está escrito da melhor maneira. Tentei ser o mais didático possível para não ficar dúvidas em como a lógica flui, ok? Um abraço!

    using System;
    using System.Collections.Generic;
    
    namespace MaiorSequencia
    {
        class Program
        {
            static void Main(string[] args)
            {
                var listaNum = new List<int>();
                int contador = 0;
                while (contador != -1)
                {
                    Console.Write("Digite um número inteiro e positivo: ");
                    contador = int.Parse(Console.ReadLine());
                    
                    // Adiciona o número à lista de números
                    listaNum.Add(contador);
                }
    
                // Verifica a sequência de números e exibe o resultado
                int maiorSequencia = -999;
                int sequencia = 0;
                int anterior = -999;
                Console.Write("Sequência inserida: ");
                foreach (int num in listaNum)
                {
                    // Verifica se o número atual é maior que o número anterior
                    // Caso seja, está na sequência. Caso contrário, quebra a sequência.
                    if (num > anterior)
                    {
                        ++sequencia;
    
                        // Armazena a maior sequência encontrada
                        if (sequencia > maiorSequencia)
                            maiorSequencia = sequencia;
                    }
                    else
                    {
                        // Assume que houve quebra de sequência
                        // Reseta para a posição 1, pois o próprio número conta como 1 sequência unitária
                        sequencia = 1;
                    }
    
                    // Armazena o número anterior
                    anterior = num;
    
                    if (num != -1) Console.Write("{0}  ", num);
                }
                
                Console.WriteLine("\nA MAIOR sequência de números encontrados foi: " + maiorSequencia);
                Console.ReadKey();
            }
        }
    }
    

    segunda-feira, 10 de fevereiro de 2020 23:23
  • Muito obrigado amigo, ajudo bastante! 
    • Sugerido como Resposta Junin incipiente quarta-feira, 12 de fevereiro de 2020 11:49
    terça-feira, 11 de fevereiro de 2020 11:34
  • Não há de quê!

    Disponha!

    Um abraço!

    quinta-feira, 13 de fevereiro de 2020 12:05