void class Arrays Последовательный и двоичный поиск с использованием - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я нахожусь в своем уме, пытаясь выяснить, как это сделать, и надеялся, что кто-то может помочь.

Цели, которые необходимо выполнить:

  1. Показать исходный отсортированный массив записей о студентах.

  2. Показать результаты последовательного поиска по записям студентов.

  3. Показать результаты двоичного поискастуденческие записи.

Полные инструкции:

a.Создайте три массива из 12+ записей о студентах, включая идентификаторы, имена учащихся и

соответствующий адрес электронной почты ', - идентификаторы учащихся сортируются по порядку.(На данный момент не требуется программа сортировки.)

b.Последовательный поиск пяти идентификаторов из отсортированного массива и шестого идентификатора, который не из массива.

c.Бинарный поиск по пяти идентификаторам из отсортированного массива и шестому идентификатору, который не из массива.

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 голосов
/ 29 января 2019

Итак, у вас есть несколько проблем.Во-первых, ваши массивы объявлены внутри написанных вами функций, поэтому никакой другой код не сможет получить к ним доступ.Вы должны объявить свои массивы внутри функции main, чтобы они могли передаваться в качестве параметров другим функциям.Если вы не знаете, как передать массив в качестве параметра, то остальная часть этого назначения будет для вас сложной.

В любом случае, давайте начнем так, вам не нужно писать функцию для установкидо массивов, вы можете сделать это непосредственно в main, как это

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

    ...
}

Теперь, когда массивы настроены, вам нужно написать функцию для последовательного поиска (бинарный поиск более сложный, поэтомупока что)

Подумайте о том, какие параметры нужны функции и какое возвращает значение, которое она имеет.Это всегда первый шаг при написании функции, но с этим также сталкиваются многие новички.

В случае функции последовательного поиска ей необходимо знать 1) какой это массивсобираюсь искать, 2) насколько велик этот массив, 3) какой идентификатор вы ищете.Это параметры.Представляется разумным, что функция возвращает индекс в массиве найденного человека или специальное значение -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";
}

Понять?Надеюсь, это даст вам начало.Вы можете сделать все остальное и спросить еще раз, если у вас возникли трудности.

...