Usuário com melhor resposta
Estou iniciando em C#, fui criar um programa e encontrei certas dificuldades. Aprecio verdadeiramente ajuda.

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();
}
}
}
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.
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 28 de dezembro de 2017 16:56
-
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();
}
}
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 28 de dezembro de 2017 16:56
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.
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 28 de dezembro de 2017 16:56
-
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();
}
}
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 28 de dezembro de 2017 16:56
-
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.