Witam serdecznie.
Mam do zrobienia zadanie o treści:
Dane są trzy dynamicznie alokowane tablice, które przechowują imię (char), wiek (int) oraz płeć (bool). Napisz program pozwalający na: **
#-wprowadzenie danych do tablic.
#- wyświetlenie dotychczas wprowadzonych danych*
#-posortowanie danych zgodnie z kryterium:
#imię - rosnąco lub malejąco.
#wiek - rosnąco lub malejąco.
#płeć
Realizacja tego zadania wymaga definicji wszystkich powtarzających się operacji w postaci funkcji szablonowych. Należy również zadbać o właściwe wielkości tablic, tab aby nigdy nie zabrakło miejsca dla kolejnej wprowadzonej osoby.
Dotychczas udało mi się wymyślić, coś takiego (patrz poniżej na kod). Niestety nie jest to dobre rozwiązanie.
Wszystkie pomysły mi się skończyły, a nawet jeśli jakieś mam nie potrafię ich zastosować w kodzie
Dlatego zwracam się z ogromną prośbą o pomoc.
template <typename Data, int size>
class Stos {
Data* data;
int top;
public:
Stos();
bool empty() const;
void push(Data);
Data pop();
};
template <typename Data, int size>
Stos<Data,size>::Stos() {
data = new Data[size];
top = 0;
}
template <typename Data, int size>
inline bool Stos<Data,size>::empty() const {
return top == 0;
}
template <typename Data, int size>
inline void Stos<Data,size>:ush(Data dat) {
data[top++] = dat;
}
template <typename Data, int size>
void show(Stos<Data,size>* p_stos) {
while ( ! p_stos->empty() ) {
cout << p_stos->pop() << " ";
}
cout << endl;
}
template <typename Data, int size>
inline Data Stos<Data,size>:op() {
return data[--top];
}
int main(int argc, char *argv[])
{
Stos<string,15> imie;
imie.push("Ala");
imie.push("Ela");
imie.push("Ola");
show(&imie);
Stos<int,15> wiek;
wiek.push(5);
wiek.push(10);
wiek.push(15);
show(&wiek);
Stos<bool,15> plec;
plec.push(true);
plec.push(true);
plec.push(false);
show(&plec);
}