как объединить принимаемые значения .тхт

У меня есть принимаемые значения из .txt в разные массивы которые являются также временными переменными. в тхт помещались так-же через временные переменные... мне нужно отсортировать так чтобы принятые значения из группы перемещались совместно с ID

void SortingByID()
{
    ifstream reading("Data.txt");

    int n = 0, j = 0, i = 0, temp = 0;
    int arr_ID[100];
    int arr_KV[100];
    int arr_Floors[100];
    string arr_Surname[100];

    reading >> n;
    
    if (reading)
    {
        // чтение данных из файла и сохранение в массивы
        for (int i = 0; i < n; i++)
        {
            reading >> arr_ID[i];
            reading >> arr_KV[i];
            reading >> arr_Floors[i];
            reading >> arr_Surname[i];

            
        }
        for (j = 0; j < n; j++)
        {
            for (i = 0; i < n - 1 - j; i++)
            {
                if (arr_ID[i] > arr_ID[i + 1])
                {
                    temp = arr_ID[i];
                    arr_ID[i] = arr_ID[i + 1];
                    arr_ID[i + 1] = temp;
                }
            }
        }
        // вывод данных
        for (int i = 0; i < n; i++) {
            cout << "ID: " << arr_ID[i] << endl;
            cout << "кв.м: " << arr_KV[i] << endl;
            cout << "Этажность: " << arr_Floors[i] << endl;
            cout << "Фамилия: " << arr_Surname[i] << endl;
            cout << "_________________________________\n" << endl;
        }
    }
    
}

Ответы (2 шт):

Автор решения: MBo

У тебя есть два путя© .... (на самом деле больше)

Поскольку вы используете свою сортировку, ничего не мешает добавить к обмену arr_ID обмен и соответствующих элементов других массивов

 if (arr_ID[i] > arr_ID[i + 1])
            {
                temp = arr_ID[i];
                arr_ID[i] = arr_ID[i + 1];
                arr_ID[i + 1] = temp;
                temp = arr_KV[i];
                arr_KV[i] = arr_KV[i + 1];
                arr_KV[i + 1] = temp;
                ... и другие массивы
            }

Или объединить все поля в структуры (или классы), и сортировать один массив структур по нужному полю

 struct Record {
    int ID;
    int KV;
    int Floors;
    string Surname;
 };
 
 Record arr[100];

    ... reading >> arr[i].ID; etc
 
→ Ссылка
Автор решения: anonymus

Вам нужно исправить внутренний цикл, добавив код для обмена значений в массивах arr_KV, arr_Floors, и arr_Surname там же, где вы меняете arr_ID. Пример исправления цикла:

for (int j = 0; j < n; j++) {
    for (int i = 0; i < n - 1 - j; i++) {
        if (arr_ID[i] > arr_ID[i + 1]) {
            // Сортировка ID
            temp = arr_ID[i];
            arr_ID[i] = arr_ID[i + 1];
            arr_ID[i + 1] = temp;

            // Сортировка кв.м
            temp = arr_KV[i];
            arr_KV[i] = arr_KV[i + 1];
            arr_KV[i + 1] = temp;

            // Сортировка этажей
            temp = arr_Floors[i];
            arr_Floors[i] = arr_Floors[i + 1];
            arr_Floors[i + 1] = temp;

            // Сортировка фамилий
            arr_Surname[i].swap(arr_Surname[i + 1]);
        }
    }
}

Для обмена строк можно использовать метод swap() вместо присваивания временной переменной, так как строки — это объекты класса string и для них swap() работает быстрее, чем использование временной переменной.

→ Ссылка