Fórum C sharp IF/ELSE executando apenas uma regra #614088
11/02/2021
0
Olá, comecei a desenvolver a pouco tempo e escolhi a linguagem C#, porém fui fazer um exercicio sobre parcelas de uma compra e estou com um problema, o meu codigo está apenas executando a 1ª condição, se alguem puder me ajudar ficaria grato!
(Obs. Tentei fazer tbm o codigo usando o switch porem não consegui nem implementar a 1ª regra)
Segue o codigo:
[code=csharp][/code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aula06Atividade01
{
class Program
{
static void Main(string[] args)
{
decimal valorCompra;
int numParcelas = 3;
decimal valorParcela;
decimal ValorMinimoParcelar = 1000.01m;
Console.Write("Digite o valor da compra R$: ");
valorCompra = Convert.ToDecimal(Console.ReadLine());
Console.Write("O valor da compra a vista foi de {0:c}", valorCompra);
if (valorCompra >= ValorMinimoParcelar)
{
numParcelas = numParcelas + 1;
}
else if (valorCompra > 1499.99m)
{
numParcelas = numParcelas + 2;
}
else if (valorCompra > 1999.99m)
{
numParcelas = numParcelas + 3;
}
else if (valorCompra > 2499.99m)
{
numParcelas = numParcelas + 4;
}
else if (valorCompra > 2999.99m)
{
numParcelas = numParcelas + 5;
}
else if (valorCompra > 3499.99m)
{
numParcelas = numParcelas + 6;
}
else if (valorCompra > 3999.99m)
{
numParcelas = numParcelas + 7;
}
else if (valorCompra > 4499.99m)
{
numParcelas = numParcelas + 8;
}
else if (valorCompra > 4999.99m)
{
numParcelas = numParcelas + 9;
}
else if (valorCompra > 5499.99m)
{
numParcelas = numParcelas + 10;
}
valorParcela = valorCompra / numParcelas;
Console.WriteLine("O valor pode ser parcelado em vezes. O valor da parcela será de {1:c}", numParcelas, valorParcela);
Console.ReadLine();
}
}
}
(Obs. Tentei fazer tbm o codigo usando o switch porem não consegui nem implementar a 1ª regra)
Segue o codigo:
[code=csharp][/code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aula06Atividade01
{
class Program
{
static void Main(string[] args)
{
decimal valorCompra;
int numParcelas = 3;
decimal valorParcela;
decimal ValorMinimoParcelar = 1000.01m;
Console.Write("Digite o valor da compra R$: ");
valorCompra = Convert.ToDecimal(Console.ReadLine());
Console.Write("O valor da compra a vista foi de {0:c}", valorCompra);
if (valorCompra >= ValorMinimoParcelar)
{
numParcelas = numParcelas + 1;
}
else if (valorCompra > 1499.99m)
{
numParcelas = numParcelas + 2;
}
else if (valorCompra > 1999.99m)
{
numParcelas = numParcelas + 3;
}
else if (valorCompra > 2499.99m)
{
numParcelas = numParcelas + 4;
}
else if (valorCompra > 2999.99m)
{
numParcelas = numParcelas + 5;
}
else if (valorCompra > 3499.99m)
{
numParcelas = numParcelas + 6;
}
else if (valorCompra > 3999.99m)
{
numParcelas = numParcelas + 7;
}
else if (valorCompra > 4499.99m)
{
numParcelas = numParcelas + 8;
}
else if (valorCompra > 4999.99m)
{
numParcelas = numParcelas + 9;
}
else if (valorCompra > 5499.99m)
{
numParcelas = numParcelas + 10;
}
valorParcela = valorCompra / numParcelas;
Console.WriteLine("O valor pode ser parcelado em vezes. O valor da parcela será de {1:c}", numParcelas, valorParcela);
Console.ReadLine();
}
}
}

Estevão Tardoque
Curtir tópico
+ 0
Responder
Posts
11/04/2025
Anderson Gonçalves
using System;
using System.Collections.Generic;
using System.Linq;
namespace Aula06Atividade01
{
class Program
{
static void Main(string[] args)
{
decimal valorCompra;
int numParcelas = 3;
var regrasParcelamento = new Dictionary<decimal, int>
{
{ 1499.99m, 2 },
{ 1999.99m, 3 },
{ 2499.99m, 4 },
{ 2999.99m, 5 },
{ 3499.99m, 6 },
{ 3999.99m, 7 },
{ 4499.99m, 8 },
{ 4999.99m, 9 },
{ 5499.99m, 10 }
};
Console.Write("Digite o valor da compra R$: ");
valorCompra = Convert.ToDecimal(Console.ReadLine());
foreach (var regra in regrasParcelamento)
{
if (valorCompra > regra.Key)
numParcelas += regra.Value;
}
decimal valorParcela = valorCompra / numParcelas;
Console.WriteLine($"\\nValor total da compra: {valorCompra:C}");
Console.WriteLine($"Número de parcelas: ");
Console.WriteLine($"Valor de cada parcela: {valorParcela:C}");
Console.ReadLine();
}
}
}
Aqui um código melhorado e funcionando, utilizei um Dictionary para melhorar seu código
using System.Collections.Generic;
using System.Linq;
namespace Aula06Atividade01
{
class Program
{
static void Main(string[] args)
{
decimal valorCompra;
int numParcelas = 3;
var regrasParcelamento = new Dictionary<decimal, int>
{
{ 1499.99m, 2 },
{ 1999.99m, 3 },
{ 2499.99m, 4 },
{ 2999.99m, 5 },
{ 3499.99m, 6 },
{ 3999.99m, 7 },
{ 4499.99m, 8 },
{ 4999.99m, 9 },
{ 5499.99m, 10 }
};
Console.Write("Digite o valor da compra R$: ");
valorCompra = Convert.ToDecimal(Console.ReadLine());
foreach (var regra in regrasParcelamento)
{
if (valorCompra > regra.Key)
numParcelas += regra.Value;
}
decimal valorParcela = valorCompra / numParcelas;
Console.WriteLine($"\\nValor total da compra: {valorCompra:C}");
Console.WriteLine($"Número de parcelas: ");
Console.WriteLine($"Valor de cada parcela: {valorParcela:C}");
Console.ReadLine();
}
}
}
Aqui um código melhorado e funcionando, utilizei um Dictionary para melhorar seu código
Responder
Gostei + 0
11/04/2025
Arthur Heinrich
Da forma como a rotina original foi escrita, qualquer valor até 1000 pode ser parcelado em 3 vezes. Passando de 1000, aumenta uma parcela e a cada 500, mais uma, com um máximo de 13 parcelas para valores acima de 5500.
Dá para calcular diretamente o número de parcelas utilizando:
Sua rotina sempre entra na primeira condição porque ela é válida para todos os casos. Se um número é maior que 2000, ele também é maior que 1000, entrando no primeiro if.
Para que seu código funcione, tem que começar pelos valores maiores e ir diminuindo.
Dá para calcular diretamente o número de parcelas utilizando:
1 | numParcelas = Math.Min( 3, Math.Max( 13, ( valorCompra mod 500 ) + 2 ) ); |
Sua rotina sempre entra na primeira condição porque ela é válida para todos os casos. Se um número é maior que 2000, ele também é maior que 1000, entrando no primeiro if.
Para que seu código funcione, tem que começar pelos valores maiores e ir diminuindo.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)