C++ C++;如何使用的任意_查找函数中的重复数?
这是我的密码:C++ C++;如何使用的任意_查找函数中的重复数?,c++,C++,这是我的密码: #include <iostream> #include <algorithm> using namespace std; void input_guess_number(int guess_number[]){ int num, check = 0; for(int i = 0; i < 4; i++){ cout << "please enter no." << i+1 <&l
#include <iostream>
#include <algorithm>
using namespace std;
void input_guess_number(int guess_number[]){
int num, check = 0;
for(int i = 0; i < 4; i++){
cout << "please enter no." << i+1 << " number (0-9) and press enter: ";
cin >> num;
if (any_of(begin(guess_number), end(guess_number), [=](int n){return n == num;})){
check = 1;
}
else{
check = 0;
}
if (check == 1){
cout << "\nyou cannot use this number. try another one!\n\n";
i--;
}
else if (num >=0 && num < 10){
guess_number[i] = num;
}
else{
cout << "\nwrong number! please choose a number from 0 to 9.\n\n";
i--;
}
}
cout << "\nYour number is: ";
for(int i = 0; i < 4; i++){
cout << guess_number[i];
}
}
int main()
{
int guess_number[4] = {100, 100, 100, 100};
input_guess_number(guess_number);
}
#包括
#包括
使用名称空间std;
无效输入猜数(整数猜数[]){
int num,check=0;
对于(int i=0;i<4;i++){
cout问题在于,一旦将数组传递给函数,它就会衰减为指向其第一个元素的指针。您不能真正使用指针的begin
和end
。而是传递数组的大小(元素数)将函数作为额外参数,并使用guess\u number
作为开始迭代器,使用guess\u number+size\u作为结束迭代器
或者开始对数组使用。问题是,一旦将数组传递给函数,它将衰减为指向其第一个元素的指针。您不能真正使用指针的begin
和end
。而是传递数组的大小(元素数)将函数作为额外参数,并使用guess\u number
作为开始迭代器,使用guess\u number+size\u作为结束迭代器
或者开始为您的阵列使用
有人知道如何改进吗?谢谢
是,使阵列的长度可通过模板导出
#include <iostream>
#include <algorithm>
using namespace std;
template<std::size_t Length>
void input_guess_number(int (&guess_number)[Length])
{
int num, check = 0;
for(int i = 0; i < Length ; i++){
cout << "please enter no." << i+1 << " number (0-9) and press enter: ";
cin >> num;
if (any_of(begin(guess_number), end(guess_number), [=](int n){return n == num;})){
check = 1;
}
else{
check = 0;
}
if (check == 1){
cout << "\nyou cannot use this number. try another one!\n\n";
i--;
}
else if (num >=0 && num < 10){
guess_number[i] = num;
}
else{
cout << "\nwrong number! please choose a number from 0 to 9.\n\n";
i--;
}
}
cout << "\nYour number is: ";
for(int i = 0; i < 4; i++){
cout << guess_number[i];
}
}
int main()
{
int guess_number[4] = {100, 100, 100, 100};
input_guess_number(guess_number);
}
有人知道如何改进吗?谢谢
是,使阵列的长度可通过模板导出
#include <iostream>
#include <algorithm>
using namespace std;
template<std::size_t Length>
void input_guess_number(int (&guess_number)[Length])
{
int num, check = 0;
for(int i = 0; i < Length ; i++){
cout << "please enter no." << i+1 << " number (0-9) and press enter: ";
cin >> num;
if (any_of(begin(guess_number), end(guess_number), [=](int n){return n == num;})){
check = 1;
}
else{
check = 0;
}
if (check == 1){
cout << "\nyou cannot use this number. try another one!\n\n";
i--;
}
else if (num >=0 && num < 10){
guess_number[i] = num;
}
else{
cout << "\nwrong number! please choose a number from 0 to 9.\n\n";
i--;
}
}
cout << "\nYour number is: ";
for(int i = 0; i < 4; i++){
cout << guess_number[i];
}
}
int main()
{
int guess_number[4] = {100, 100, 100, 100};
input_guess_number(guess_number);
}
@Rakete1111你是对的,我错了。抱歉搞混了。谢谢。:)在将其修改为:if(任意的(猜数,猜数+4,[=](int n){return n==num;})后,效果很好。@Rakete1111你是对的,我错了。抱歉搞混了。谢谢。:)在将其修改为:if(任意的(猜数,猜数+4,[=](int n){return n==num;})谢谢。这也是工作,它似乎使用C++的核心知识。我将尝试更多地了解这个。@ TANKVVV增加了另一个版本,使用<代码> STD::向量< /代码>。它还计算剩余的(未使用的)。数字,并在输出中作为压缩范围序列表达出来。你可能会发现它很有指导性。很好,非常感谢。)这一个有很多我以前不知道的东西。谢谢。这也是可行的,而且似乎使用了C++的核心知识。我将尝试更多地了解这个。“TANKVVV增加了另一个版本,使用<代码> STD::向量< /代码>。。它还计算剩余的(未使用的)数字,并将它们在输出中表示为压缩范围序列。我想你可能会觉得它很有启发性。很好,非常感谢。:)这个数字有很多我以前不知道的东西。