Baza danych prob sortowania

0

Witajcie koledzy i koleżanki programiści,
Od pewnego czasu piszę bazę danych na zaliczenie z przedmiotu (algorytmy i struktury danych 1 rok studiów).
Moim problemem jest funkcja sortująca alfabetycznie ( a raczej nie sortująca :D)
Nie mam już pomysłów jak to naprawić. Przy kodzie pomagali mi koledzy z roku bo jako aspirujący grafik nie "czuje" programowania w Cpp.
Z tego oto powodu proszę was o pomoc :) Dodam że sprawa jest nagląca bo do jutra jest termin, a muszę narysować schematy blokowe :)

 
#include <iostream>
#include <fstream>
#include <conio.h>
#include <cstdlib>


using namespace std;

struct poz
{
    char iautor[30];
    char nautor[30];
    char tytul[30];
    char wydawnictwo[30];
    int pozycja;
    int rok;
    


};

void wyswietl(poz baza[100], int i, int &licznik);
void dodaj(poz baza[100],int i, int &licznik);
void zapisz(poz baza[100],int i,int &licznik);
void wczytaj(poz baza[100],int i,int &licznik);
void szukaj(poz baza[100],int i,int&licznik,char t);
void sortuj_imie(poz *tab[100], int n);



int main()
{   int licznik=0;

    int i;
    char z;
    poz baza[100];
    wczytaj(baza,i,licznik);
    do{
        system("cls");
        cout << "Wypozyczalnia ksiazek: " << endl;
        cout << "1-Dodaj pozycje " << endl;
        cout << "2-Wyswietl pozycje" << endl;
        cout << "3-Wyszukaj" << endl;
        cout << "4-Zapisz do pliku"<<endl;
        cout << "5-Usun pozycje"<<endl;//jeszcze musze napisać
        cout << "6-Wyjscie"<<endl;
        cout << "7-sortuj po imieniu autora"<<endl;

        cin>>z;

    switch(z)
    {
        case '1' :
            {
                cout<<"Dodawanie pozycji"<<endl;
                dodaj(baza,i,licznik);
                break;
            }
        case '2' :
            {
                wyswietl(baza,i,licznik);
                getch();
                break;
            }
        case '3' :
            {
                system("cls");
                char o;
                cout<<"Podaj wedlog czego chcesz szukac:"<<endl;
                cout<<"0-Imie autora"<<endl;
                cout<<"1-Nazwisko autora"<<endl;
                cout<<"2-Rok"<<endl;
                cout<<"3-Tytuł"<<endl;
                cout<<"4-Pozycji"<<endl;
                cout<<"5-wydawnictwo"<<endl;
                cout<<"q-Powrot"<<endl;
                cin>>o;
                szukaj(baza,i,licznik,o);

                break;
            }
        case '4' :
            {
                zapisz(baza,i,licznik);
                cout<<"Baza danych zostala poprawnie zapisana"<<endl;
                cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
                getch();
                break;
            }
        case '5' :
            {

                break;
            }
       case '7' :
            {
               sortuj_imie((baza[100]),1000);
               
               break;
               }
  
    }

    } while (z!='6');

    return 0;
}
//=====================dodwanie=
void dodaj(poz baza[100],int i, int &licznik)
{
    i=licznik;
    cout<<i<<endl;
    cout<<"Podaj imie autora: ";
    cin>>baza[i].iautor;
    cout<<endl;
    cout<<"Podaj nazwisko autora: ";
    cin>>baza[i].nautor;
    cout<<endl;
    cout<<"podaj tytul: ";
    cin>>baza[i].tytul;
    cout<<endl;
    cout<<"podaj rok: ";
    cin>>baza[i].rok;
    cout<<endl;
    cout<<"podaj wydawnictwo: ";
    cin>>baza[i].wydawnictwo;
    cout<<endl;
    //cout<<"podaj pozycje: ";
    baza[i].pozycja=licznik;
    cout<<endl;
    licznik++;


}

//============wyswietlanie==========
void wyswietl(poz baza[100], int i, int &licznik)
{
    system("cls");
    for (int i=0;i<licznik;i++)
    {
    cout<<endl;
    cout<<"pozycja nr: "<<i+1<<endl;
    cout<<"Imie autora: "<<baza[i].iautor<<endl;
    cout<<"Nazwisko autora: "<<baza[i].nautor<<endl;
    cout<<"Tytul: "<<baza[i].tytul<<endl;
    cout<<"Rok: "<<baza[i].rok<<endl;
    cout<<"Wydawnictwo: "<<baza[i].wydawnictwo<<endl;
    



    }
    cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
}

//===============zapisdo pliku
void zapisz(poz baza[100],int i,int &licznik)
{
    {
            ofstream mojplik;
            mojplik.open("dane.txt");
        for (int i=0;i<licznik;i++)
            {
                mojplik<<baza[i].iautor<<endl;
                mojplik<<baza[i].nautor<<endl;
                mojplik<<baza[i].tytul<<endl;
                mojplik<<baza[i].rok<<endl;
                mojplik<<baza[i].pozycja<<endl;
                mojplik<<baza[i].wydawnictwo<<endl;
            }



        mojplik.close();

        }
}
//==============wczytanie z pliku=
void wczytaj(poz baza[100],int i,int &licznik)
{
    ifstream mojplik("dane.txt");

    int g=0;

    for(int i=0; mojplik.good(); ++i,g++)
        {
            mojplik >> baza[i].iautor >> baza[i].nautor >> baza[i].tytul >> baza[i].rok >> baza[i].pozycja >> baza[i].wydawnictwo;

        }
    g-=1;
    if(g>=0)
    {
    licznik=licznik+g;
    }
}
//===============szukaj========================================================================
void szukaj(poz baza[100],int i,int&licznik,char t)
{
    system("cls");
    switch(t)
    {
             case '0' :
            {
                string sam;
                cout<<"Podaj imie autora do wyszukania:"<<endl;
                cin>>sam;
                cout<<endl;
               for(int i=0;i<licznik;i++)
            {
                if (baza[i].iautor==sam)
                {
                cout<<"imie autora: "<<baza[i].iautor<<endl;
                cout<<"nazwisko autora: "<<baza[i].nautor<<endl;
                cout<<"tytul: "<<baza[i].tytul<<endl;
                cout<<"rok: "<<baza[i].rok<<endl;
                cout<<"pozycja: "<<baza[i].pozycja<<endl;
                cout<<"wydawnictwo: "<<baza[i].wydawnictwo<<endl;
                

                }

            }

            cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
            getch();
                break;
            }
             case '1' :
            {
                string sam;
                cout<<"Podaj nazwisko autora do wyszukania:"<<endl;
                cin>>sam;
                cout<<endl;
               for(int i=0;i<licznik;i++)
            {
                if (baza[i].nautor==sam)
                {
                cout<<"imie autora: "<<baza[i].iautor<<endl;
                cout<<"nazwisko autora: "<<baza[i].nautor<<endl;
                cout<<"tytul: "<<baza[i].tytul<<endl;
                cout<<"rok: "<<baza[i].rok<<endl;
                cout<<"pozycja: "<<baza[i].pozycja<<endl;
                cout<<"wydawnictwo: "<<baza[i].wydawnictwo<<endl;
                

                }

            }

            cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
            getch();
                break;
            }
             case '2' :
            {
                int sam;
                cout<<"Podaj rok do wyszukania:"<<endl;
                cin>>sam;
                cout<<endl;
               for(int i=0;i<licznik;i++)
            {
                if (baza[i].rok==sam)
                {
                 cout<<"imie autora: "<<baza[i].iautor<<endl;
                cout<<"nazwisko autora: "<<baza[i].nautor<<endl;
                cout<<"tytul: "<<baza[i].tytul<<endl;
                cout<<"rok: "<<baza[i].rok<<endl;
                cout<<"pozycja: "<<baza[i].pozycja<<endl;
                cout<<"wydawnictwo: "<<baza[i].wydawnictwo<<endl;

                }

            }
            cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
            getch();
            break;
            }
            
            case '3':
             {
                string sam;
                cout<<"Podaj tytul do wyszukania:"<<endl;
                cin>>sam;
                cout<<endl;
               for(int i=0;i<licznik;i++)
            {
                if (baza[i].tytul==sam)
                {
                 cout<<"imie autora: "<<baza[i].iautor<<endl;
                cout<<"nazwisko autora: "<<baza[i].nautor<<endl;
                cout<<"tytul: "<<baza[i].tytul<<endl;
                cout<<"rok: "<<baza[i].rok<<endl;
                cout<<"pozycja: "<<baza[i].pozycja<<endl;
                cout<<"wydawnictwo: "<<baza[i].wydawnictwo<<endl;

                }

            }

            cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
            getch();
                break;
            }
     
             case '5':
             {
                string sam;
                cout<<"Podaj wydawnictwo do wyszukania:"<<endl;
                cin>>sam;
                cout<<endl;
               for(int i=0;i<licznik;i++)
            {
                if (baza[i].wydawnictwo==sam)
                {
                 cout<<"imie autora: "<<baza[i].iautor<<endl;
                cout<<"nazwisko autora: "<<baza[i].nautor<<endl;
                cout<<"tytul: "<<baza[i].tytul<<endl;
                cout<<"rok: "<<baza[i].rok<<endl;
                cout<<"pozycja: "<<baza[i].pozycja<<endl;
                cout<<"wydawnictwo: "<<baza[i].wydawnictwo<<endl;

                }

            }

            cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
            getch();
                break;
            }
            
              case '4' :
            {
                int sam;
                cout<<"Podaj pozycje do wyszukania:"<<endl;
                cin>>sam;
                cout<<endl;
               for(int i=0;i<licznik;i++)
            {
                if (baza[i].pozycja==sam)
                {
                 cout<<"imie autora: "<<baza[i].iautor<<endl;
                cout<<"nazwisko autora: "<<baza[i].nautor<<endl;
                cout<<"tytul: "<<baza[i].tytul<<endl;
                cout<<"rok: "<<baza[i].rok<<endl;
                cout<<"pozycja: "<<baza[i].pozycja<<endl;
                cout<<"wydawnictwo: "<<baza[i].wydawnictwo<<endl;

                }

            }
            cout<<"Nacisnij dowolny klawisz aby przejsc dalej"<<endl;
            getch();
            break;
            }
            case 'q' : break;

    }
}

//tu siedzi ten potwór!!!!
void sortuj_imie(poz *tab[100], int n) // wersja iteracyjna
{ int i, j;
 int tmp;
 for(i=1;i<n; i++)
 for(j=n-1;j>=i; j=j-1)
 if(tab[j-1]>tab[j])
 { // zamiana sąsiednich elementów
 tmp=tab[i-1];
 tab[i-1] = tab[i];
 tab[i] = tmp;
 } 
}
}

0

Masz tablicę typu poz, ale zmienną tmp typu int (w sortuj_imie).

0

już mam naprawiłem :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1