c++ - 生成具有一个未知数的线性方程 (c++)

标签 c++ math

我在这里坐了两个小时,脑子里乱糟糟的。我正在尝试为一个未知的线性方程式生成器编写代码。它有3种组合: ax+b=c(例如 2x-3=1) a+bx=c(例如 3-2x=1) a+b=cx(例如 4-6=2x)

所以我做了一些简单的数学运算,制定了一个算法 (x=(c-b)/a),从分母中排除零等。关键是要使结果为整数。这就是为什么有这段代码:

while (((c - b) % (a) != 0))
    {
        do
        {
            a = rand() % 24 - 12;
        } while (a == 0);
        b = rand() % 24 - 12;
        c = rand() % 24 - 12;

    }

前两种组合运行良好,但第三种组合则不然。第三个输出的示例是: 5-7=6x 并且计算出的解是 x = 2。如果在 5 和 7 之间有一个 +,则 x=2。它总是这样。这个一位数是错误的。问题不在于控制台中的打印,而在于计算。

如果你有什么想法,请帮我解决这个问题。 这是代码:

#include <stdio.h>
#include <iostream>
#include <time.h>
#include <stdlib.h> 

using namespace std;

int level_1()
{
/* LEVEL 1 - ROWNANIE Z 1 NIEWIADOMA*/

int a = 5, b = 123, c = 32;
double x;
double answer;
double licznik, mianownik;
cout << "level 1" << endl;
// losujemy kombinacje (1 z 3) dla roznorodnosci
int losowanie = 3;//= rand() % 3 + 1;
if (losowanie == 1) {
    cout << "Rolled: 1" << endl << endl; // x jest przy wspolczynniku a
    a = 5;
    while (((c - b) % (a) != 0))
    {
        do
        {
            a = rand() % 24 - 12;
        } while (a == 0);
        b = rand() % 24 - 12;
        c = rand() % 24 - 12;

    }
    if (a == 1) cout << "x";
    else if (a == -1) cout << "-x";
    else cout << a << "x";

    if (b > 0) cout << "+" << b;
    else if (b == 0) cout << "";
    else cout << b;
    cout << "=";
    if (c >= 0) cout << c;
    else cout << c;

    x = (c - b) / a;
    cout << endl << "Type x = ";
    cin >> answer;
    if (answer == x)
    {
        cout << endl << "good answer" << endl;
        return 1;
    }
    cout << endl << "bad answer." << endl;
    return 0;
}
else if (losowanie == 2){
    cout << "Rolled: 2" << endl << endl; // x jest przy wspolczynniku b
    a = 5;
    while (((c - b) % (a) != 0))
    {
        do
        {
            a = rand() % 24 - 12;
        } while (a == 0);
        b = rand() % 24 - 12;
        c = rand() % 24 - 12;

    }

    if (b!=0)
    cout << b;
    if (a < 0 || a == 0) cout << "";
    else if (a>0) cout << "+";
    if (a == 1) cout << "x";
    else if (a == -1) cout << "-x";
    else cout << a << "x";
    cout << "=" << c;
    x = (c - b) / a;

    cout << endl << "Type x = ";
    cin >> answer;
    if (answer == x)
    {
        cout << endl << "good answer" << endl;
        return 1;
    }
    cout << endl << "bad answer." << endl;
    return 0;
}
else
{
    cout << "You rolled: 3" << endl << endl; // x jest przy wspolczynniku c
    a = 5;
    while (((c - b) % (a) != 0))
    {
        do
        {
            a = rand() % 24 - 12;
        } while (a == 0);
        b = rand() % 24 - 12;
        c = rand() % 24 - 12;

    }
    cout << a << endl << b << endl << c << endl;



    if (c != 0) cout << c;
    if (b != 0)
    {
        if (b > 0) cout << "+";
        else cout << "";
        cout << b;
    }
    cout << "=";
    if (a == 1) cout << "x";
    else if (a == -1) cout << "-x";
    else cout << a << "x";

    x = ((c - b) / a);
    cout << endl<< "zzz" << x << endl;
    cout << endl << "type x = ";
    cin >> answer;

    if (answer == x)
    {
        cout << endl << "good answer" << endl;
        return 1;
    }
    cout << endl << "bad answer." << endl;
    return 0;



}


return 1;
}


int main()
{
//cout << y << endl;
srand(time(NULL));

while (1){
    level_1();
}

}

最佳答案

x=(c-b)/a 仅适用于第一种形式的方程。其他的是 x = (c-a)/bx = (a+b)/c。您应该相应地更改您的 while 循环。

关于c++ - 生成具有一个未知数的线性方程 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29412437/

相关文章:

C++ 初始化列表重载消歧

math - 如何展开并计算log(a + b)?

c++ - 使用物理定律模拟轨道

Objective-c:映射一个范围

java - 四元数串联仅在轴对齐时有效

c++ - Hexfloat 机械手和精度

c++ - (C++) 在 Windows CMD 中显示阴影 block (↓、▒、░)

c++ - STL std::map operator[] 在赋值的右侧

math - Glsl mod 与 Hlsl fmod

c++ - printf 在使用 %.22f 时更改值