0

1)我想创建一个(ersatz of)求解器,其中有一个简单的表达式,例如:

Revenue = Cost * (1 + GrossMargin)

会给用户带来 3 个问题:

  • 收入 ?
  • 成本 ?
  • 毛利率 ?

要求用户回答这 3 个问题中的 2 个,程序计算第三个问题。

这是我(完全新手)的尝试:

//
//  main.c
//  LearningC
//  Created by ThG on 19/10/13
//

#include <stdio.h>

int main(int argc, char *argv[])
{
    // Variables
    float Cost = 0;
    float GrossMargin = 0;
    float Revenue = 0;

    // Ask the User
    printf("What is your Revenue ? : ");
    scanf("%f", &Revenue);
    printf("What is your cost ? : ");
    scanf("%f", &Cost);
        printf("What is your Gross Margin goal ? : ");
    scanf("%f", &GrossMargin);

    // Equation
    Revenue = Cost * (1 + GrossMargin);

    // Nested ifs or expressions "Solver"
    if (Revenue == 0)
    {
        printf("Your Revenue should be : %.2f $ * (1 + %.2f) = %.2f $\n", Cost, GrossMargin, Revenue);
    }
        else
        {
            if (Cost == 0)
                printf("Your Cost should not be higher than : %.2f $ / (1 + %.2f) = %.2f $\n", Revenue, GrossMargin, Cost);
            else
                printf("Your GrossMargin is : %.2f $ / %.2f -1 = %.2f $\n", Revenue, Cost, GrossMargin);
        }

    return 0;    
}

当然,这惨遭失败(顺便说一句,(lldb 是什么意思?)。我应该如何继续?

我希望这个问题在 StackOverflow 的上下文中不是无关紧要的。我是否应该明确指出这不是家庭作业(我退休了……)?

2)我曾经在我的(侏罗纪)Palm Pilot 上安装了一个名为 MathPad 的卓越求解程序(Rick Huebner 编写,参见http://www.palmspot.com/software/detail/ps52a_98295.html),可能是用 C 语言编写的。

你知道是否已经开发和维护了任何类似的东西?

提前致谢

4

1 回答 1

1

您的程序使用以下计算:

Revenue = Cost * (1 + GrossMargin);

如果Revenue输入为零,那将是正确的。但是猜猜如果您Cost在输入 和 的有效值时打算计算并将其输入为零Revenue会发生什么Cost。正如你所说,它将惨遭失败。

最简单的解决方案是检查哪些输入的数量为零并相应地计算。像这样的东西:

if(Revenue == 0)
    Revenue = Cost * (1 + GrossMargin);
else if(Cost == 0)
    Cost = Revenue / (1+GrossMargin);
else
    GrossMargin = (Revenue-Cost)/Cost;

然后展示你的价值观。

于 2013-10-20T13:12:45.947 回答