[英]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。向用戶詢問要交換的兩個學生的姓名。 如果兩個學生都在數組中,請交換他們在數組中的位置。 如果有任何一個學生不在課堂上,請在控制台上打印一條錯誤消息,例如“對不起,您必須選擇2個在線的學生!”。 無論步驟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! 因此它不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.