none
Estou iniciando em C#, fui criar um programa e encontrei certas dificuldades. Aprecio verdadeiramente ajuda. RRS feed

  • Pergunta

  • Este é o codigo. A ideia seria que eu conseguisse criar um sistema onde : capturasse o valor recebido total, o que sobrou,e calculasse o gasto. Ate ai foi okay. A segunda parte era para, ter calculado o retorno que seria para cada individuo que contribuiu -  o qual seria proporcional a % do valor que contribuiu . Ex : contribui 5% do valor total recebido recebera um retorno de 5% da sobra - ai comecei a enfrentar problemas pois o calculo¹ nao sai correto(preciso de ajuda nisso) .Apos isso fiz um sistema onde a pessoa colocaria o numero de contribuintes e apos isso fiz um modo para que o numero nao fosse menor que zero ², nessa parte consegui mas acredito que nao foi da maneira mais eficiente (se alguem souber metodo melhor agradeceria mtt). Entretanto precisei apos disso nao deixar que o numero de retorno (criei um retorno das pessoas que contribuiram enumerandoas) nao fosse repetido, pensei em fazer um segundo for para corrigir isso e gerar automatico os numeros, mas gostaria que o usuario colocasse o numero , e infelizmente nessa parte nao consegui ³. Faz pouco tempo que comecei a mexer com c# e nao tenho mtt conhecimento de outras linguagens , apreciaria mtt a ajuda.

    deixei em negrito o que preciso de ajuda.Sou iniciante aqui entao peço perdao por qualquer erro bobo

                                                

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace CaculadoraDePorcentagem
    {
        class Program
        {
            static void Main(string[] args)
            {
                double valorRecebido;
                double sobra;

                Console.WriteLine("Insira o valor total recebido.");
                valorRecebido = Convert.ToDouble(Console.ReadLine());

                Console.WriteLine("Informe o valor gasto.");
                double gasto = Convert.ToDouble(Console.ReadLine());

                sobra = valorRecebido - gasto;

                if ( valorRecebido >= gasto){
                    Console.WriteLine("O objeto se pagou");
                }
                else
                {
                    Console.WriteLine("Teve prejuizo. Nada a retornar");
                }

                if(valorRecebido > gasto){
                    Console.WriteLine("Quantas pessoas contribuiram??");
                    int qtePessoasContribuiram = int.Parse(Console.ReadLine());

    // Aqui fiz com que a qte de pessoas fosse diferente de zero , porem acho que nao da maneira mais eficiente, se alguem souber de algo diferente agradeço

                    if (qtePessoasContribuiram > 0){
                        for (int i = qtePessoasContribuiram; i >= 0; i-- )
                        {
                            int n= 0;
                            int newN = 0;
                            double qteContribuiçao;
                            double recebimento;
                            double qteReceber;

                            ²if (n == 0){
                                Console.WriteLine("Informe o numero da pessoa da pessoa");
                                n = int.Parse(Console.ReadLine());



                            }
                            else
                            {

    // Aqui tentei fazer de maneira que o proximo n nao poderia ser igual ao anterior , mas acabou nao dando certo, se alguem souber uma soluçao agradeceria mtt.²

                                do
                                {
                                    Console.WriteLine("Informe o numero da pessoa da pessoa");
                                    newN = int.Parse(Console.ReadLine());
                                } while (newN != n);
                                if (newN == n)
                                {
                                    Console.WriteLine("O codigo esta repetido. Insira novamente");
                                    if (n == 0)
                                    {
                                        Console.WriteLine("Informe o numero da pessoa da pessoa");
                                        n = int.Parse(Console.ReadLine());



                                    }
                                    else
                                    {
                                        do
                                        {
                                            Console.WriteLine("Informe o numero da pessoa da pessoa");
                                            newN = int.Parse(Console.ReadLine());
                                        } while (newN != n);
                                        if (newN == n)
                                        {
                                            Console.WriteLine("O codigo esta repetido. Insira novamente");
                                        }
                                    }
                                }
                            }

                            Console.WriteLine("Informe a quantia que a pessoa contribuiu");
                            qteContribuiçao = Convert.ToDouble(Console.ReadLine());
    // enfrentei problemas novamente aqui pois o calculo sai errado¹
                            recebimento = (qteContribuiçao * 100) / valorRecebido;
                            qteReceber = (recebimento / 100) * valorRecebido;

                            Console.WriteLine("A pessoa n. : " + n + " tem " + qteReceber + "A receber.");
                        }
                    }
                    else
                    {
                        int newQtePessoasContribuiram;
                        do{
                            Console.WriteLine("O numero tem que ser maior que 0.Quantas pessoas contribuiram??");
                            newQtePessoasContribuiram = int.Parse(Console.ReadLine());
                        }while (newQtePessoasContribuiram == 0);
                        qtePessoasContribuiram = newQtePessoasContribuiram;
                        if (newQtePessoasContribuiram > 0)
                        {
                            for (int i = qtePessoasContribuiram; i >= 0; i--)
                            {
                                int n;
                                double qteContribuiçao;
                                double recebimento;
                                double qteReceber;

                                Console.WriteLine("Informe o numero da pessoa da pessoa");
                                n = int.Parse(Console.ReadLine());

                                Console.WriteLine("Informe a quantia que a pessoa contribuiu");
                                qteContribuiçao = Convert.ToDouble(Console.ReadLine());

                                recebimento = (qteContribuiçao * 100) / valorRecebido;
                                qteReceber = (recebimento / 100) * valorRecebido;

                                Console.WriteLine("A pessoa n. : " + n + " tem " + qteReceber + "A receber.");
                            }
                        }

                    }
                }


                Console.ReadKey();
            }
        }
    }

    sábado, 23 de dezembro de 2017 03:04

Respostas

  • Bom dia Junior.

    Vamos lá, vou tentar te ajudar.

    1 parte - calcular o valor recebido e gastos e retornar o restante - ok

    2 parte - calcular o montante que cada um deve receber do restante do dinheiro

    Como você já armazenou o valor do restante na variável sobra, o que tem que saber é a quantidade de pessoas que contribuiram.

    Depois disso, fazer sobra / qtdPessoasContribuiram aí você saberá o montante que cada um receberá.

    Como você quer saber o percentual de acordo com o que cada um contribuiu, fica difícil porque você não informou isso.

    Por exemplo:

    Digamos que o gasto foi 50 e o total de contribuições fosse 150, o valor de Sobra seria 100 e teriam 5 pessoas contribuindo da seguinte forma:

    Fabio deu 30

    José deu 20

    Antonio deu 40

    Pedro deu 30

    Roberto deu 30

    Você precisa informar a quantidade que foi dada por cada um para poder calcular o percentual. Sem isso não tem mesmo como avançar.

    Sabido os valores é possível calcular através da formula de percentual => x = (valorContribuicao * 100)/150

    Uma sugestão de ouro, separe as partes de seu código através de #region e #endregion - essas palavras ajudam bastante na organização e leitura do seu código. 

    sábado, 23 de dezembro de 2017 12:36
  • Eu fiz uma simulação aqui, veja se te atende.

    Alterei a ordem das coisas para ficar melhor pra entender.

    Dê uma olhada e me fale depois.

        class Program
        {
            static void Main(string[] args)
            {
                double valorRecebido = 0;
                double valorGasto = 0;
                double valorRestante = 0;
                List<double> montante = new List<double>();

                //Console.Write("Insira o valor total recebido.");
                //valorRecebido = Convert.ToDouble(Console.ReadLine());

                //Console.Write("Informe o valor gasto.");
                //valorGasto = Convert.ToDouble(Console.ReadLine());

                //valorRestante = valorRecebido - valorGasto;

                //if (valorRecebido >= valorGasto)            
                //    Console.WriteLine("O objeto se pagou");            
                //else            
                //    Console.WriteLine("Teve prejuizo. Nada a retornar");

                Console.Write("Quantas pessoas contribuiram??");
                int qtePessoas = int.Parse(Console.ReadLine());

                if (qtePessoas > 0)
                {
                    for (int indice = 0; indice < qtePessoas; indice++)
                    {
                        Console.Write("Valor da pessoa " + indice + " ");
                        montante.Add(Convert.ToDouble(Console.ReadLine()));
                        valorRecebido += montante[indice];
                    }

                    Console.Write("Informe o valor gasto.");
                    valorGasto = Convert.ToDouble(Console.ReadLine());

                    valorRestante = valorRecebido - valorGasto;

                    Console.WriteLine("Valor Recebido " + valorRecebido.ToString());
                    Console.WriteLine("Valor Gasto " + valorGasto.ToString());
                    Console.WriteLine("Valor Restante " + valorRestante.ToString());

                    for (int indice = 0; indice < qtePessoas; indice++)
                    {
                        double percentual = (montante[indice] * 100) / valorRecebido;
                        double valorRetorno = (percentual * valorRestante) / 100;
                        Console.WriteLine("Valor Resgatado da pessoa " + indice + " = " + Math.Round(valorRetorno,2).ToString());
                    }
                }
                else
                    Console.WriteLine("o valor informado de pessoas não pode ser zero!");
                Console.ReadKey();
            }
        }

    sábado, 23 de dezembro de 2017 13:08

Todas as Respostas

  • Bom dia Junior.

    Vamos lá, vou tentar te ajudar.

    1 parte - calcular o valor recebido e gastos e retornar o restante - ok

    2 parte - calcular o montante que cada um deve receber do restante do dinheiro

    Como você já armazenou o valor do restante na variável sobra, o que tem que saber é a quantidade de pessoas que contribuiram.

    Depois disso, fazer sobra / qtdPessoasContribuiram aí você saberá o montante que cada um receberá.

    Como você quer saber o percentual de acordo com o que cada um contribuiu, fica difícil porque você não informou isso.

    Por exemplo:

    Digamos que o gasto foi 50 e o total de contribuições fosse 150, o valor de Sobra seria 100 e teriam 5 pessoas contribuindo da seguinte forma:

    Fabio deu 30

    José deu 20

    Antonio deu 40

    Pedro deu 30

    Roberto deu 30

    Você precisa informar a quantidade que foi dada por cada um para poder calcular o percentual. Sem isso não tem mesmo como avançar.

    Sabido os valores é possível calcular através da formula de percentual => x = (valorContribuicao * 100)/150

    Uma sugestão de ouro, separe as partes de seu código através de #region e #endregion - essas palavras ajudam bastante na organização e leitura do seu código. 

    sábado, 23 de dezembro de 2017 12:36
  • Eu fiz uma simulação aqui, veja se te atende.

    Alterei a ordem das coisas para ficar melhor pra entender.

    Dê uma olhada e me fale depois.

        class Program
        {
            static void Main(string[] args)
            {
                double valorRecebido = 0;
                double valorGasto = 0;
                double valorRestante = 0;
                List<double> montante = new List<double>();

                //Console.Write("Insira o valor total recebido.");
                //valorRecebido = Convert.ToDouble(Console.ReadLine());

                //Console.Write("Informe o valor gasto.");
                //valorGasto = Convert.ToDouble(Console.ReadLine());

                //valorRestante = valorRecebido - valorGasto;

                //if (valorRecebido >= valorGasto)            
                //    Console.WriteLine("O objeto se pagou");            
                //else            
                //    Console.WriteLine("Teve prejuizo. Nada a retornar");

                Console.Write("Quantas pessoas contribuiram??");
                int qtePessoas = int.Parse(Console.ReadLine());

                if (qtePessoas > 0)
                {
                    for (int indice = 0; indice < qtePessoas; indice++)
                    {
                        Console.Write("Valor da pessoa " + indice + " ");
                        montante.Add(Convert.ToDouble(Console.ReadLine()));
                        valorRecebido += montante[indice];
                    }

                    Console.Write("Informe o valor gasto.");
                    valorGasto = Convert.ToDouble(Console.ReadLine());

                    valorRestante = valorRecebido - valorGasto;

                    Console.WriteLine("Valor Recebido " + valorRecebido.ToString());
                    Console.WriteLine("Valor Gasto " + valorGasto.ToString());
                    Console.WriteLine("Valor Restante " + valorRestante.ToString());

                    for (int indice = 0; indice < qtePessoas; indice++)
                    {
                        double percentual = (montante[indice] * 100) / valorRecebido;
                        double valorRetorno = (percentual * valorRestante) / 100;
                        Console.WriteLine("Valor Resgatado da pessoa " + indice + " = " + Math.Round(valorRetorno,2).ToString());
                    }
                }
                else
                    Console.WriteLine("o valor informado de pessoas não pode ser zero!");
                Console.ReadKey();
            }
        }

    sábado, 23 de dezembro de 2017 13:08
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 28 de dezembro de 2017 16:56
    Moderador