C++给出一个小数和分母的小数

C++给出一个小数和分母的小数,c++,function,decimal,fractions,C++,Function,Decimal,Fractions,当我运行这个时,我得到了一个疯狂的十进制数。 然后,我会用完全相同的分子和分母再次运行它,它会给我一些不同的东西。我不知道小数点在哪里,它使用的是数字和分母。我希望它使用一个,用户是被迫进入在程序的开始 我不知道我做错了什么。非常感谢您的帮助 #include <iostream> #include <iomanip> #include <string> using namespace std; void printLogo() { cout <

当我运行这个时,我得到了一个疯狂的十进制数。 然后,我会用完全相同的分子和分母再次运行它,它会给我一些不同的东西。我不知道小数点在哪里,它使用的是数字和分母。我希望它使用一个,用户是被迫进入在程序的开始

我不知道我做错了什么。非常感谢您的帮助

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

void printLogo() {
    cout << "logo here" << endl;
}    

int AskFraction(int &numerator, int &denominator) {
    cout << "Enter numerator: ";
    cin >> numerator;
    cout << "Enter denominator: ";
    cin >> denominator;

    while (denominator == 0 || denominator < 0) {
        cout << "Denominator must be a number above zero." << endl;
        cout << "Enter denominator: ";
        cin >> denominator;
    }

    return numerator, denominator;
 }

float DecimalValue(float &decimalValue, int numerator, int denominator) {
if (denominator != 0 && denominator > 0) {
    decimalValue = numerator / denominator;
}

return decimalValue;
}

void PrintFraction(int numerator, int denominator) {
cout << numerator << "/" << denominator << endl;
}

int main(int numerator, int denominator, float decimalValue) {

printLogo();

AskFraction(numerator, denominator);

DecimalValue(decimalValue, numerator, denominator);
cout << "The decimal value is: " << decimalValue << endl;

PrintFraction(numerator, denominator);

system("pause");
return 0;
}

您的代码包含多种概念。首先,通过引用传递变量,然后尝试返回值。使用“按引用传递”或返回结果的值

float DecimalValue(float &decimalValue, int numerator, int denominator) {
if (denominator != 0 && denominator > 0) {
    decimalValue = numerator / denominator;
}

return decimalValue;
}
这应该是:

void DecimalValue(float &decimalValue, int numerator, int denominator) {
if (denominator != 0 && denominator > 0) {
    decimalValue = numerator / denominator;
}    
}

此外,您还尝试返回两个值。如果需要返回多个结果,则需要使用“按引用传递”。例如:

int AskFraction(int &numerator, int &denominator) {
    cout << "Enter numerator: ";
    cin >> numerator;
    cout << "Enter denominator: ";
    cin >> denominator;

    while (denominator == 0 || denominator < 0) {
        cout << "Denominator must be a number above zero." << endl;
        cout << "Enter denominator: ";
        cin >> denominator;
    }

    return numerator, denominator;
 }
这应该是:

void AskFraction(int &numerator, int &denominator) {
    cout << "Enter numerator: ";
    cin >> numerator;
    cout << "Enter denominator: ";
    cin >> denominator;

    while (denominator == 0 || denominator < 0) {
        cout << "Denominator must be a number above zero." << endl;
        cout << "Enter denominator: ";
        cin >> denominator;
    }    
 }
在更改了我上面指出的内容并更正了主要参数之后,最后的代码是:

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

void printLogo() {
    cout << "logo here" << endl;
}    

void AskFraction(int &numerator, int &denominator) {
    cout << "Enter numerator: ";
    cin >> numerator;
    cout << "Enter denominator: ";
    cin >> denominator;

    while (denominator == 0 || denominator < 0) {
        cout << "Denominator must be a number above zero." << endl;
        cout << "Enter denominator: ";
        cin >> denominator;
    }    
 }

void DecimalValue(float &decimalValue, int numerator, int denominator) {
if (denominator != 0 && denominator > 0) {
    decimalValue = (float)numerator / denominator;
}

}

void PrintFraction(int numerator, int denominator) {
cout << numerator << "/" << denominator << endl;
}

int main() {
int numerator, int denominator, float decimalValue
printLogo();

AskFraction(numerator, denominator);

DecimalValue(decimalValue, numerator, denominator);
cout << "The decimal value is: " << decimalValue << endl;

PrintFraction(numerator, denominator);

system("pause");
return 0;
}

1.请阅读“按值传递”和“按引用传递”的概念。2.Cmd行参数应作为输入,而不是作为在程序中输入的变量。3.返回分子、分母;希望编译器应该生成一个警告。除了@Mahesh声明的内容外,您没有将DecimalValue函数调用的返回值赋给任何对象。而且,主函数的签名不正确。@Mahesh好的,我做了通过引用的事情,并更改了我的分子、分母和DecimalValue。我在我的问题中编辑了它。但我仍然没有得到正确的十进制-它每次都给出0。分子和分母都是int,所以,在C++中,即使十进制值是浮点,也可以执行整数除法,例如2/3到0。您尚未修复返回分子、分母;,你预计会发生什么?
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

void printLogo() {
    cout << "logo here" << endl;
}    

void AskFraction(int &numerator, int &denominator) {
    cout << "Enter numerator: ";
    cin >> numerator;
    cout << "Enter denominator: ";
    cin >> denominator;

    while (denominator == 0 || denominator < 0) {
        cout << "Denominator must be a number above zero." << endl;
        cout << "Enter denominator: ";
        cin >> denominator;
    }    
 }

void DecimalValue(float &decimalValue, int numerator, int denominator) {
if (denominator != 0 && denominator > 0) {
    decimalValue = (float)numerator / denominator;
}

}

void PrintFraction(int numerator, int denominator) {
cout << numerator << "/" << denominator << endl;
}

int main() {
int numerator, int denominator, float decimalValue
printLogo();

AskFraction(numerator, denominator);

DecimalValue(decimalValue, numerator, denominator);
cout << "The decimal value is: " << decimalValue << endl;

PrintFraction(numerator, denominator);

system("pause");
return 0;
}