2
respostas

Minhas solução para o desafio

namespace ListaDeCompras;

class Program
{
    // Definindo o tamanho máximo do array
    const int TamanhoMaximo = 10;
    static void Main(string[] args)
    {
        Produto[] produtos = new Produto[TamanhoMaximo]; 
        int contadorDeProdutos = 0;// Contador para rastrear o número de produtos
        
        while (true)

        {
            // Exibir as opções
            Console.WriteLine("Escolha as opções:");
            Console.WriteLine("1. Adicionar Produtos");
            Console.WriteLine("2. Visualizar lista de Produtos");
            Console.WriteLine("3. Calcular Media do Produtos");
            Console.WriteLine("4. Remover Produto");
            Console.WriteLine("5. Sair do Sistema");

            // Ler a escolha do usuário
            string choice = Console.ReadLine();

            // Estrutura de controle de escolhas
            // Estrutura de controle de escolhas
            switch (choice)
            {
                case "1":
                    AdicionarProdutos(produtos, ref contadorDeProdutos);
                    break;
                case "2":
                    VisualizarListaDeProdutos(produtos,  contadorDeProdutos);
                    break;
                case "3":
                    CalcularMediaDosProdutos(produtos,  contadorDeProdutos);
                    break;
                case "4":
                    RemoverProduto(produtos, ref  contadorDeProdutos);
                    break;
                case "5":
                    return;
                default:
                    Console.WriteLine("Escolha inválida. Por favor, tente novamente.");
                    break;
            }



        }

        static void AdicionarProdutos(Produto[]produtos,ref int contadorDeProdutos)
        {
            if (contadorDeProdutos >= TamanhoMaximo)
            {
                Console.WriteLine("Limite máximo de produtos atingido.");
                return;
            }
            Console.WriteLine("Digite o Nome do produto:");
            string nome = Console.ReadLine().Trim();
            Console.WriteLine("Digite o Preço do Produto:");
            double preco;
            while (!double.TryParse(Console.ReadLine().Trim(), out preco))
            {
                Console.WriteLine("Ano inválido, por favor insira um número inteiro:");
            }
            Produto newProduto = new Produto(nome, preco);
            produtos[contadorDeProdutos]= newProduto;
            contadorDeProdutos++;
            Console.WriteLine("Produto Adicionado com Sucesso!!!");
        }

        static void VisualizarListaDeProdutos(Produto[] produtos, int contadorDeProdutos)
        {
            Console.WriteLine("Produtos:");
            for (int i = 0; i < contadorDeProdutos; i++)
            {
                Produto produto = produtos[i];
                Console.WriteLine($"{i + 1}. Nome do Produto: {produto.Nome}, Preco em R$: {produto.Preco}");
            }
        }
        static void CalcularMediaDosProdutos(Produto[] produtos,int contadorDeProdutos)
        {
            if (contadorDeProdutos == 0)
            {
                Console.WriteLine("Nenhum produto na lista para calcular a media.");
            }

            double soma = 0;
            for (int i = 0; i < contadorDeProdutos; i++)
            {
                soma += produtos[i].Preco;
            }

            double media = soma / contadorDeProdutos;
            Console.WriteLine($"A media dos preços dos produtos é:{media:F2}");
        }


        static void RemoverProduto(Produto[] produtos, ref int contadorDeProdutos)
        {
            if (contadorDeProdutos == 0)
            {
                Console.WriteLine("Nenhum produto para remover.");
                return;
            }

            Console.WriteLine("Digite o número do produto que deseja remover:");
            VisualizarListaDeProdutos(produtos,contadorDeProdutos); // Removido 'ref'
            int index;
            if (int.TryParse(Console.ReadLine().Trim(), out index) && index > 0 && index <= contadorDeProdutos)
            {
                // Shift dos elementos do array para preencher o espaço removido
                for (int i = index - 1; i < contadorDeProdutos - 1; i++)
                {
                    produtos[i] = produtos[i + 1];
                }

                produtos[contadorDeProdutos - 1] = null; // Limpar o último elemento
                contadorDeProdutos--;
                Console.WriteLine("Produto removido com sucesso.");
            }
            else
            {
                Console.WriteLine("Índice inválido. Por favor, tente novamente.");
            }
        }
    }
}
2 respostas

me empolguei e fiz a mediana tambem s´o troquei uma parte do codigo static void CalcularMediaDosProdutos(Produto[] produtos,int contadorDeProdutos) { if (contadorDeProdutos == 0) { Console.WriteLine("Nenhum produto na lista para calcular a media."); }

  double[] precos = new double[contadorDeProdutos];
  for (int i = 0; i < contadorDeProdutos; i++)
  {
      precos[i] = produtos[i].Preco;
  }

  Array.Sort(precos);

  double mediana;
  int meio = precos.Length / 2;

  if (precos.Length % 2 == 0) // Se o número de elementos é par
  {
      mediana = (precos[meio - 1] + precos[meio]) / 2.0;
  }
  else // Se o número de elementos é ímpar
  {
      mediana = precos[meio];
  }

  Console.WriteLine($"A mediana dos preços dos produtos é: {mediana:F2}");

}

Olá, Job, como vai?

Parabéns pelo seu código! Você conseguiu implementar várias funcionalidades importantes e ainda foi além, incluindo o cálculo da mediana. Isso demonstra um bom entendimento dos conceitos de arrays e manipulação de dados em C#. Adicionar a mediana ao seu programa foi uma ótima ideia e torna sua solução ainda mais completa.

Continue assim com essa dedicação! Parabéns.

Qualquer dúvida manda aqui. Bons estudos.