c - 如何用 C 语言编写求解器程序的替代品?

标签 c solver

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

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) 我曾经在我的(Jurassic)Palm Pilot 上有一个名为 MathPad 的出色求解器程序(由 Rick Huebner 编写,请参阅 http://www.palmspot.com/software/detail/ps52a_98295.html ),可能是用 C 编写的。

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

提前致谢

最佳答案

您的程序使用此计算:

Revenue = Cost * (1 + GrossMargin);

如果收入输入为零,则它是正确的。但猜猜如果您打算计算成本并将其输入为零,同时为收入成本输入有效值,会发生什么。正如你所说,它会惨败。

最简单的解决方案是检查哪个输入的数量为零并进行相应的计算。像这样的事情:

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

然后显示您的值(value)观。

关于c - 如何用 C 语言编写求解器程序的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477673/

相关文章:

c - 软终止一个简单的网络服务器

c - 如何从 C 中的控制台读取一行?

c - C中的嵌套动态结构?

python - 用Python求解方程组

python - 如何求解函数的一个变量,首先给出其他变量(Fsolve)

python - sympy:双摆方程组

c - 为什么使用存储类说明符来确定两个独立的属性?

c++ - 求解字符串中的等式以得到 C

vba - SolverOptions : How to find the parameter position (AssumeNonNeg)?

c - 如何从 C 编程中的函数返回结构变量?