如何使用索引交换预定义的数组元素
How do I swap a pre defined array element using an index?
我正在尝试交换两个初始化字符串的数组元素(请参阅下面的代码),我以为我知道如何做到这一点,但我尝试的方式似乎不起作用。我们不允许使用"交换"功能,我在许多其他论坛上看到过类似的问题。因此,我使用了一个临时索引变量来交换它们,但这似乎不起作用。不确定如何修复它并使其发挥作用,所以我的问题是如何做到这一点。
我对编程还很陌生,所以答案对我来说可能还不那么明显。我已经盯着这个看了一段时间,仍然看不见,我也试着在reddit上问,但他们没有给我一个非常简洁或有用的答案。如果你能帮我解释为什么它不会交换元素,那将是非常棒的,如果你看到我可以做的任何其他错误或改进,请告诉我,非常感谢你的反馈,谢谢!
代码:
#include <iostream>
using namespace std;
void printArray(string names[]) {
for (int i = 0; i < 7; i++) {
cout << names[i] << " ";
}
}
int main() {
int x = 0, a, b;
string answer, name1, name2;
string index;
string names[7] = {"John", "Dave", "Jim", "Amanda", "Kelsey", "Don", "Jennifer"};
printArray(names);
while (x < 1) {
cout << endl << "Do you want to swap students? " << endl;
cin >> answer;
if (answer == "Yes" || answer == "yes") {
cout << "Who would you like to swap?" << endl;
cin >> name1;
for(a = 0; a < 7; a++) {
if (names[a] == name1) {
cout << "Yes, " << name1 << " is in the line." << endl;
}
}
cout << "Who would you like to swap " << name1 << " for?" << endl;
cin >> name2;
for(b = 0; b < 7; b++) {
if (names[b] == name2) {
cout << "Yes, " << name2 << " is in the line!!" << endl;
index = names[a];
names[a] = names[b];
names[b] = index;
printArray(names);
}
}
} else {
cout << endl << "Thanks, please behave now, students!" << endl;
x++;
}
}
return 0;
}
更多上下文:
打印出当前类的排列(即,数组的当前内容,按顺序排列)。向用户提示是否要交换2名学生。如果他们同意,则继续执行步骤3。询问用户要交换的两名学生的姓名。如果两个学生都在数组中,则交换他们在数组中的位置。如果其中一名学生不在课堂上,请在控制台上打印一条错误消息,例如"对不起,您必须选择两名在排队的学生!"。无论步骤4的结果如何,请返回步骤1。
在搜索name1
时,无论是否找到,循环都会运行到7,这会干扰您的交换任务:
index = names[a]; //a=7
names[a] = names[b]; //a=7
names[b] = index;.
使用break
:
if (names[a] == name1) {
cout << "Yes, " << name1 << " is in the line." << endl;
break;
}
在进行交换时,a的值始终为7!所以它不起作用。
相关文章:
- 数组元素打印的递归方法
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 为什么使用数组元素查找最大数字的程序不起作用?
- 删除动态数组时未定义标识符
- 数组元素更改值?
- 如何访问宏中定义的数组元素
- 将数组元素递增 1
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在 std::map 中插入数组元素
- 使用指针访问数组元素时出现意外结果
- c++ 使用动态分配运算符反向数组元素
- 为什么在 c++ 中分配 char 数组元素时,分配的字符会被销毁?
- 如何通过引用对用户定义对象的类型集 (STL) 的数组元素进行增强迭代?
- 如何在 c++ 预处理器宏中处理数组元素?
- 为什么可以在长度为 0 的数组中添加定义元素 C++.
- 未定义的行为:数组元素的值隐式/不合逻辑地更改
- 在函数中定义一个动态数组,然后返回数组元素。如何释放阵列的内存?
- C++ 我知道数组长度,但想知道是否是一种更简洁的数组元素定义方法