Struktury danych - listy
Ostatnio zmodyfikowano 2016-12-21 00:10
gruda2 Temat założony przez niniejszego użytkownika |
Struktury danych - listy » 2016-12-19 19:51:40 Witam , generalnie program ma za zadanie tworzenie baz sklepów i wykonywać na nich różne operacje(w sensie na rekordach bazy). ogólnie program działa..... sprawdza poprawność branzy(taki jest jeden z jego wymogów), tyle że nie działa mi później dodanie do bazy stałych branż i możonść poprawienia wpisu. W pierwszym przypadku program przechodzi "przez sekwencje normalnie, tyle że no właśnie nie dodaje tego elementu do bazy a w drugim przypadku to się jakby zapętla po wpisaniu poprawnej branzy znów wyskakuje mi okienko do wyboru "1. dodaj do bazy.... 2. Popraw" typedef struct BRANZA_list Branza_list; struct BRANZA_list { char * branza; Branza_list * next; };
void dodaj_branze_const( Branza_list ** head2, char * el_staly ) { Branza_list * element; element =( Branza_list * ) malloc( sizeof( Branza_list ) ); element->next = NULL; element->branza = el_staly; Branza_list * tmp; tmp = element; if( * head2 != NULL ) tmp->next = * head2; * head2 = tmp; }
int sprawdz_branze( Branza_list * head2, char * branza ) { Branza_list * tmp; tmp = head2; while( tmp != NULL && strcmp(( tmp->branza ), branza ) != 0 ) tmp = tmp->next; if( tmp == NULL ) return 1; else return 0; }
Sklep * stworz_element( Branza_list * head2 ) { int x; Sklep * element; Branza_list * tmp; tmp = head2; char bufor1[ 41 ]; char * miejscowosc, * branza; long int numer; int liczba_p, godzina_o, godzina_z; system( "cls" ); do { printf( "Podaj miejscowosc: " ); gets( bufor1 ); x = strlen( bufor1 ); if( x == 0 ) puts( "Brak danych, podaj je jeszcze raz." ); } while( x == 0 ); miejscowosc =( char * ) malloc( sizeof( char ) *( x + 1 ) ); strcpy( miejscowosc, bufor1 ); char bufor2[ 41 ]; printf( "Podaj branze: " ); x = 1; while( x == 1 ) { gets( bufor2 ); branza =( char * ) malloc( sizeof( char ) *( strlen( bufor2 ) + 1 ) ); strcpy( branza, bufor2 ); puts( "1" ); while( tmp != NULL && strcmp( tmp->branza, branza ) != 0 ) { puts( "1" ); tmp = tmp->next; } if( tmp == NULL ) x = 1; else x = 0; if( x == 1 ) { system( "cls" ); int y; puts( "Nie ma takiej branzy w bazie" ); puts( "1. Dodaj do bazy." ); puts( "2. Popraw" ); y = getchar(); getchar(); if( y == '1' ) { dodaj_branze_const( & head2, branza ); x = 0; break; } else { system( "cls" ); free( branza ); printf( "Podaj branze ponownie: " ); } } } printf( "Podaj numer sklepu: " ); while( scanf( "%ld", & numer ) == 0 ) { puts( "Blad danych, podaj numer jeszcze raz" ); int c; while(( c = getchar() ) != '\n' && c != EOF ); } printf( "Podaj liczbe pracownikow: " ); while( scanf( "%d", & liczba_p ) == 0 ) { puts( "Blad danych, podaj numer jeszcze raz" ); int c; while(( c = getchar() ) != '\n' && c != EOF ); } printf( "Podaj godzine otwarcia: " ); while( scanf( "%d", & godzina_o ) == 0 ) { puts( "Blad odczytu, podaj numer jeszcze raz" ); int c; while(( c = getchar() ) != '\n' && c != EOF ); } printf( "Podaj godzine zamkniecia: " ); while( scanf( "%d", & godzina_z ) == 0 ) { puts( "Blad odczytu, podaj numer jeszcze raz" ); int c; while(( c = getchar() ) != '\n' && c != EOF ); } element =( Sklep * ) malloc( sizeof( Sklep ) ); element->next = NULL; element->dane.numer = numer; element->dane.miejscowosc = miejscowosc; element->dane.branza = branza; element->dane.liczba_p = liczba_p; element->dane.godzina_o = godzina_o; element->dane.godzina_z = godzina_z; return element; }
void menu( Sklep * head, Branza_list * head2 ) { char i; do { system( "cls" ); printf( "1. Dodaj sklep do bazy.\n" ); printf( "2. Wyszykaj sklep o podanym numerze.\n" ); printf( "3. Wyszukaj sklepy o podanej liczbie pracownikow.\n" ); printf( "4. Wyszukaj sklepy o podanych godzinach otwarcia.\n" ); printf( "5. Wyszukaj sklepy znajdujacy sie w podanej miejscowosci.\n" ); printf( "6. Wyswietl liste branzowa\n" ); printf( "7. Usun wybrany sklep z bazy\n" ); printf( "8. Dodaj branze.\n" ); printf( "0. Wyjscie\n\n" ); printf( "Twoj wybor: " ); i = getchar(); getchar(); if( i == '1' ) { dodaj_sklep( & head, head2 ); getchar(); } else if( i == '2' ) wyswietl_element_numer( head ); else if( i == '3' ) wyswietl_element_liczba_p( head ); else if( i == '4' ) wyswietl_element_godziny( head ); else if( i == '5' ) wyswietl_element_miejscowosc( head ); else if( i == '6' ) wyswietlanie_listy( head ); else if( i == '7' ) { usuwan_wybrany_element( & head ); getchar(); } else if( i == '8' ); } while( i != '0' ); }
int main() { Sklep * head = NULL; Branza_list * head2 = NULL; char el_staly[] = { "Piekarnia" }; dodaj_branze_const( & head2, el_staly ); char a[] = { "Apteka" }; dodaj_branze_const( & head2, a ); Branza_list * tmp; tmp = head2; menu( head, head2 ); return 0; }
|
|
pekfos |
» 2016-12-21 00:10:29 puts( "1" ); while( tmp != NULL && strcmp( tmp->branza, branza ) != 0 ) { puts( "1" ); tmp = tmp->next; } |
Nie ustawiasz wartości początkowej tmp przed sprawdzeniem listy. |
|
« 1 » |