Здравствуйте. У меня возникла проблема с сортировкай. Вот что за код получился, там есть сортировка но она сортирует по фамилии а нужно по дате рождения. Помогите пожалуйста заранее спасибо.
Код:
#include "iostream"
#include "time.h"
#include "conio.h"
using namespace std;
struct ZNAK
{
char family[15];
char name[15];
char znak[11];
int date[3];
};
bool chars(char* char1, char* char2, char* char3, char* char4)
{
int count = 0;
int sovpad = 0;
while (char1[count] != '\0')
{
if (char1[count] == char2[count])
++sovpad;
++count;
}
while (char3[count] != '\0')
{
if (char3[count] == char4[count])
++sovpad;
++count;
}
if (count == sovpad)
return true;
return false;
}
void Search(ZNAK *pZNAK, char* family, char* name, int n)
{
bool ok = false;
for (int i = 0; i < n; ++i)
{
if (chars(pZNAK[i].family, family, pZNAK[i].name, name))
{
cout << "Family: " << pZNAK[i].family << endl;
cout << "name: " << pZNAK[i].name << endl;
cout << "ZNAK: " << pZNAK[i].znak << endl;
cout << "Date: " << pZNAK[i].date[0] << ":" << pZNAK[i].date[1] << ":" << pZNAK[i].date[2] << endl;
ok = true;
}
}
if (!ok)
cout << "Family ne naydena!!!!" << endl;
}
/* сортировка по фамилии
void Sort(ZNAK *pZNAK, int n)
{
// A - 65
// z - 122
ZNAK f;
for (int i = 0; i < n - 1; ++i)
{
for (int j = i; j < n; ++j)
{
bool h = true;
int q = 0;
while (h == true && q < 16)
{
if (pZNAK[j].family[q] < pZNAK[i].family[q])
{
h=false;
f = pZNAK[i];
pZNAK[i] = pZNAK[j];
pZNAK[j] = f;
}
else if (pZNAK[j].family[q] > pZNAK[i].family[q])
h = false;
++q;
}
}
}
}
*/
int main()
{
int n;
ZNAK pZNAK[10];
cout << "Vvedite N (n <= 10): ";
cin >> n;
if (n > 10)
{
cout << "Error: N" << endl;
return 0;
}
for (int i = 0; i < n; ++i)
{
cout << "Number " << i << endl;
cout << "Vvedite Family -> ";
cin >> pZNAK[i].family;
cout << "Vvedite name -> ";
cin >> pZNAK[i].name;
cout << "Vvedite Znak -> ";
cin >> pZNAK[i].znak;
cout << "Vvedite date[format: den', mesyac, god] -> ";
cin >> pZNAK[i].date[0] >> pZNAK[i].date[1] >> pZNAK[i].date[2];
}
char family[15];
char name[15];
cout << "Vvedite family dly poiska: ";
cin >> family;
cout << "<<<<<SEARCH RESULT>>>>>" << endl;
Search(&pZNAK[0], &family[0], &name[0], n);
Sort(&pZNAK[0], n);
cout << "<<<<<SORT RESULT>>>>>" << endl;
for (int i = 0; i < n; ++i)
{
cout << "Family: " << pZNAK[i].family << endl;
cout << "ZNAK: " << pZNAK[i].znak << endl;
cout << "Date: " << pZNAK[i].date[0] << ":" << pZNAK[i].date[1] << ":" << pZNAK[i].date[2] << endl;
cout << "________________________________________________" << endl;
}
getch();
return 0;
}
Условие