Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Struktury danych - listy

Ostatnio zmodyfikowano 2016-12-21 00:10
Autor Wiadomość
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"

C/C++
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;
   
}
//Tworzenie nowego elementu
Sklep * stworz_element( Branza_list * head2 )
{
    int x; //x zmienna pomocnicza
    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" ); // jedynka kontrolna
        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;
}
C/C++
//Menu g³ówne
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;
}
P-155196
pekfos
» 2016-12-21 00:10:29
C/C++
puts( "1" ); // jedynka kontrolna
while( tmp != NULL && strcmp( tmp->branza, branza ) != 0 )
{
    puts( "1" );
    tmp = tmp->next;
}
Nie ustawiasz wartości początkowej tmp przed sprawdzeniem listy.
P-155225
« 1 »
  Strona 1 z 1