工资上的便士-数学计算-C#

工资上的便士-数学计算-C#,c#,C#,我想在X天内把硬币的数量翻一番 所以,3天=4便士,4天=8便士,等等 我一直在寻找正确的代码:(我知道我很接近,我知道我错过了一些愚蠢的东西。我已经花了5个小时在这个问题上。我只是想看看解决方案,这样我的头脑就会把它放在如何工作上…) 我终于明白了。。。现在。。。我怎样才能清理这个??我还在学习用更少的代码来写。。。但我现在正在关注一本w/VisualC的书 // Local variables. / int daysWorkedInputVal

我想在X天内把硬币的数量翻一番

所以,3天=4便士,4天=8便士,等等

我一直在寻找正确的代码:(我知道我很接近,我知道我错过了一些愚蠢的东西。我已经花了5个小时在这个问题上。我只是想看看解决方案,这样我的头脑就会把它放在如何工作上…)

我终于明白了。。。现在。。。我怎样才能清理这个??我还在学习用更少的代码来写。。。但我现在正在关注一本w/VisualC的书

            // Local variables. /
            int daysWorkedInputValue;
            decimal currentPayRate, newPayRate, totalPaySalary;

            int daysWorked;
            int count = 0;
            currentPayRate = 0.01m;
            totalPaySalary = 0m;

            daysWorkedInputValue = int.Parse(daysWorkedInputTextBox.Text);

            if (int.TryParse(daysWorkedInputTextBox.Text, out daysWorked))
            {
                if (daysWorked >= 0)
                {
                    // Continue to process the input. /

                    if (daysWorkedInputValue == 0)
                    {
                        totalPayCalcLabel.Text = "$0.00";
                    }

                    if (daysWorkedInputValue == 1)
                    {
                        totalPayCalcLabel.Text = "$0.01";
                    }

                    // The following loop calculates the total pay. /
                    while (count <= (daysWorked - 1))
                    {
                        // Calculate the total pay amount. /
                        if (count == 1)
                        {
                            currentPayRate = 0.01m;
                            totalPayCalcLabel.Text = currentPayRate.ToString("c");
                        }

                        currentPayRate = currentPayRate * 2;
                        totalPaySalary = currentPayRate;

                        if (count >= 1)
                        {
                            totalPayCalcLabel.Text = totalPaySalary.ToString("c");
                        }

                        // Add one to the loop counter. /
                        count = count + 1;

                        // Return focus back to the organisms TextBox. /
                        daysWorkedInputTextBox.Focus();

                    }
//局部变量/
int daysWorkedInputValue;
十进制当前工资率、新工资率、总工资率;
内特·戴斯沃克;
整数计数=0;
当前付款率=0.01米;
工资总额=0万元;
daysWorkedInputValue=int.Parse(daysWorkedInputTextBox.Text);
if(int.TryParse(daysWorkedInputTextBox.Text,out daysWorked))
{
如果(daysWorked>=0)
{
//继续处理输入/
如果(daysWorkedInputValue==0)
{
totalPayCalcLabel.Text=“$0.00”;
}
如果(daysWorkedInputValue==1)
{
totalPayCalcLabel.Text=“$0.01”;
}
//下面的循环计算总薪酬/
而(计数=1)
{
totalPayCalcLabel.Text=totalPaySalary.ToString(“c”);
}
//将一个添加到循环计数器/
计数=计数+1;
//将焦点返回到文本框/
daysWorkedInputTextBox.Focus();
}

我在这里看到了一个非常明显的模式:

3 days -> 2^(3-1) = 4 pennies
4 days -> 2^(4-1) = 8 pennies
所以你要解方程:

pennies = 2^(days-1)
我还没有运行您的代码来查看出了什么问题(没有任何东西会改变
count
daysWorked
的值,因此我假设您最终会陷入无限循环),但这应该可以正常工作:

var pennies = Math.Pow(2, days - 1);

我在这里看到了一个非常明显的模式:

3 days -> 2^(3-1) = 4 pennies
4 days -> 2^(4-1) = 8 pennies
所以你要解方程:

pennies = 2^(days-1)
我还没有运行您的代码来查看出了什么问题(没有任何东西会改变
count
daysWorked
的值,因此我假设您最终会陷入无限循环),但这应该可以正常工作:

var pennies = Math.Pow(2, days - 1);

看起来是GP,是几何级数吗()?请分享问题上下文的完整代码。您没有增加计数,还有其他东西(没有中断,没有重新分配currentPay)看起来是GP,是几何级数吗()?请分享问题上下文的完整代码。您没有增加计数,还有其他内容(没有中断,没有重新分配currentPay)