Bubblesort дает нарушение доступа

Привет всем, я пытаюсь выполнить задание для класса, где мне нужно отсортировать файл, полный сотрудников по их идентификационному номеру. В файле 10 строк с информацией о сотрудниках. Заказ является идентификатором LASTNAME FIRSTNAME

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

Буду признателен за любую помощь.

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

class Employee
{
public:
int _id;
string _lastName;
string _firstName;

Employee()
{
_id = 0;
_lastName = "n/a";
_firstName = "n/a";
}
};

void copyFile10(Employee [], int);
void sortFile10(Employee [], int);
int main()
{
const int size10 = 10;
Employee employees10[size10];

copyFile10(employees10, size10); //1.fill array/copy file
sortFile10(employees10, size10); //2. sort

system("pause");
return 0;
}

void copyFile10(Employee employees10[], const int size)
{
ifstream data10("data_10.dat");
for(int count = 0; count < 10; count++) //1.fill array/copy file
{
data10 >> employees10[count]._id;
data10 >> employees10[count]._lastName;
data10 >> employees10[count]._firstName;
}
data10.close();
}

void sortFile10(Employee employees10[], const int size)
{
Employee buff1;
Employee buff2;
int counter = 0;
bool ordered = false;

while (ordered == false)
{
for(int count = 0; count < size-1; count++)
{
if(employees10[count]._id > employees10[count+1]._id)
{
buff1._id = employees10[count+1]._id;
buff1._lastName = employees10[count+1]._lastName;
buff1._firstName = employees10[count+1]._firstName;

buff2._id = employees10[count]._id;
buff2._lastName = employees10[count]._lastName;
buff2._firstName = employees10[count]._firstName;

employees10[count]._id = buff1._id;
employees10[count]._lastName = buff1._lastName;
employees10[count]._firstName = buff1._firstName;

employees10[count+1]._id = buff2._id;
employees10[count+1]._lastName = buff2._lastName;
employees10[count+1]._lastName = buff2._lastName;

counter++;
}
if(counter == 0)
ordered = true;
else
counter = 0;
}
}
}

0

Решение

for(int count = 0; count < size; count++)
{
if(employees10[count]._id > employees10[count+1]._id)

Что происходит здесь на последней итерации цикла (т.е. когда count это 9)?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]