Witam mam problem musze dodac do programu sortowanie studentow wedlug nr indeksu
chcialem bąbelkowym ale mam pewne problemy jakby ktos umial mi to napisac(poprawic gdzie blad robie) bylbym wdzieczny
podaje kod programu
#include <iomanip>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <fstream>
#include <conio.h>
using namespace std;
const int MAX = 100;
const int STUD = 300;
int licz_student=0;
char* Nazwa="lista.txt";
struct student {
char nazwisko[MAX],
imie[MAX];
char kierunek[MAX];
int album;
};
student *tablica_st[STUD];
void Dodaj()
{
student *nowe_student;
nowe_student=new student;
cout<<"Podaj nazwisko: ";
cin.getline(nowe_student->nazwisko,MAX);
cout<<"Podaj imie: ";
cin.getline(nowe_student->imie,MAX);
cout<<"Podaj kierunek:";
cin.getline(nowe_student->kierunek,MAX);
int i,dlug=strlen(nowe_student->nazwisko);
nowe_student->nazwisko[0]=toupper(nowe_student->nazwisko[0]);
for (i=1;i<dlug;i++) nowe_student->nazwisko[i]=tolower(nowe_student->nazwisko[i]);
nowe_student->imie[0]=toupper(nowe_student->imie[0]);
dlug=strlen(nowe_student->imie);
for (i=1;i<dlug;i++) nowe_student->imie[i]=tolower(nowe_student->imie[i]);
cout<<"Podaj album: ";
cin>>nowe_student->album;
cin.get();
tablica_st[licz_student] = nowe_student;
licz_student++;
}
void Znajdz()
{
char szukaj[MAX];
if (licz_student==0){cout<<"Lista jest pusta"<<endl;} else {
cout<<"Podaj szukane nazwisko ";
cin>>szukaj;cin.get();
int i, dlug=strlen(szukaj);
szukaj[0]=toupper(szukaj[0]);
cout<<setw(10)<<"Nazwisko"<<setw(10)<<"Imie"<<setw(10)<<"Kierunek"<<setw(10)<<"Album"<<endl;
for (int i=0; i < licz_student; i++) {
if (strcmp(tablica_st[i]->nazwisko,szukaj)==0){
cout<<setw(10)<<tablica_st[i]->nazwisko<<setw(10)<<tablica_st[i]->imie<<setw(10)<<tablica_st[i]->kierunek<<setw(10)<<tablica_st[i]->album<<endl;}
else cout<<"Nie ma studenta"<<endl;
}
}
}
// procedura sortujaca tablice
void babel()
{
for (int i=0; i<tablica_st.album; i++)
{
for (int j=0; j<tablica_st.album-1; j++)
{
if (tablica_st.album[j]>tablica_st[j+1].album)
{
int tmp;
tmp = tablica_st.album[j];
tablica_st.album[j] = tablica_st.album[j+1];
tablica_st.album[j+1] = tmp;
}
}// wypisywanie danych
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
cout << tablica_st.album[i][j]<< " ";
}
}
}
}
void fnZapisz(char* Nazwa = "lista.txt")
{
if (licz_student == 0)
{
cout << "Nie ma czego zapisac" << endl;
return;
}
ofstream plik_zap(Nazwa);
if (!plik_zap)
{
cerr << "\n\aPliku " << Nazwa << " nie udalo sie otworzyc\n" << endl;
}
else
{
cout << "zapisuje do pliku:\n";
for (int i = 0;i < licz_student;i++) {
plik_zap << tablica_st[i]->nazwisko << "," << tablica_st[i]->imie
<< "," <<tablica_st[i]->kierunek<<","<< tablica_st[i]->album << endl;
cout << tablica_st[i]->nazwisko << ' ' << tablica_st[i]->imie
<< ' ' <<tablica_st[i]->kierunek<<' '<< tablica_st[i]->album << endl;
}
plik_zap.close();
}
}
void fnOdczyt(char *Nazwa = "lista.txt")
{
ifstream plik_odcz;
plik_odcz.open(Nazwa);
if (!plik_odcz)
{
cerr << "\a\nBRAK PLIKU: " << Nazwa << endl;
}
else
{
cout << "Odczytuje z pliku:\n";
cout << plik_odcz.rdbuf();
plik_odcz.close();
}
}
int main(int argc, char *argv[])
{
char z;
while (1)
{
cout << "***************MENU******************" << endl;
cout << "1 - Dodaj studenta" << endl;
cout << "2 - Znajdz" << endl;
cout << "3 - Wyswietl wszystkie elementy" << endl;
cout << "4 - Sortowanie studentow" <<endl;
cout << "5 - Zapis do pliku" << endl;
cout << "Q - Wyjscie" << endl;
z = getch();
switch (z)
{
case 'Q': return EXIT_SUCCESS;
case 'q': return EXIT_SUCCESS;
case '1': Dodaj(); break;
case '2': Znajdz(); break;
case '3': fnOdczyt(); break;
case '4': babel(); break;
case '5': fnZapisz(); break;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}