как объединить принимаемые значения .тхт
У меня есть принимаемые значения из .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 шт):
У тебя есть два путя© .... (на самом деле больше)
Поскольку вы используете свою сортировку, ничего не мешает добавить к обмену 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
Вам нужно исправить внутренний цикл, добавив код для обмена значений в массивах 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() работает быстрее, чем использование временной переменной.