无效类数组顺序和二进制搜索使用

时间:2019-01-29 16:20:22

标签: c++ search binary sequential

我目前正竭尽全力试图弄清楚该怎么做,并希望有人能提供帮助。

任务的目标是:

  1. 显示原始排序的学生记录数组。

  2. 显示学生记录的顺序搜索结果。

  3. 显示学生记录的二进制搜索结果。

完整说明为:

a。创建包含12个以上学生记录的三个数组,包括ID,学生姓名和

相应的电子邮件地址”,即学生ID依次排序。 (目前无需排序程序。)

b。顺序搜索五个ID(来自已排序数组)和第六个ID(非数组)。

c。二进制搜索五个ID(来自已排序数组)和第六个ID(非数组)。

d。执行和输出:

  1. 显示原始排序的学生记录数组。

  2. 显示学生记录的顺序搜索结果。

  3. 显示学生记录的二进制搜索结果。

任何帮助将不胜感激

    #include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
#include <algorithm>

using namespace std;

struct Student {
    string name;
    int stuID;
    string email;
};


// Show the student information
void showAllInfo(Student *studentArray, int stuCount) {
    cout << "Student Info: "<<endl <<endl<<
        "\t\tStudent Name"<<"\t\tStudent ID"<<"\t\tStudent Email"<<endl<<endl ;

    for (int i = 0; i < stuCount; i++)
    {
        cout<<"\t\t"<< studentArray[i].name<<"\t\t"<<studentArray[i].stuID<<"\t\t\t"<< studentArray[i].email<<endl;
    }
    cout << endl;


}


//Sort out the arrays for the student information
void firstArray()
{

    Student studentArray[12];

    studentArray[0].name = "Bob McBoberston";
    studentArray[0].stuID = 00;
    studentArray[0].email = "BMcboberts@txstate.edu";

        studentArray[1].name = "Shelby Donald";
        studentArray[1].stuID = 1;
        studentArray[1].email = "SDonald@txstate.edu";

        studentArray[2].name = "Ronald Mcdonald";
        studentArray[2].stuID = 2;
        studentArray[2].email = "RMcdonald@txstate.edu";

        studentArray[3].name = "Dick Cheney";
        studentArray[3].stuID = 3;
        studentArray[3].email = "DCheney@txstate.edu";

        studentArray[4].name= "Ben Dover";
        studentArray[4].stuID=4;
        studentArray[4].email="BDover@txstate.edu"; 

        studentArray[5].name="Ash Katchum";
        studentArray[5].stuID=5;
        studentArray[5].email="AKatchum@txstate.edu";

        studentArray[6].name="Brock Whatever";
        studentArray[6].stuID=6;
        studentArray[6].email="BWhatevr@txstate.edu";

        studentArray[7].name="Yugi Oh";
        studentArray[7].stuID=7;
        studentArray[7].email="YugiOh@txstate.edu";         

        studentArray[8].name="Johnny Bravo";
        studentArray[8].stuID=8;
        studentArray[8].email="JBravo@txstate.edu";


        studentArray[9].name="Tom N. Jerry";
        studentArray[9].stuID=9;
        studentArray[9].email="Tnjerry@txstate.edu";

        studentArray[10].name="Fred Flinstone";
        studentArray[10].stuID=10;
        studentArray[10].email="FFlinstone@emial.com";

        studentArray[11].name="Son Goku";
        studentArray[11].stuID=11;
        studentArray[11].email="sGoku@txstate.edu";

        studentArray[12].name="Johnny Test";
        studentArray[12].stuID=12;
        studentArray[12].email="JTest@txstate.edu";
    }

void secondArray()
{
    Student studentArray2[12];

    studentArray2[0].name = "Rick Sanchez";
    studentArray2[0].stuID = 13;
    studentArray2[0].email = "RSanchez@txstate.edu";

        studentArray2[1].name="Morty Smith";
        studentArray2[1].stuID = 14;
        studentArray2[1].email = "MSmith@txstate.edu";

        studentArray2[2].name = "Summer Smith";
        studentArray2[2].stuID = 15;
        studentArray2[2].email = "SSmith@txstate.edu";

        studentArray2[3].name = "Jerry Smith";
        studentArray2[3].stuID = 16;
        studentArray2[3].email = "JSmith@txstate.edu";

        studentArray2[4].name="Mr. Meeseeks";
        studentArray2[4].stuID=17;
        studentArray2[4].email="MMeeseeks@txstate.edu"; 

        studentArray2[5].name="Mr. PoopyButtHole";
        studentArray2[5].stuID=18;
        studentArray2[5].email="MPoopyButt@txstate.edu";

        studentArray2[6].name="Tiny Rick";
        studentArray2[6].stuID=19;
        studentArray2[6].email="TRick@txstate.edu";

        studentArray2[7].name="Pickle Rick";
        studentArray2[7].stuID=20;
        studentArray2[7].email="PRick@txstate.edu";     

        studentArray2[8].name="Beth Smith";
        studentArray2[8].stuID=21;
        studentArray2[8].email="BSmith@txstate.edu";


        studentArray2[9].name="Bird Person";
        studentArray2[9].stuID=22;
        studentArray2[9].email="BmPerson@txstate.edu";

        studentArray2[10].name="Squanchy";
        studentArray2[10].stuID=23;
        studentArray2[10].email="Squanchy@txstate.edu";

        studentArray2[11].name="King Flippy Nips";
        studentArray2[11].stuID=24;
        studentArray2[11].email="KFlippyNipa@txstate.edu";

        studentArray2[12].name="Mr> Goldenfold";
        studentArray2[12].stuID=25;
        studentArray2[12].email="MGoldenfold@txstate.edu";
    }

void thirdArray()
{

Student studentArray3[13];

    studentArray3[0].name = "Santa Claus";
    studentArray3[0].stuID = 26;
    studentArray3[0].email = "SClause@txstate.edu";

        studentArray3[1].name = "Jason Riha";
        studentArray3[1].stuID = 27;
        studentArray3[1].email = "JRiha@txstate.edu";

        studentArray3[2].name = "B-Rad Cragg";
        studentArray3[2].stuID = 28;
        studentArray3[2].email = "BRad@txstate.edu";

        studentArray3[3].name="Roger Legrand";
        studentArray3[3].stuID = 29;
        studentArray3[3].email = "RLegrand@txstate.edu";

        studentArray3[4].name="David De La O";
        studentArray3[4].stuID=30;
        studentArray3[4].email= "DDelao@txstate.edu";

        studentArray3[5].name="Ian Sporn";
        studentArray3[5].stuID=31;
        studentArray3[5].email="ISporn@txstate.edu";

        studentArray3[6].name="Morgan Taylor";
        studentArray3[6].stuID=32;
        studentArray3[6].email="Mytaylor@txstate.edu";

        studentArray3[7].name="Sam Huggins";
        studentArray3[7].stuID=33;
        studentArray3[7].email="SHuggins@txstate.edu";      

        studentArray3[8].name="Shaun Huggins";
        studentArray3[8].stuID=34;
        studentArray3[8].email="ShuHuggins@txstate.edu";


        studentArray3[9].name="Serena Huggins";
        studentArray3[9].stuID=35;
        studentArray3[9].email="SerHuggins@txstate.edu";

        studentArray3[10].name="Kylie Parziale";
        studentArray3[10].stuID=36;
        studentArray3[10].email="KParziale@txstate.edu";

        studentArray3[11].name="Jimmy Fallon";
        studentArray3[11].stuID=37;
        studentArray3[11].email="JFallon@txstate.edu";

        studentArray3[12].name="Tom Goat Brady";
        studentArray3[12].stuID=38;
        studentArray3[12].email="TGBrady@txstate.edu";

        studentArray3[13].name="Harry Giblets";
        studentArray3[13].stuID=39;
        studentArray3[13].email="HGiblets@txstate.edu";
    }


int main() {

    int stuCount = 39;
firstArray();
secondArray();
thirdArray();   

showAllInfo(studentArray,stuCount);



    return 0;
}

1 个答案:

答案 0 :(得分:0)

所以您有一些问题。首先是在您编写的函数中声明了数组,因此没有其他代码可以访问它们。您应该在main函数内部声明数组,以便可以将它们作为参数传递给。如果您不知道如何将数组作为参数传递,那么剩下的分配工作对您来说将很困难。

无论如何,这样开始,您无需编写函数来设置阵列,就可以像这样直接在main中完成

int main()
{
    Student firstArray[12] = {
        { "Bob McBoberston", 0, "BMcboberts@txstate.edu" },
        ...
    };
    Student secondArray[12] = {
        ...
    };
    Student thirdArray[12] = {
        ...
    };

    ...
}

现在已设置好数组,您需要编写一个函数来进行顺序搜索(二进制搜索更加复杂,因此请暂时保留该函数)。

考虑一个函数需要什么参数以及它具有什么 return 值。这总是 编写函数时的第一步,但这也是许多新手都在努力的第一步。

对于顺序搜索功能,它需要知道1)要搜索的数组,2)该数组的大小,3)您要搜索的ID。这些是参数。该函数似乎可以返回所找到的人的数组中的索引,如果找不到ID,则返回一个特殊值-1似乎是合理的。这不是唯一的方法,但是现在就可以了。所以把它们放在一起

// look for 'id' in 'array' and returns the index if found or -1 if not found
int sequential_search(Person array[], int array_size, int id)
{
    ...
}

在您的主要功能中,您将使用类似以下的功能

int main()
{
    ...
    // look for person with id 5
    int id = 5;
    int index = sequential_search(firstArray, 12, id);
    if (index == -1)
         cout << "ID " << id << " not found\n";
    else
         cout << "ID " << id << " is " << firstArray[index].name << "\n";
}

有主意吗?希望这可以给您一个开始。您可以休息一下,然后再次询问是否遇到困难。