该程序应该让用户输入5个名称并输出任何重复的名称。如何使我的程序为数组中的值输出“重复名称”?我似乎无法理解如何编写它,因此当用户输入名称时它将检查重复的元素。谢谢。
#include <iostream>
using namespace std;
int main() {
string names[5]; //array with 5 names
string input;
for (string input : names){
cout << "Please enter a name: ";
cin >> input;
}
for (int check = 1; check-1; check++){
if (input == names[check]){
cout << input << " is a duplicate name!" << endl;
}
}
}
答案 0 :(得分:2)
一些要纠正的问题包括:
for (string input : names)
创建一个临时变量,但无法修改原始数组;使用for (string &input : names)
创建对循环块中每个数组元素的引用。for
循环没有嵌套,因此没有理由将数组的某个元素(或input
字符串)与其他元素进行比较。您可以将第二个循环嵌套在input
循环中以在添加名称时执行检查,也可以将检查分成单独的块。请注意,有更有效的方法来解决此问题,例如保留unordered_set
所见名称。嵌套循环的时间复杂度呈指数增长。for
循环的终止条件并没有测试任何有用的条件(它评估为0
的{{1}},立即终止循环)。迭代直到计数器达到或超过数组false
的长度才更合适。5
输出:
#include <iostream>
int main() {
std::string names[5];
for (std::string &input : names) {
std::cout << "Please enter a name: ";
std::cin >> input;
}
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 5; j++) {
if (names[i] == names[j]){
std::cout << names[i] << " is a duplicate name!" << std::endl;
}
}
}
}