簡體   English   中英

C ++(線性搜索和排序)

[英]C++ (Linear Search and Sorting)

有關C ++的幫助。 我正在努力的兩件事

  1. 我試圖對列表名稱進行線性搜索,但由於某種原因出現消息“ ABSENT!”。 輸入錯誤名稱時不會出現。 我該如何解決?

  2. 我試圖按輸入名稱的姓氏的升序對字母進行排序,但是我真的不知道如何將其用於循環和數組。

以下是到目前為止我要進行編碼的內容(上面所說的“線性搜索和排序”是我需要幫助的地方,需要進行修改)。

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

const int Students = 10;
int numStudents = 0;
string StudentName[Students];
int found = -1;
string SearchName;

int main() {
        cout << "Enter the number of students (1-10): ";
        cin >> numStudents;

    for (int i = 0; i < numStudents; i++) {
        cout << "Enter a name: ";
        cin.ignore();
        getline(cin, StudentName[i]);
    }

    cout << "\nEnter a search name: ";
    cin.ignore();
    getline(cin, SearchName);

    **//Linear Search
    for (int i = 0; i < numStudents; i++) {

        if (StudentName[i] == SearchName)
            found = i;
            cout << "PRESENT! Found in position " << found << endl;

        if (StudentName[i] != SearchName)
                found = 0;
                cout << "ABSENT!" << endl;
    }
    //Sorting
    for (int i = 0; i < numStudents - 1; i++) {
        for (int j = i + 1; j < numStudents; j++)
            if (StudentName[i] > StudentName[j]) {
                string t = StudentName[i];
                StudentName[i] = StudentName[j];
                StudentName[j] = t;
            }
    }
    cout << "\nThe Sorted list is:" << "\n";**


    system("pause");
    return 0;
}

這段代碼

    if (StudentName[i] == SearchName)
        found = i;
        cout << "PRESENT! Found in position " << found << endl;

    if (StudentName[i] != SearchName)
            found = 0;
            cout << "ABSENT!" << endl;

if語句缺少花括號。 它應該是

    if (StudentName[i] == SearchName) {
        found = i;
        cout << "PRESENT! Found in position " << found << endl;
    }

    if (StudentName[i] != SearchName) {
            found = 0;
            cout << "ABSENT!" << endl;
    }

但是,代碼仍然不正確,因為在檢查所有名稱之前,您不知道自己沒有找到名稱。 因此,從邏輯上講,“未找到”的測試只能在for循環之后進行。

我會寫這樣的代碼

//Linear Search
found = -1;
for (int i = 0; i < numStudents; i++) {

    if (StudentName[i] == SearchName) {
        found = i;
        break; // we've found it, quit the loop
    }

}

if (found == -1) // did we find it?
    cout << "ABSENT!" << endl;
else
    cout << "PRESENT! Found in position " << found << endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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