簡體   English   中英

如何使用索引交換預定義的數組元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM