lista struktur wyszukiwanie i wyswietlanie danych
Ostatnio zmodyfikowano 2017-01-11 23:04
mikewazowski Temat założony przez niniejszego użytkownika |
lista struktur wyszukiwanie i wyswietlanie danych » 2017-01-11 22:58:02 mój problem polega na tym że jeśli na liście jest kilka osób o tym samym nazwisku to wyświetla tylko pierwszą z nich, a chciałabym by wyświetlało wszystkie #include <iostream> #include <string> #include <cstdlib> #include <cstdio> using namespace std; struct Dane { string imie; string nazwisko; string dataur; string ulica; string miasto; string inne; int id; }; struct Student { Dane dane; Student * next; Student * prev; static int num_of_students; }; int Student::num_of_students = 0;
Student * stworzelement() { Student * element; string imie; string nazwisko; string dataur; string ulica; string miasto; string inne; int id = ++Student::num_of_students; cout << "ID: " << id << endl; cout << "podaj imie: "; cin >> imie; cout << "podaj nazwisko: "; cin >> nazwisko; cout << "podaj date urodzenia: "; cin.sync(); getline( cin, dataur ); cout << "podaj ulice i numer domu: "; cin.sync(); getline( cin, ulica ); cout << "podaj miasto: "; cin.sync(); getline( cin, miasto ); cout << "podaj inne dane: "; cin.sync(); getline( cin, inne ); element = new Student(); element->next = NULL; element->prev = NULL; element->dane.id = id; element->dane.imie = imie; element->dane.nazwisko = nazwisko; element->dane.dataur = dataur; element->dane.ulica = ulica; element->dane.miasto = miasto; element->dane.inne = inne; return element; } int dodajkoniec( Student ** head ) { Student * pom; if( * head == NULL ) { Student * tmp = stworzelement(); * head = tmp; cout << "***dodano do bazy***" << endl; } else { Student * tmp = stworzelement(); pom = * head; while( pom->next != NULL ) { pom = pom->next; } tmp->prev = pom; pom->next = tmp; cout << "***dodano do bazy***" << endl; } }
Student * wyszukaj_element( Student * head, string nazwisko ) { Student * pom; pom = head; while( pom != NULL &&( pom->dane.nazwisko ).compare( nazwisko ) != 0 ) pom = pom->next; return pom; } void wyszukaj( Student ** head ) { A: int co; Student * tmp; Student * pom; string nazwisko; cout << "podaj nazwisko: "; cin >> nazwisko; tmp = wyszukaj_element( * head, nazwisko ); if( tmp == NULL ) { cout << "***nie ma takiej osoby na liscie***" << endl; cout << "1-wroc do menu" << endl << "2- kontynuuj szukanie" << endl; cin >> co; if( co == 2 ) { goto A; } } else { { pocza: cout << endl << "Imie: " << tmp->dane.imie << endl; cout << "Nazwisko: " << tmp->dane.nazwisko << endl; cout << "ID: " << tmp->dane.id << endl; cout << "Data urodzenia: " << tmp->dane.dataur << endl; cout << "Ulica i numer domu: " << tmp->dane.ulica << endl; cout << "Miasto: " << tmp->dane.miasto << endl; cout << "Inne: " << tmp->dane.inne << endl; tmp = wyszukaj_element( * head, nazwisko ); if( tmp != NULL ) goto pocza; } } int main() { }
|
|
michal11 |
» 2017-01-11 23:04:05 Po znalezieniu elementy wyszukuj od następnego, coś mniej więcej tak Elem * tmp = head;
while( tmp ) { wmp = wyszukaj( tmp.next ); }
|
|
« 1 » |