pętla wpisująca na liste dwukierunkową
Ostatnio zmodyfikowano 2016-12-18 18:04
mikewazowski Temat założony przez niniejszego użytkownika |
pętla wpisująca na liste dwukierunkową » 2016-12-18 16:11:58 potrzebuje pomocy w zamianie fragmentu BAZA DLA PĘTLI na pętle ktora umozliwi wpisanie nieskonczonej liczby osob ponieważ utworzona przeze mnie pętla (niżej) zapisuje tylko ostatnio wpisaną osobę na liste // **** KOD #include <iostream> #include <stdio.h> #include <cstdlib> using namespace std;
string i; int p, x; string szukam;
struct node { int data; string imie; string nazwisko; int pesel; node * next; node * prev; };
node * head; node * tail; node * n;
void printforvard( node * head ); void printback( node * tail ); void dodaj_osobe( node * n ); void znajdz_po_nazwisku( string szukam, node * head );
int main() { int c = 6; while( c != 5 ) { cout << "MENU" << endl; cout << "1-dodaj osobe" << endl; cout << "2-wyswietl rosnaco" << endl; cout << "3-wyswietl malejaco" << endl; cout << "4-zamknij program" << endl; cout << "5-wyszukaj" << endl; cin >> c; switch( c ) { case 1: dodaj_osobe( n ); break; case 2: printforvard( head ); break; case 3: printback( tail ); break; case 4: system( "cls" ); exit( 4 ); break; case 5: znajdz_po_nazwisku( szukam, head ); break; } } return 0; }
void printforvard( node * head ) { node * temp = head; cout << endl << "DANE ROSNĄCO" << endl; while( temp != NULL ) { cout << temp->data << ". "; cout << "NAZWISKO: " << temp->nazwisko << " "; cout << "IMIE: " << temp->imie << " "; cout << "PESEL: " << temp->pesel << " "; cout << endl; temp = temp->next; } cout << endl; } void printback( node * tail ) { { node * temp = tail; cout << endl << "DANE MALEJĄCO" << endl; while( temp != NULL ) { cout << temp->data << ". "; cout << "NAZWISKO: " << temp->nazwisko << " "; cout << "IMIE: " << temp->imie << " "; cout << "PESEL: " << temp->pesel << " "; cout << endl; temp = temp->prev; } cout << endl; } } void dodaj_osobe( node * n ) { n = new node; n->data = 1; cout << "podaj imie: "; cin >> i; n->imie = i; cout << "podaj nazwisko: "; cin >> i; n->nazwisko = i; cout << "podaj pesel: "; cin >> p; n->pesel = p; n->prev = NULL; head = n; tail = n; n = new node; n->data = 2; cout << "podaj imie: "; cin >> i; n->imie = i; cout << "podaj nazwisko: "; cin >> i; n->nazwisko = i; cout << "podaj pesel: "; cin >> p; n->pesel = p; n->prev = tail; tail->next = n; tail = n; n = new node; n->data = 3; cout << "podaj imie: "; cin >> i; n->imie = i; cout << "podaj nazwisko: "; cin >> i; n->nazwisko = i; cout << "podaj pesel: "; cin >> p; n->pesel = p; n->prev = tail; tail->next = n; tail = n; n = new node; n->data = 4; cout << "podaj imie: "; cin >> i; n->imie = i; cout << "podaj nazwisko: "; cin >> i; n->nazwisko = i; cout << "podaj pesel: "; cin >> p; n->pesel = p; n->prev = tail; tail->next = n; tail = n; tail->next = NULL; }
// **** PĘTLA for( x = 1; x < 10000; x++ ) { if( x = 1 ) { n = new node; n->data = x; cout << "podaj imie: "; cin >> i; n->imie = i; cout << "podaj nazwisko: "; cin >> i; n->nazwisko = i; cout << "podaj pesel: "; cin >> p; n->pesel = p; n->prev = NULL; head = n; tail = n; break; } else if( x != 1 ) { n = new node; n->data = ++x; cout << "podaj imie: "; cin >> i; n->imie = i; cout << "podaj nazwisko: "; cin >> i; n->nazwisko = i; cout << "podaj pesel: "; cin >> p; n->pesel = p; n->prev = tail; tail->next = n; tail = n; tail->next = NULL; break; } }
|
|
pekfos |
» 2016-12-18 16:52:53 Po co masz 6 razy napisane to samo? Zły operator. |
|
mikewazowski Temat założony przez niniejszego użytkownika |
» 2016-12-18 17:02:49 co proponujesz wstawić zamiast if(x=1)? |
|
karambaHZP |
» 2016-12-18 17:08:48 |
|
mikewazowski Temat założony przez niniejszego użytkownika |
» 2016-12-18 17:14:21 niestety nadal zapisuje tylko ostatnio wpisaną osobę |
|
mateczek |
» 2016-12-18 17:39:02 wywal te "break;" bo ci wyłazi z pętli a kod masz do całkowitego przebudowania. funkcje na zmiennych globalnych, licznik listy również globalny. Strasznie się czyta. |
|
mikewazowski Temat założony przez niniejszego użytkownika |
» 2016-12-18 17:59:06 Tylko że jeśli wywale break; to bedzie mi wołało dane w nieskończonosc. Globalne zmienione na lokalne
|
|
pekfos |
» 2016-12-18 18:04:00 Najlepiej jak zrobisz w tym kodzie porządek. Napisz funkcję dodającą jeden element do listy i wywołaj ją w pętli. for( int i = 0; i < N; ++i ) { std::cin >> a >> b >> c >>...; dodaj_do_listy( lista, a, b, c,...); } |
|
« 1 » |