Resultado "estranho" - Est. de Repetição For - C#

Estou iniciando em C# e me deparei com uma situação ao executar um código com for.
Ao executar e clicar no botão a caixa de texto retorna com a seguinte mensagem:

Segue código abaixo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SalarioFuturo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            /*
                Simples aplicação para calcular um reajuste salarial.
                
                Quanto será um salário de R$ 1.000,00 daqui a 10 anos sendo que em cada ano será reajustado em 7%?
            */
            double salario = 1000;
            double reajuste = 0.07;

            for (int i = 1; i <= 10; i = i + 1)
            {
                salario = salario * reajuste;
            }

            MessageBox.Show("O salário será de: R$ " + salario);
        }
    }
}

O teu problema é de matemática e não de programação. Se o salário tem um reajuste de 7% quer dizer que passas a ganhar só 7% do que ganhavas no ano anterior? Se assim for, quero ser o teu patrão :slight_smile:

Se, por outro lado, deve receber mais 7% do que recebia, tens de rever o que está dentro do teu if (ou simplesmente o valor da variavel reajuste)

1 curtida

Entendi!

O objetivo é adicionar mais 7% em relação ao salário do ano anterior.

O que estava ocorrendo era que estava calculando apenas 7% (e só). Sendo assim, o salário estava “retrocedendo”. (coitado desse cara :sweat_smile:).

Portanto o correto seria…

    private void button1_Click(object sender, EventArgs e)
    {
        /*
            Simples aplicação para calcular um reajuste salarial.
            
            Quanto será um salário de R$ 1.000,00 daqui a 10 anos sendo que em cada ano será reajustado em 7%?
        */
        double salario = 1000;
        double reajuste = 0.07;

        for (int i = 1; i <= 10; i = i + 1)
        {
            salario = (salario * reajuste) + salario;
        }

        MessageBox.Show("O salário será de: R$ " + salario);
    }
}

}

Muito obrigado!

Forte abraço!

:slight_smile:

Também poderias alterar apenas o valor de reajuste, mantendo apenas a multiplicação.
Em vez de 0,07 seria 1,07 (ganharia 107% do valor anterior) .