Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- struct Student{
- string imie;
- string nazwisko;
- int index;
- Student *next;
- };
- void print(Student *wskaznik);
- void dodaj(Student *wskaznik, Student *nowy);
- void usun(Student *wskaznik, int index);
- int policz(Student *wskaznik);
- void swap(Student *prev);
- int main(){
- Student *one = new Student;
- one->index = (-1);
- Student *temp = new Student;
- cout<<"MENU: \n 1. WYSWIETL LISTE STUDENTOW \n 2. DODAJ NOWEGO STUDENTA \n 3. USUN STUDENTA Z REJESTRU \n 4. POLICZ ILU JEST UCZNIOW W REJESTRZE \n 5. POSORTUJ WEDLUG NAZWISK ALFABETYCZNIE \n 6. POSORTUJ WEDLUG INDEXOW"<<endl;
- int n;
- while(true){
- cin>>n;
- if(n==1)print(one);
- else if(n==2){
- cout<<"Podaj imie:"<<endl;
- cin>>temp->imie;
- cout<<"Podaj nazwisko"<<endl;
- cin>>temp->nazwisko;
- cout<<"Podaj numer albumu:"<<endl;
- cin>>temp->index;
- dodaj(one, temp);
- }
- else if(n==3){
- int index;
- cout<<"Podaj numer indexu ucznia, ktorego chcesz usunac:"<<endl;
- cin>>index;
- usun(one, index);
- }
- else if(n==4){
- int x=policz(one);
- cout<<"Tylu jest uczniow w rejestrze:"<<x<<endl;
- }
- else if(n==5){
- swap(one);
- }
- }
- }
- void print(Student *wskaznik){
- wskaznik=wskaznik->next;
- while(wskaznik!=NULL){
- cout<<wskaznik->imie<<" "<<wskaznik->nazwisko<<" "<<wskaznik->index<<endl;
- wskaznik=wskaznik->next;
- };
- }
- void dodaj(Student *wskaznik, Student *nowy){
- while(wskaznik->next!=NULL){
- wskaznik=wskaznik->next;
- }
- Student *nowszy = new Student;
- *nowszy=*nowy;
- wskaznik->next=nowszy;
- }
- void usun(Student *wskaznik, int index){
- Student *temp = new Student;
- while(wskaznik->index!=index){
- temp=wskaznik;
- wskaznik=wskaznik->next;
- }
- temp->next=wskaznik->next;
- delete temp;
- }
- int policz(Student *wskaznik){
- int i=0;
- while(wskaznik->next!=NULL){
- wskaznik=wskaznik->next;
- i++;
- }
- return i;
- }
- void swap(Student *zero){
- Student *temp = zero->next; // przypisanie adresu jedynki do wskaznika na tempa (temp)
- zero->next = temp->next; //przypisanie adresu dwojki do NEXTA W ZERZE
- temp->next = (zero->next)->next; //przypisanie adresu trojki do NEXTA W JEDYNCE
- (zero->next)->next = temp; // przypisanie adresu jedynki do NEXTA w dwojce
- }
- Student* comp(Student *jed, Student *dwa){
- if((jed->nazwisko==dwa->nazwisko) && (jed->imie==dwa->imie)){
- if(jed->index>dwa->index) return dwa;
- else return jed;
- }
- else if(jed->nazwisko==dwa->nazwisko){
- int shorter = jed->imie.length();
- if (dwa->imie.length() < shorter) shorter = dwa->imie.length();
- for (int i = 0; i < shorter; i++){
- if ( jed->imie[i] != dwa->imie[i] ){
- if (jed->imie[i] > dwa->imie[i]) return dwa;
- else return jed;
- }
- }
- if (jed->imie.length() == shorter) return jed;
- else return dwa;
- }
- else {
- int shorter = jed->nazwisko.length();
- if (dwa->nazwisko.length() < shorter) shorter = dwa->nazwisko.length();
- for (int i = 0; i < shorter; i++){
- if ( jed->nazwisko[i] != dwa->nazwisko[i] ){
- if (jed->nazwisko[i] > dwa->nazwisko[i]) return dwa;
- else return jed;
- }
- }
- if (jed->nazwisko.length() == shorter) return jed;
- else return dwa;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement