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;
}