Plachu Temat założony przez niniejszego użytkownika |
[C] - Odczytywanie z pliku do struktury » 2014-01-30 16:34:36 Witam, muszę napisać program realizujący kase fiskalną, kompilator wyrzuca mi takie o to błędy: error LNK2019: unresolved external symbol _wyswietlzakupy referenced in function _trybkasy error LNK2019: unresolved external symbol _wyswietlprodukt referenced in function _trybkasy error LNK1120: 2 unresolved externals Jako,że dopiero uczę się programować, próbowałem poszukać w internecie jakiś wskazówek ale niestety nie mogę dojść co mi nie działa, jeżeli znalazłaby się osoba, która wskaże mi błąd i objaśni jak go w przyszłości uniknąć byłbym bardzo wdzięczny, z góry dziękuje i pozdrawiam!:) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h>
struct produkt * wczytaj(); void zapisz( struct zakupione * kupno ); struct zakupione * trybkasy( struct produkt * zakupy ); void wyswietlprodukt( struct produkt * zakupy ); void wyswietlzakupy( struct zakupione * kupno ); void oczysc( struct zakupione * kupno ); struct produkt * przydzielpamiecpoduktu( struct produkt * kupno, int val ); struct zakupione * przydzielpamieczakupiona( struct zakupione * kupno, int val ); void oczysc1( struct produkt * produkty );
int main() { struct produkt * nowy = NULL; struct zakupione * nowe = NULL; setlocale( LC_ALL, "polish" ); printf( "Witaj!" ); nowy = wczytaj(); nowe = trybkasy( nowy ); zapisz( nowe ); oczysc( nowe ); oczysc1( nowy ); return 0; } struct produkt { char * nazwaproduktu; unsigned short * kodproduktu; float * cenaproduktu; char * oznaczenie; int ilosc; }; struct zakupione { char * nazwaproduktu; unsigned short * kodproduktu; float * cenaproduktu; float cena; float podatek; float reszta; int ilosc; }; struct zakupione * trybkasy( struct produkt * zakupy ) { struct zakupione * tmp = NULL; unsigned short kod; int a, i = 0, j = 0, spr, spr3, sztuka; float waga, cena, spr1, kwota; printf( "Oto lista dostępnych artykułów" ); wyswietlprodukt( zakupy ); for(;; ) { printf( "Podaj kod produktu:\n" ); a = scanf( "%hu", & kod ); while( !a ) { printf( "Wpisałeś błędny kod! Podaj jeszcze raz!:\n" ); a = scanf( "%hu", & kod ); } for( i = 0; i <= zakupy->ilosc; i++ ) { if( i == zakupy->ilosc ) { printf( "Podałeś błędny kod! Wprowadź jeszcze raz:\n" ); a = scanf( "%hu", & kod ); while( !a ) { printf( "Wpisałeś błędny kod! Podaj jeszcze raz!:\n" ); a = scanf( "%hu", & kod ); } i = 0; } if( zakupy->kodproduktu[ i ] == kod ) { printf( "Podałeś poprawny kod!" ); break; } } tmp = przydzielpamieczakupiona( tmp, j ); if( tmp == NULL ) { printf( "Błąd przydzielania pamięci!\n" ); return 0; } for( i = 0; i < zakupy->ilosc; i++ ) { if( zakupy->kodproduktu[ i ] == kod ) { printf( "Wybrałeś:%s\nCenaproduktu to:%f\n", zakupy->nazwaproduktu[ i ], zakupy->cenaproduktu[ i ] ); if( zakupy->oznaczenie[ i ] == 'S' ) { printf( "Podaj ilość sztuk:\n" ); spr = scanf( "%d", & sztuka ); while( spr == 0 || sztuka < 0 ) { printf( "Wprowadziłeś błędne dane!Podaj jeszcze raz:\n" ); spr = scanf( "%d", & sztuka ); } cena = sztuka *( zakupy->cenaproduktu[ i ] ); tmp->cena = cena +( tmp->cena ); tmp->nazwaproduktu[ j ] = zakupy->nazwaproduktu[ i ]; tmp->cenaproduktu[ j ] = zakupy->cenaproduktu[ i ]; tmp->kodproduktu[ j ] = zakupy->kodproduktu[ i ]; j++; break; } if( zakupy->oznaczenie[ i ] == 'W' ) { printf( "Podaj wagę:\n" ); spr1 = scanf( "%f", & waga ); while( spr1 == 0 || waga < 0 ) { printf( "Wprowadziłeś błędne dane!Podaj jeszcze raz:\n" ); spr = scanf( "%f", & waga ); } cena = waga *( zakupy->cenaproduktu[ i ] ); tmp->cena = cena +( tmp->cena ); tmp->nazwaproduktu[ j ] = zakupy->nazwaproduktu[ i ]; tmp->cenaproduktu[ j ] = zakupy->cenaproduktu[ i ]; tmp->kodproduktu[ j ] = zakupy->kodproduktu[ i ]; j++; break; } } } printf( "Aby wybrać kolejny produkt wciśnij dowolną cyfrę, aby przerwać kupowanie wciśnij dowolną literę:\n" ); spr = scanf( "%d", & spr3 ); if( !spr ) break; } printf( "Podaj kwotę otrzymaną od klienta w celu wydania reszty:\n" ); spr = scanf( "%f", & kwota ); while( spr == 0 || kwota < 0 || kwota -( tmp->cena ) < 0 ) { printf( "Kwota została błędnie wprowadzona!Wprowadź jeszcze raz!" ); spr = scanf( "%f", & kwota ); } tmp->reszta = kwota -( tmp->cena ); tmp->podatek = 0.23 *( tmp->cena ); tmp->ilosc = j; wyswietlzakupy( tmp ); zapisz( tmp ); return tmp; } struct zakupione * przydzielpamieczakupiona( struct zakupione * kupno, int val ) { struct zakupione * ptr; ptr->nazwaproduktu =( char * ) realloc(( kupno->nazwaproduktu ),( val + 1 ) * sizeof( char ) ); if( ptr->nazwaproduktu == NULL ) { printf( "Błąd przydzielania pamięci!" ); return 0; } ptr->kodproduktu =( unsigned short * ) realloc(( kupno->kodproduktu ),( val + 1 ) * sizeof( unsigned short ) ); if( ptr->cenaproduktu == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( ptr->nazwaproduktu ); return 0; } ptr->cenaproduktu =( float * ) realloc(( kupno->cenaproduktu ),( val + 1 ) * sizeof( float ) ); if( ptr->cenaproduktu == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( ptr->cenaproduktu ); free( ptr->nazwaproduktu ); return 0; } return( ptr ); } struct produkt * przydzielpamiecproduktu( struct produkt * kupno, int val ) { struct produkt * prt = NULL; prt->nazwaproduktu =( char * ) realloc(( kupno->nazwaproduktu ),( val + 1 ) * sizeof( char ) ); if( prt->nazwaproduktu == NULL ) { printf( "Błąd przydzielania pamięci!" ); return 0; } prt->kodproduktu =( unsigned short * ) realloc(( kupno->kodproduktu ),( val + 1 ) * sizeof( unsigned short ) ); if( prt->kodproduktu == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( prt->nazwaproduktu ); return 0; } prt->cenaproduktu =( float * ) realloc(( kupno->cenaproduktu ),( val + 1 ) * sizeof( float ) ); if( prt->cenaproduktu == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( prt->nazwaproduktu ); free( prt->kodproduktu ); return 0; } prt->oznaczenie =( char * ) realloc(( kupno->oznaczenie ),( val + 1 ) * sizeof( char ) ); if( prt->oznaczenie == NULL ) { printf( "Błąd przedzielania pamięci!" ); free( prt->cenaproduktu ); free( prt->kodproduktu ); free( prt->nazwaproduktu ); return 0; } return( prt ); } struct produkt * wczytaj() { struct produkt * tmp = NULL; int mem_size = 0; FILE * plik; int i = 0; plik = fopen( "produkty.csv", "rt" ); if( plik == NULL ) { printf( "Błąd otwarcia pliku!\n" ); return 0; } tmp = przydzielpamiecproduktu( tmp, mem_size ); if( tmp == NULL ) { printf( "Pamięć błędnie przydzielona!" ); fclose( plik ); oczysc1( tmp ); return 0; } mem_size++; while(( fscanf( plik, "%s;%hu%;%f;%c", tmp->nazwaproduktu[ i ], tmp->kodproduktu[ i ], tmp->cenaproduktu[ i ], tmp->oznaczenie[ i ] ) ) == 4 ) { if( tmp->oznaczenie[ i ] != 'S' || tmp->oznaczenie[ i ] != 'W' ) { printf( "Błędne oznaczenie ilości/wagi!\n" ); return 0; } tmp = przydzielpamiecproduktu( tmp, mem_size ); if( tmp == NULL ) { printf( "Pamięć błędnie przydzielona!\n" ); fclose( plik ); oczysc1( tmp ); return 0; } mem_size++; i++; } tmp->ilosc =( i ); fclose( plik ); printf( "Produkty zostały pomyślnie wczytane!\n" ); return( tmp ); } void zapisz( struct zakupione * kupno ) { FILE * plik; int i = 0; plik = fopen( "zakupione.csv", "wt" ); if( plik == NULL ) { printf( "Błąd otwarcia pliku!\n" ); return; } for( i = 0; i <( kupno->ilosc ); i++ ) fprintf( plik, "%s;%hu;%f\n", kupno->nazwaproduktu[ i ], kupno->kodproduktu[ i ], kupno->cenaproduktu[ i ] ); fprintf( plik, "%f\n;%f\n;%f\n", kupno->cena, kupno->reszta, kupno->podatek ); printf( "Paragon został pomyślnie zapisany!\n" ); fclose( plik ); } void wyswietlprodukt( struct produkt * zakupy ) { int i; printf( "Oto lista produktów:\n" ); for( i = 0; i <( zakupy->ilosc ); i++ ) printf( "%s %hu %f\n", zakupy->nazwaproduktu[ i ], zakupy->kodproduktu[ i ], zakupy->cenaproduktu[ i ] ); printf( "Produkty zostały wyświetlone!\n" ); } void wyswietlzakupy( struct zakupione * kupno ) { int i; printf( "Oto paragon:\n" ); for( i = 0; i <( kupno->ilosc ); i++ ) printf( "%s %hu %f\n", kupno->nazwaproduktu[ i ], kupno->kodproduktu[ i ], kupno->cenaproduktu[ i ] ); printf( "Cena:%fzł\nPodatek:%fzł\nReszta:%fzł\n", kupno->cena, kupno->podatek, kupno->reszta ); printf( "Paragon został wyświetlony\n" ); } void oczysc( struct zakupione * kupno ) { if( kupno == NULL ) return; if( kupno->nazwaproduktu != NULL ) free( kupno->nazwaproduktu ); if( kupno->cenaproduktu != NULL ) free( kupno->cenaproduktu ); if( kupno->kodproduktu != NULL ) free( kupno->kodproduktu ); free( kupno ); } void oczysc1( struct produkt * produkty ) { if( produkty == NULL ) return; if( produkty->nazwaproduktu != NULL ) free( produkty->nazwaproduktu ); if( produkty->cenaproduktu != NULL ) free( produkty->cenaproduktu ); if( produkty->kodproduktu != NULL ) free( produkty->kodproduktu ); free( produkty ); }
|
|
oputyk |
» 2014-01-30 16:38:55 Chodzi o błąd linkera. W pliku nagłówkowym musisz napisać deklaracje funkcji, a w pliku cpp ich definicje. A jeśli chodzi o zabezpieczenie przed powtórną definicją, to piszesz ją w ten sposób: #ifndef nazwa_h_ #define nazwa_h_
#endif
|
|
Plachu Temat założony przez niniejszego użytkownika |
» 2014-01-30 17:02:08 Szczerze mówiąc to nie łapie.. Przecież na samym początku mam deklaracje, a potem znajdują się definicje? Mógłbyś tak jaśniej, jak dla laika ?:)
edit// już mam ale pojawiły się kolejne błędy,zobaczymy czy dam radę :) - w nazwie funkcji była literówka |
|
oputyk |
» 2014-01-30 18:43:28 Po prostu w pliku - nazwa.h dajesz deklaracje, czyli coś takiego - int funkcja( int argument ); , a w pliku nazwa.cpp dajesz definicję, czyli cały blok z instrukcjami, które mają się znaleźć w funkcji. |
|
pekfos |
» 2014-01-30 18:59:29 Ej no, miało być dla laika ;) Mieszasz o nagłówkach, podczas gdy problem polega na tym, że nazwy funkcji się nie zgadzają. Zadeklarowana jest funkcja wyswietlzakupy(), taka jest używana, a definicji nie ma. Zdefiniowana jest funkcja wyswietlzakupione(). |
|
Plachu Temat założony przez niniejszego użytkownika |
» 2014-01-30 23:59:42 Poprawiłem bo znalazłem parę innych błędów, tylko teraz mam problem z funkcjami do przydzielania pamięci, skoro chcę do tych tablic przydzielić pamięć dynamicznie to muszę je mieć z **? Program zatrzymuje się już przy przydzielpamiecproduktu pokazując błąd przy prt - "nazwaproduktu = CXX0030: Error: expression cannot be evaluated" :)
poprawiony kod wkleiłem u góry :) |
|
stryku |
» 2014-01-31 05:38:38 Mi się wydaje, że jak wywołasz realloc dla nazwaproduktu to on to przepisze, ale zwolni pamięć od razu potem i nie bd miał jak się odwołać do niej już. Nie wiem czy dobrze myślę, jak nie to niech ktoś mądrzejszy poprawi Albo Ty próbujesz zwalniać pamięć free( prt->nazwaproduktu ); a realloc sam już ją zwalnia |
|
Plachu Temat założony przez niniejszego użytkownika |
» 2014-01-31 17:41:42 naprawiłem kolejne pare rzeczy, program już się uruchamia tylko nie chce nic wczytać z pliku, pomoże ktoś? nie wchodzi w ogóle do pętli while w funkcji wczytaj :) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h>
struct produkt * wczytaj(); void zapisz( struct zakupione * kupno ); struct zakupione * trybkasy( struct produkt * zakupy ); void wyswietlprodukt( struct produkt * zakupy ); void wyswietlzakupy( struct zakupione * kupno ); void oczysc( struct zakupione * kupno ); struct produkt * przydzielpamiecproduktu( int val ); struct zakupione * przydzielpamieczakupiona( int val ); void oczysc1( struct produkt * produkty );
int main() { struct produkt * nowy; struct zakupione * nowe; int spr, a; setlocale( LC_ALL, "polish" ); nowy = wczytaj(); printf( "Witaj!\nWybierz czynność:1.Wyświetlenie produktów\n2.Tryb kasy\n3.Jeśli chcesz wyjść wciśnij dowolną literę\nPodaj cyfrę:" ); while( scanf( "%d", & spr ) == 1 ) { while( spr > 3 || spr < 1 ) { printf( "Wprowadziłeś błędną cyfrę, wprowadź jeszcze raz!\n Podaj cyfrę:" ); a = scanf( "%dwhile", & spr ); } if( spr == 1 ) { printf( "Wybrałeś wyświetlenie!\n" ); wyswietlprodukt( nowy ); } if( spr == 2 ) { nowe = trybkasy( nowy ); oczysc( nowe ); } if( spr == 3 ) { if( nowe != NULL ) oczysc( nowe ); if( nowy != NULL ) oczysc1( nowy ); printf( "Żegnaj!" ); } printf( "Witaj!\nWybierz czynność:1.Wyświetlenie produktów\n2.Tryb kasy\n3.Wyjście(lub podanie litery)\nPodaj cyfrę:" ); } if( nowe != NULL ) oczysc( nowe ); if( nowy != NULL ) oczysc1( nowy ); printf( "Żegnaj!" ); return 0; } struct produkt { char * nazwaproduktu; unsigned short * kodproduktu; float * cenaproduktu; char * oznaczenie; int ilosc; }; struct zakupione { char * nazwaproduktu; unsigned short * kodproduktu; float * cenaproduktu; float cena; float podatek; float reszta; int ilosc; }; struct zakupione * trybkasy( struct produkt * zakupy ) { struct zakupione * tmp = NULL; unsigned short kod; int a, i = 0, j = 0, spr, spr3, sztuka; float waga, cena, spr1, kwota; printf( "Oto lista dostępnych artykułów" ); wyswietlprodukt( zakupy ); for(;; ) { printf( "Podaj kod produktu:\n" ); a = scanf( "%hu", & kod ); while( !a ) { printf( "Wpisałeś błędny kod! Podaj jeszcze raz!:\n" ); a = scanf( "%hu", & kod ); } for( i = 0; i <= zakupy->ilosc; i++ ) { if( i == zakupy->ilosc ) { printf( "Podałeś błędny kod! Wprowadź jeszcze raz:\n" ); a = scanf( "%hu", & kod ); while( !a ) { printf( "Wpisałeś błędny kod! Podaj jeszcze raz!:\n" ); a = scanf( "%hu", & kod ); } i = 0; } if( zakupy->kodproduktu[ i ] == kod ) { printf( "Podałeś poprawny kod!" ); break; } } tmp = przydzielpamieczakupiona( j ); if( tmp == NULL ) { printf( "Błąd przydzielania pamięci!\n" ); return 0; } for( i = 0; i < zakupy->ilosc; i++ ) { if( zakupy->kodproduktu[ i ] == kod ) { printf( "Wybrałeś:%s\nCenaproduktu to:%f\n", zakupy->nazwaproduktu[ i ], zakupy->cenaproduktu[ i ] ); if( zakupy->oznaczenie[ i ] == 'S' ) { printf( "Podaj ilość sztuk:\n" ); spr = scanf( "%d", & sztuka ); while( spr == 0 || sztuka < 0 ) { printf( "Wprowadziłeś błędne dane!Podaj jeszcze raz:\n" ); spr = scanf( "%d", & sztuka ); } cena = sztuka *( zakupy->cenaproduktu[ i ] ); tmp->cena = cena +( tmp->cena ); tmp->nazwaproduktu[ j ] = zakupy->nazwaproduktu[ i ]; tmp->cenaproduktu[ j ] = zakupy->cenaproduktu[ i ]; tmp->kodproduktu[ j ] = zakupy->kodproduktu[ i ]; j++; break; } if( zakupy->oznaczenie[ i ] == 'W' ) { printf( "Podaj wagę:\n" ); spr1 = scanf( "%f", & waga ); while( spr1 == 0 || waga < 0 ) { printf( "Wprowadziłeś błędne dane!Podaj jeszcze raz:\n" ); spr = scanf( "%f", & waga ); } cena = waga *( zakupy->cenaproduktu[ i ] ); tmp->cena = cena +( tmp->cena ); tmp->nazwaproduktu[ j ] = zakupy->nazwaproduktu[ i ]; tmp->cenaproduktu[ j ] = zakupy->cenaproduktu[ i ]; tmp->kodproduktu[ j ] = zakupy->kodproduktu[ i ]; j++; break; } } } printf( "Aby wybrać kolejny produkt wciśnij dowolną cyfrę, aby przerwać kupowanie wciśnij dowolną literę:\n" ); spr = scanf( "%d", & spr3 ); if( !spr ) break; } printf( "Podaj kwotę otrzymaną od klienta w celu wydania reszty:\n" ); spr = scanf( "%f", & kwota ); while( spr == 0 || kwota < 0 || kwota -( tmp->cena ) < 0 ) { printf( "Kwota została błędnie wprowadzona!Wprowadź jeszcze raz!" ); spr = scanf( "%f", & kwota ); } tmp->reszta = kwota -( tmp->cena ); tmp->podatek = 0.23 *( tmp->cena ); tmp->ilosc = j; wyswietlzakupy( tmp ); zapisz( tmp ); return tmp; } struct zakupione * przydzielpamieczakupiona( int val ) { struct zakupione * kupno; char * prt; float * prt1; unsigned short * prt2; kupno =( struct zakupione * ) calloc( 1, sizeof( struct zakupione ) ); if( kupno == NULL ) { printf( "Błąd przydzielania pamięci!\n" ); return 0; } prt =( char * ) realloc(( kupno->nazwaproduktu ),( val + 1 ) * sizeof( char ) ); if( prt == NULL ) { printf( "Błąd przydzielania pamięci!" ); return 0; } prt1 =( float * ) realloc(( kupno->cenaproduktu ),( val + 1 ) * sizeof( float ) ); if( prt1 == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( prt ); return 0; } prt2 =( unsigned short * ) realloc(( kupno->kodproduktu ),( val + 1 ) * sizeof( unsigned short ) ); if( prt2 == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( prt ); free( prt1 ); return 0; } kupno->nazwaproduktu = prt; kupno->cenaproduktu = prt1; kupno->kodproduktu = prt2; return( kupno ); } struct produkt * przydzielpamiecproduktu( int val ) { struct produkt * kupno; char * prt1, * prt2; float * prt3; unsigned short * prt4; kupno =( struct produkt * ) calloc( 1, sizeof( struct produkt ) ); if( kupno == NULL ) { printf( "Błąd przydzielania pamięci!\n" ); return 0; } prt1 =( char * ) realloc(( kupno->nazwaproduktu ),( val + 1 ) * sizeof( char ) ); if( prt1 == NULL ) { printf( "Błąd przydzielania pamięci!" ); return 0; } prt2 =( char * ) realloc(( kupno->oznaczenie ),( val + 1 ) * sizeof( char ) ); if( prt2 == NULL ) { printf( "Błąd przedzielania pamięci!" ); free( prt1 ); return 0; } prt3 =( float * ) realloc(( kupno->cenaproduktu ),( val + 1 ) * sizeof( float ) ); if( prt3 == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( prt1 ); free( prt2 ); return 0; } prt4 =( unsigned short * ) realloc(( kupno->kodproduktu ),( val + 1 ) * sizeof( unsigned short ) ); if( prt4 == NULL ) { printf( "Błąd przydzielania pamięci!" ); free( prt1 ); free( prt2 ); free( prt3 ); return 0; } kupno->nazwaproduktu = prt1; kupno->oznaczenie = prt2; kupno->cenaproduktu = prt3; kupno->kodproduktu = prt4; return( kupno ); } struct produkt * wczytaj() { struct produkt * tmp = NULL; int mem_size = 0, i = 0; FILE * plik; plik = fopen( "produkty.csv", "rt" ); if( plik == NULL ) { printf( "Błąd otwarcia pliku!\n" ); return 0; } printf( "Przydzielam pamięć!" ); tmp = przydzielpamiecproduktu( mem_size ); printf( "Przydzieliłem!\n" ); if( tmp == NULL ) { printf( "Pamięć błędnie przydzielona!" ); fclose( plik ); oczysc1( tmp ); return 0; } mem_size++; while(( fscanf( plik, "%s;%hu%;%f;%c", & tmp->nazwaproduktu[ i ], & tmp->kodproduktu[ i ], & tmp->cenaproduktu[ i ], & tmp->oznaczenie[ i ] ) ) == 4 ) { printf( "Czy byłem w while?" ); if( tmp->oznaczenie[ i ] != 'S' || tmp->oznaczenie[ i ] != 'W' ) { printf( "Błędne oznaczenie ilości/wagi!\n" ); return 0; } tmp = przydzielpamiecproduktu( mem_size ); if( tmp == NULL ) { printf( "Pamięć błędnie przydzielona!\n" ); fclose( plik ); oczysc1( tmp ); return 0; } mem_size++; i++; } tmp->ilosc =( i ); fclose( plik ); printf( "Produkty zostały pomyślnie wczytane!\nIlość odczytanych produktów wynosi %d!", tmp->ilosc ); return( tmp ); } void zapisz( struct zakupione * kupno ) { FILE * plik; int i = 0; plik = fopen( "zakupione.csv", "wt" ); if( plik == NULL ) { printf( "Błąd otwarcia pliku!\n" ); return; } for( i = 0; i <( kupno->ilosc ); i++ ) fprintf( plik, "%s;%hu;%f\n", kupno->nazwaproduktu[ i ], kupno->kodproduktu[ i ], kupno->cenaproduktu[ i ] ); fprintf( plik, "%f\n;%f\n;%f\n", kupno->cena, kupno->reszta, kupno->podatek ); printf( "Paragon został pomyślnie zapisany!\n" ); fclose( plik ); } void wyswietlprodukt( struct produkt * zakupy ) { int i; printf( "%f", zakupy->cenaproduktu[ 2 ] ); printf( "Oto lista produktów:\n" ); for( i = 0; i <( zakupy->ilosc ); i++ ) { printf( "%f", zakupy->cenaproduktu[ i ] ); printf( "%s %hu %f\n", zakupy->nazwaproduktu[ i ], zakupy->kodproduktu[ i ], zakupy->cenaproduktu[ i ] ); } printf( "Produkty zostały wyświetlone!\n" ); } void wyswietlzakupy( struct zakupione * kupno ) { int i; printf( "Oto paragon:\n" ); for( i = 0; i <( kupno->ilosc ); i++ ) printf( "%s %hu %f\n", kupno->nazwaproduktu[ i ], kupno->kodproduktu[ i ], kupno->cenaproduktu[ i ] ); printf( "Cena:%fzł\nPodatek:%fzł\nReszta:%fzł\n", kupno->cena, kupno->podatek, kupno->reszta ); printf( "Paragon został wyświetlony\n" ); } void oczysc( struct zakupione * kupno ) { if( kupno == NULL ) return; if( kupno->nazwaproduktu != NULL ) free( kupno->nazwaproduktu ); if( kupno->cenaproduktu != NULL ) free( kupno->cenaproduktu ); if( kupno->kodproduktu != NULL ) free( kupno->kodproduktu ); free( kupno ); } void oczysc1( struct produkt * produkty ) { if( produkty == NULL ) return; if( produkty->nazwaproduktu != NULL ) free( produkty->nazwaproduktu ); if( produkty->cenaproduktu != NULL ) free( produkty->cenaproduktu ); if( produkty->kodproduktu != NULL ) free( produkty->kodproduktu ); free( produkty ); }
|
|
« 1 » |