我一直在使用“未初始化的变量'y'使用”和“未初始化的变量'x'。”我尝试了很多东西,似乎无法修复它。任何投入将不胜感激。请记住,我还没有完全完成代码。我想在解决Mulfloats(void)之前解决这个问题。 谢谢,这是我的代码。
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
void help(void);
void SubIntegers(void);
int getInteger(void);
void displayIntegers(int n1, int n2);
void Mulfloats(void);
int getFloat(void);
void displayIntegers(float& n1, float& n2, float& s);
int main(void)
{
char choice;
while (1)
{
cout << "\tSelection Menu\n";
cout << "*******************************\n";
cout << " H Help\n";
cout << " S Subinteger\n";
cout << " M MullFloats\n";
cout << " Q Quit\n";
cout << " Input your choice and press Enter: ";
cin >> choice;
switch (choice)
{
case 'h':
case 'H':
help();
break;
case 's':
case 'S':
SubIntegers();
break;
case 'm':
case 'M':
float x, y;
{
cout << "Enter two valid float numbers\n";
cin >> x >> y;
cout << "x=" << x << endl;
cout << "y=" << y << endl;
cout << setw(8) << setprecision(6) << "The Product of the two float numbers is " << (x*y) << endl;
}
break;
case 'q':
case 'Q':
cout << "The program terminated per the user request...\n";
exit(0);
default:
cout << "\tNot a Valid Choice. \n";
cout << "\tValid choices are 1, 2, 3, 4\n";
cin >> choice;
}
}
return EXIT_SUCCESS; // the program returns to the first line
}
void help(void)
{
cout << "Press h or H to access Help Menu," << endl
<< "Press s or S to access Subinteger Menu," << endl
<< "Press m or M to access MullFloat Menu," << endl
<< "Press q or Q to terminate the program." << endl;
}
void SubIntegers(void)
{
int x, y;
{
cout << "Enter two integers to compare" << endl;
getInteger();
getInteger();
displayIntegers(x, y);
}
}
int getInteger(void)
{
int x;
cin >> x;
return x;
int y;
cin >> y;
return y;
}
void displayIntegers(int n1, int n2)
{
cout << "x=" << n1 << endl
<< "y=" << n2 << endl
<< "The difference of the two integers is " << (n1 - n2) << endl;
}
答案 0 :(得分:2)
仅仅因为您在x
或y
中将值读入main
和getInteger
并不意味着它会更改具有此名称的所有变量的值。具有相同名称但位于不同范围的不同变量是完全独立的实体,因此x
中的y
和SubIntegers
未初始化。
这实际上是一个非常基本的误解,你应该得到good book并开始阅读它。
答案 1 :(得分:1)
首先按@BaummitAugen
所述初始化变量int getInteger(void){
int x;
cin >> x;
return x;
int y; // unreachable code
cin >> y; // unreachable code
return y; // unreachable code
}
inside void SubIntegers(void)
其次,你的代码错了
int getInteger(void)
{
int x;
cin>>x;
return x;
}
将其更改为:
psndrv1.f
答案 2 :(得分:0)
你正在搞砸输入来比较两个数字。你声明了一个函数int getInteger(void);
但是在函数SubIntegers()
中使用它时,您忘记了该函数的返回类型为int,并且其返回值需要存储在int类型的变量中。
接下来,在函数getInteger()
中,放置2个没有任何条件的return语句,并假设函数在输入后返回两个变量。但它是函数的属性,它会在遇到return语句时立即结束。所以你的函数的最后3行无法访问,如@Vishal所述。
合并这些,如果您以这种方式编辑代码,它将起作用:
void SubIntegers(void)
{
int x, y;
{
cout << "Enter two integers to compare" << endl;
x = getInteger();
y = getInteger();
displayIntegers(x, y);
}
}
int getInteger(void)
{
int x;
cin >> x;
return x;
}