Karolis921 (+68)
Sveiki, turiu uždavinį kuriame duota n-mokinių skaičius, mokinio vardas ir pavardė (20 pozicijų), lytis (m, v) ir gimimo data (metai, mėnuo ir diena). Šiuos duomenis reikia surikiuoti nuo vyriausio iki jauniausio.
Pvz. duomenys buvo:
8
Julius Stepauskas v 1998 5 14
Karolis Lingys v 1997 12 5
Samanta Rimavičiūtė m 1998 4 13
Lukas Didžbalis v 1998 9 1
Andrius Kaminskas v 1998 8 15
Ieva Apanavičiūtė m 1997 11 4
Eglė Surdokaitė m 1998 2 16
Saulius Vilkelis v 1998 2 14
Ir turi atrodyti štai taip:
Vaikinai:
*****************************
Karolis Lingys 1997 12 5
Saulius Vilkelis 1998 2 14
Julius Stepauskas 1998 5 14
Andrius Kaminskas 1998 8 15
Lukas Didžbalis 1998 9 1
*****************************
Merginos:
*****************************
Ieva Apanavičiūtė 1997 11 4
Eglė Surdokaitė 1998 2 16
Samanta Rimavičiūtė 1998 4 13
*****************************
Mano kodas:
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
using namespace std;
struct rusiavimas
{
string vardpav;
char lytis;
int metai, menuo, diena;
};
void skaityti (rusiavimas a[], int &n);
void rik_isrinkimu(rusiavimas a[], int n);
int main()
{
int n;
rusiavimas a[99];
skaityti(a,n);
cout << "Vaikinai:" <<endl;
cout << "********************************" <<endl;
rik_isrinkimu(a,n);
for (int i=0; i<n; i++)
{
if (a[i].lytis=='v')
{
cout <<a[i].vardpav<<" "<<a[i].lytis<<" "<<a[i].metai<<" "<<a[i].menuo<<" "<<a[i].diena<<endl;
}
}
cout << "********************************" <<endl;
cout << "Merginos:" <<endl;
cout << "********************************" <<endl;
for (int i=0; i<n; i++)
{
if (a[i].lytis=='m')
{
cout <<a[i].vardpav<<" "<<a[i].lytis<<" "<<a[i].metai<<" "<<a[i].menuo<<" "<<a[i].diena<<endl;
}
}
cout << "********************************" <<endl;
return 0;
}
void skaityti (rusiavimas a[], int &n)
{
char pav[21];
ifstream in ("duom.txt");
in >> n;
for (int i=0; i<n; i++)
{
in.ignore(80,'\n');
in.get (pav,21);
a[i].vardpav=pav;
in >> a[i].lytis >> a[i].metai >> a[i].menuo >> a[i].diena;
//cout <<a[i].vardpav<<" "<<a[i].lytis<<" "<<a[i].metai<<" "<<a[i].menuo<<" "<<a[i].diena<<endl;
}
in.close();
}
void rik_isrinkimu (rusiavimas a[], int n)
{
int mina;
rusiavimas b;
for(int i = 0; i < n-1; i++)
{
mina = i;
for (int j = i+1; j < n; j++)
if (a[j].metai<a[mina].metai && a[j].menuo>a[mina].menuo && a[j].diena<a[mina].diena)
mina = j;
b = a[i];
a[i] = a[mina];
a[mina] = b;
}
}
Lyg ir viskas link tos pusės, tik nebeatsimenu kaip rikiuoti pagal kelis kriterijus.