#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <functional>
using namespace std;
struct Worker{
char name[20];
int age;
int exp;
};
void Input(Worker* arrWithDigits[], int size ){
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
cout << "Фамилия: ";
cin.getline(arrWithDigits[i][j].name, 20);
cout << "Год рождения: ";
cin >> arrWithDigits[i][j].age;
cout << "Опыт работы: ";
cin >> arrWithDigits[i][j].exp;
cin.get();
}
}
}
void SortShell(Worker* arrWithDigits[], int size)
// Вот эта функция - полная хуйня
// Сортирует НЕПРАВИЛЬНО, во-первых сортирует не столбцы, а строки, во-вторых пропускает первую строку
// ну и в третьих - swap НЕ РАБОТАЕТ. С чем это связанно понимаю: менять нужно полностью структуры
// то что написано тут меняет только года рождения, в этом и косяк.
// Отсортировать столбцы никак у меня не выходит, чтобы я не делал, все хуйня, а поменять структуры местами
// тем более. вот и прошу у тебя помощи, знающий анон.
{
for (int gap = size/2; gap>0; gap/=2)
for (int i=gap; i<size; i++)
for (int j=i-gap; j>=0 && arrWithDigits[i][j].age > arrWithDigits[i][j+gap].age; j-=gap)
swap(arrWithDigits[i][j].age, arrWithDigits[i][j+gap].age);
}
void Output(Worker* arrWithDigits[], int size){
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
cout << arrWithDigits[i][j].name << ", "<< arrWithDigits[i][j].age << ", "<< arrWithDigits[i][j].exp << '\t'<<" | ";
}
cout << endl;
}
cout << endl << endl;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int size;
cout << "Введите размер матрицы: ";
cin >> size;
cin.get();
Worker** arrWithDigits = new Worker* [size];
for (int i = 0; i < size; i++){
arrWithDigits[i] = new Worker[size];
}
cout << endl << endl;
cout << "Введите данные о " << size*size << " сотрудниках" << endl;
Input(arrWithDigits, size);
system("cls");
cout << "Матрица (Фамилия, год рождения, стаж работы)" << endl;
Output(arrWithDigits, size);
cout << "Матрица (Фамилия, год рождения, стаж работы)" << endl;
SortShell(arrWithDigits, size);
Output(arrWithDigits, size);
return 0;
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHdpbmRvd3MuaD4gCiNpbmNsdWRlIDxmdW5jdGlvbmFsPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKIApzdHJ1Y3QgV29ya2VyewoJY2hhciBuYW1lWzIwXTsKCWludCBhZ2U7CglpbnQgZXhwOwp9OyAKCgp2b2lkIElucHV0KFdvcmtlciogYXJyV2l0aERpZ2l0c1tdLCBpbnQgc2l6ZSApewoJCglmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKyl7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBzaXplOyBqKyspewoJCQljb3V0IDw8ICLQpNCw0LzQuNC70LjRjzogIjsKCQkJY2luLmdldGxpbmUoYXJyV2l0aERpZ2l0c1tpXVtqXS5uYW1lLCAyMCk7CgkJCWNvdXQgPDwgItCT0L7QtCDRgNC+0LbQtNC10L3QuNGPOiAiOwoJCQljaW4gPj4gYXJyV2l0aERpZ2l0c1tpXVtqXS5hZ2U7CgkJCWNvdXQgPDwgItCe0L/Ri9GCINGA0LDQsdC+0YLRizogIjsKCQkJY2luID4+IGFycldpdGhEaWdpdHNbaV1bal0uZXhwOwoJCQljaW4uZ2V0KCk7IAoJCX0KCX0KCQp9Cgp2b2lkIFNvcnRTaGVsbChXb3JrZXIqIGFycldpdGhEaWdpdHNbXSwgaW50IHNpemUpCQkKCi8vINCS0L7RgiDRjdGC0LAg0YTRg9C90LrRhtC40Y8gLSDQv9C+0LvQvdCw0Y8g0YXRg9C50L3RjwovLyDQodC+0YDRgtC40YDRg9C10YIg0J3QldCf0KDQkNCS0JjQm9Cs0J3Qniwg0LLQvi3Qv9C10YDQstGL0YUg0YHQvtGA0YLQuNGA0YPQtdGCINC90LUg0YHRgtC+0LvQsdGG0YssINCwINGB0YLRgNC+0LrQuCwg0LLQvi3QstGC0L7RgNGL0YUg0L/RgNC+0L/Rg9GB0LrQsNC10YIg0L/QtdGA0LLRg9GOINGB0YLRgNC+0LrRgwovLyDQvdGDINC4INCyINGC0YDQtdGC0YzQuNGFIC0gc3dhcCDQndCVINCg0JDQkdCe0KLQkNCV0KIuINChINGH0LXQvCDRjdGC0L4g0YHQstGP0LfQsNC90L3QviDQv9C+0L3QuNC80LDRjjog0LzQtdC90Y/RgtGMINC90YPQttC90L4g0L/QvtC70L3QvtGB0YLRjNGOINGB0YLRgNGD0LrRgtGD0YDRiwovLyDRgtC+INGH0YLQviDQvdCw0L/QuNGB0LDQvdC+INGC0YPRgiDQvNC10L3Rj9C10YIg0YLQvtC70YzQutC+INCz0L7QtNCwINGA0L7QttC00LXQvdC40Y8sINCyINGN0YLQvtC8INC4INC60L7RgdGP0LouIAovLyDQntGC0YHQvtGA0YLQuNGA0L7QstCw0YLRjCDRgdGC0L7Qu9Cx0YbRiyDQvdC40LrQsNC6INGDINC80LXQvdGPINC90LUg0LLRi9GF0L7QtNC40YIsINGH0YLQvtCx0Ysg0Y8g0L3QtSDQtNC10LvQsNC7LCDQstGB0LUg0YXRg9C50L3Rjywg0LAg0L/QvtC80LXQvdGP0YLRjCDRgdGC0YDRg9C60YLRg9GA0Ysg0LzQtdGB0YLQsNC80LgKLy8g0YLQtdC8INCx0L7Qu9C10LUuINCy0L7RgiDQuCDQv9GA0L7RiNGDINGDINGC0LXQsdGPINC/0L7QvNC+0YnQuCwg0LfQvdCw0Y7RidC40Lkg0LDQvdC+0L0uCgoKICB7CiAgICBmb3IgKGludCBnYXAgPSBzaXplLzI7IGdhcD4wOyBnYXAvPTIpCiAgICAgIGZvciAoaW50IGk9Z2FwOyBpPHNpemU7IGkrKykKICAgICAgICBmb3IgKGludCBqPWktZ2FwOyBqPj0wICYmIGFycldpdGhEaWdpdHNbaV1bal0uYWdlID4gYXJyV2l0aERpZ2l0c1tpXVtqK2dhcF0uYWdlOyBqLT1nYXApCiAgICAgICAgICBzd2FwKGFycldpdGhEaWdpdHNbaV1bal0uYWdlLCBhcnJXaXRoRGlnaXRzW2ldW2orZ2FwXS5hZ2UpOwogIH0KCgoKCnZvaWQgT3V0cHV0KFdvcmtlciogYXJyV2l0aERpZ2l0c1tdLCBpbnQgc2l6ZSl7CgkKCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXsKCQlmb3IgKGludCBqID0gMDsgaiA8IHNpemU7IGorKyl7CgkJCWNvdXQgPDwgYXJyV2l0aERpZ2l0c1tpXVtqXS5uYW1lIDw8ICIsICI8PCBhcnJXaXRoRGlnaXRzW2ldW2pdLmFnZSA8PCAiLCAiPDwgYXJyV2l0aERpZ2l0c1tpXVtqXS5leHAgPDwgJ1x0Jzw8IiB8ICI7CgkJfQoJCWNvdXQgPDwgZW5kbDsKCX0KCWNvdXQgPDwgZW5kbCA8PCBlbmRsOwp9CgoKaW50IG1haW4oKQp7CglTZXRDb25zb2xlQ1AoMTI1MSk7CglTZXRDb25zb2xlT3V0cHV0Q1AoMTI1MSk7CgoJaW50IHNpemU7CgoJY291dCA8PCAi0JLQstC10LTQuNGC0LUg0YDQsNC30LzQtdGAINC80LDRgtGA0LjRhtGLOiAiOwkKCWNpbiA+PiBzaXplOwoJY2luLmdldCgpOyAKCglXb3JrZXIqKiBhcnJXaXRoRGlnaXRzID0gbmV3IFdvcmtlciogW3NpemVdOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspewoJCWFycldpdGhEaWdpdHNbaV0gPSBuZXcgV29ya2VyW3NpemVdOwoJfQoKCWNvdXQgPDwgZW5kbCA8PCBlbmRsOwoJY291dCA8PCAi0JLQstC10LTQuNGC0LUg0LTQsNC90L3Ri9C1INC+ICIgPDwgc2l6ZSpzaXplIDw8ICIg0YHQvtGC0YDRg9C00L3QuNC60LDRhSIgPDwgZW5kbDsKCUlucHV0KGFycldpdGhEaWdpdHMsIHNpemUpOwoKCXN5c3RlbSgiY2xzIik7Cgljb3V0IDw8ICLQnNCw0YLRgNC40YbQsCAo0KTQsNC80LjQu9C40Y8sINCz0L7QtCDRgNC+0LbQtNC10L3QuNGPLCDRgdGC0LDQtiDRgNCw0LHQvtGC0YspIiA8PCBlbmRsOwoJT3V0cHV0KGFycldpdGhEaWdpdHMsIHNpemUpOwoKCWNvdXQgPDwgItCc0LDRgtGA0LjRhtCwICjQpNCw0LzQuNC70LjRjywg0LPQvtC0INGA0L7QttC00LXQvdC40Y8sINGB0YLQsNC2INGA0LDQsdC+0YLRiykiIDw8IGVuZGw7CglTb3J0U2hlbGwoYXJyV2l0aERpZ2l0cywgc2l6ZSk7CglPdXRwdXQoYXJyV2l0aERpZ2l0cywgc2l6ZSk7CQoJCQkKCXJldHVybiAwOwp9