C++ 将多个输入语句转换为循环?
这个函数有5个变量。得1-5分。有没有一种方法可以代替在我的代码中重复提示用户输入5次,使用循环存储用户输入并完成每次迭代?这是我的家庭作业,但这已经不重要了,因为我的程序运行良好,我只想清理一下代码。我也不能在这里使用数组。提前感谢您的建议C++ 将多个输入语句转换为循环?,c++,C++,这个函数有5个变量。得1-5分。有没有一种方法可以代替在我的代码中重复提示用户输入5次,使用循环存储用户输入并完成每次迭代?这是我的家庭作业,但这已经不重要了,因为我的程序运行良好,我只想清理一下代码。我也不能在这里使用数组。提前感谢您的建议 void getScore(double &score1, double &score2, double &score3, double &score4, double &score5) { cout
void getScore(double &score1, double &score2, double &score3, double &score4, double &score5)
{
cout << "Enter a score: ";
cin >> score1;
cout << "Enter a score: ";
cin >> score2;
cout << "Enter a score: ";
cin >> score3;
cout << "Enter a score: ";
cin >> score4;
cout << "Enter a score: ";
cin >> score5;
cout << "-------------------" << endl;
void getScore(双倍计分1、双倍计分2、双倍计分3、双倍计分4、双倍计分5)
{
cout>1分;
cout>2分;
cout>3分;
cout>4分;
cout>5分;
你为什么不使用std::vector作为:
std::vector<double> readScore(int count)
{
std::vector<double> v;
for (int i = 0; i < count ; ++i)
{
double score;
std::cout << "Enter a score: ";
std::cin >> score;
v.push_back(score);
}
return v;
}
std::vector<double> scores = readScore(5);
std::向量读取分数(整数计数)
{
std::向量v;
对于(int i=0;iscore;
v、 推回(得分);
}
返回v;
}
标准::向量分数=读取分数(5);
如果无法更改函数参数,并且必须坚持使用5个参数,则可以执行以下操作:
void getScore(double &score1, double &score2, double &score3, double &score4, double &score5)
{
//store the address of each parameter in an array of pointers
double *input[] = {&score1,&score2,&score3,&score4,&score5};
for(int i = 0 ; i < 5 ; ++i)
{
std::cout << "Enter a score : ";
std::cin >> *input[i]; //it reads into parameters!
}
}
void getScore(双倍计分1、双倍计分2、双倍计分3、双倍计分4、双倍计分5)
{
//将每个参数的地址存储在指针数组中
双*输入[]={&score1、&score2、&score3、&score4、&score5};
对于(int i=0;i<5;++i)
{
std::cout>*输入[i];//它读入参数!
}
}
在此解决方案中,首先将每个参数的地址存储在指针数组中,然后在循环中使用指针数组读取分数。由于input[i]
是其中一个参数的地址,这取决于i
的值,因此std::cin>*input[i]
将读取用户输入并将其存储在input[i]
指向的同一地址,该地址只是参数之一。为什么不使用std::vector
作为:
std::vector<double> readScore(int count)
{
std::vector<double> v;
for (int i = 0; i < count ; ++i)
{
double score;
std::cout << "Enter a score: ";
std::cin >> score;
v.push_back(score);
}
return v;
}
std::vector<double> scores = readScore(5);
std::向量读取分数(整数计数)
{
std::向量v;
对于(int i=0;iscore;
v、 推回(得分);
}
返回v;
}
标准::向量分数=读取分数(5);
如果无法更改函数参数,并且必须坚持使用5个参数,则可以执行以下操作:
void getScore(double &score1, double &score2, double &score3, double &score4, double &score5)
{
//store the address of each parameter in an array of pointers
double *input[] = {&score1,&score2,&score3,&score4,&score5};
for(int i = 0 ; i < 5 ; ++i)
{
std::cout << "Enter a score : ";
std::cin >> *input[i]; //it reads into parameters!
}
}
void getScore(双倍计分1、双倍计分2、双倍计分3、双倍计分4、双倍计分5)
{
//将每个参数的地址存储在指针数组中
双*输入[]={&score1、&score2、&score3、&score4、&score5};
对于(int i=0;i<5;++i)
{
std::cout>*输入[i];//它读入参数!
}
}
在此解决方案中,首先将每个参数的地址存储在指针数组中,然后在循环中使用指针数组读取分数。由于input[i]
是其中一个参数的地址,这取决于i
的值,因此std::cin>*input[i]
将读取用户输入,并将其存储在输入[i]
指向的同一地址,该地址只不过是参数之一。如果数据结构的用户没有保存值,您将无法使用循环。但是,您可以将实际读取的内容考虑到函数中,以避免某种程度的代码重复:
bool getScore(double& score)
{
std::cout << Enter a score: ";
return std::cin >> score;
}
bool getScore(double &score1, double &score2, double &score3, double &score4, double &score5)
{
return getScore(score1)
&& getScore(score2)
&& getScore(score3)
&& getScore(score4)
&& getScore(score5);
}
bool-getScore(双倍&分数)
{
std::cout如果没有数据结构的用户持有这些值,您将无法使用循环。但是,您可以将实际读取的值考虑到函数中,以避免某种程度的代码重复:
bool getScore(double& score)
{
std::cout << Enter a score: ";
return std::cin >> score;
}
bool getScore(double &score1, double &score2, double &score3, double &score4, double &score5)
{
return getScore(score1)
&& getScore(score2)
&& getScore(score3)
&& getScore(score4)
&& getScore(score5);
}
bool-getScore(双倍&分数)
{
std::你可以使用数组而不是五个参数吗?我猜也不允许使用std:向量。在这种情况下,你不能循环。按照教授的指示,没有数组。相信我,我现在已经这样做了!循环将进入调用getScore方法的任何函数。(并将其更改为双倍getScore(字符串提示))是的,使用容器和循环。你应该学习零一多规则:编程中唯一的文字数字应该是0和1(可能是-1),以及“多”中的任何数字实例应该是一个容器加循环。你可以使用一个数组而不是五个参数。我猜也不允许使用std:向量。在这种情况下,你不能循环。根据教授的指示,没有数组。相信我,我现在已经这样做了!循环将进入调用getScore方法的任何函数。(并将其更改为double getScore(字符串提示))是的,使用容器和循环。您应该学习零一多规则:编程中唯一的文字数字应该是0和1(可能是-1),以及“多”中的任何数字实例应该是一个容器加循环。我很想知道它是否可行,但我还没有在课堂上学到这一点,并且必须坚持到目前为止所教授的参数。我也不能使用数组。不过谢谢你的建议。如果没有数组或向量就做不到,那也没什么大不了的。它只有几行代码@Gmenfan83:那么你就不能使用循环。我很想知道它是否有效,但我在课堂上还没有学会,并且必须坚持到目前为止所教的参数。我也不能使用数组。不过谢谢你的建议。如果没有数组或向量就做不到,那也没什么大不了的。这只是几行代码。@Gmenfan83:那么就不能使用循环。