pekfos |
» 2015-06-08 14:18:22 Ile można zwracać uwagę.. ziomal123456789, zapoznaj się z zasadami zakładania tematów. |
|
michal11 |
» 2015-06-08 16:51:14 Już teraz jest ok, brakowało właśnie tych indeksów. Zresztą brakuje ich tez w funkcji wypisz. Do funkcji zwolnijpamiec() przesyłasz zupełnie nową tablice, czyli masz wyciek pamięci. Co to znaczy, że wyrzuca krzaki skoro nic nie wypisujesz ? Twoja funkcji do sortowania, jest zła, zastosuj jakiś algorytm np. quick sort, marge sort itp. |
|
ziomal123456789 Temat założony przez niniejszego użytkownika |
» 2015-06-08 18:40:01 A czy można w ogóle w ten sposób wywoływać funkcje jak to robię w tym kodzie czy trzeba stworzyć jakąś zmienną i potem przekazywać jako parametr? #include <stdio.h> #include <stdlib.h> #include <string.h>
int podaj_dane(); void uzupelnijplik( int liczbaslow ); char ** tworztabliceslow( int liczbaslow ); char ** odczytzpliku( int liczbaslow, char ** tablicaslow ); void zwolnijpamiec( int liczbaslow, char ** tablicaslow ); void sortowanie( int liczbaslow, char ** tablicaslow ); void wypisz( int liczbaslow, char ** tablicaslow ); void zapisdopliku( int liczbaslow, char ** tablicaslow );
int main() { int liczbaslow, i, j; liczbaslow = podaj_dane(); uzupelnijplik( liczbaslow ); odczytzpliku( liczbaslow, tworztabliceslow( liczbaslow ) ); wypisz( liczbaslow, odczytzpliku( liczbaslow, tworztabliceslow( liczbaslow ) ) ); zapisdopliku( liczbaslow, odczytzpliku( liczbaslow, tworztabliceslow( liczbaslow ) ) ); zwolnijpamiec( liczbaslow, odczytzpliku( liczbaslow, tworztabliceslow( liczbaslow ) ) ); }
void uzupelnijplik( int liczbaslow ) { int i; char slowo[ 20 ]; FILE * fp; printf( "Podaj wyrazy. Po kazdym wcisnij enter \n" ); if(( fp = fopen( "test.txt", "w" ) ) == NULL ) { printf( "Nie moge otworzyc pliku test.txt do zapisu!\n" ); exit( 1 ); } for( i = 0; i < liczbaslow; i++ ) { scanf( "%s", slowo ); fprintf( fp, "%s\n", slowo ); } fclose( fp ); };
int podaj_dane() { int liczbaslow; printf( "Podaj liczbe wyrazow \n" ); scanf( "%i", & liczbaslow ); return liczbaslow; }
char ** odczytzpliku( int liczbaslow, char ** tablicaslow ) { int i, dlugosc; FILE * fp, * fb; char slowo[ 20 ]; fp = fopen( "test.txt", "r" ); for( i = 0; i < liczbaslow; i++ ) { fscanf( fp, "%s\n", slowo ); tablicaslow[ i ] =( char * ) malloc( strlen( slowo ) + 1 ); strcpy( slowo, tablicaslow[ i ] ); } fclose( fp ); return tablicaslow; }
char ** tworztabliceslow( int liczbaslow ) { int i; char ** pustatablica =( char ** ) malloc( liczbaslow * sizeof( char * ) ); for( i = 0; i < liczbaslow; i++ ) { pustatablica[ i ] = 0; } return pustatablica; }
void zwolnijpamiec( int liczbaslow, char ** tablicaslow ) { int i; for( i = 0; i < liczbaslow; i++ ) { free( tablicaslow[ i ] ); } free( tablicaslow ); }
void sortowanie( int liczbaslow, char ** tablicaslow ) { int i; char m; for( i = 0; i < liczbaslow; i++ ) { if( strcmp( tablicaslow, tablicaslow[ i + 1 ] ) < 0 ) { m = tablicaslow; tablicaslow[ i + 1 ] = tablicaslow; tablicaslow[ i + 1 ] = m; } } }
void wypisz( int liczbaslow, char ** tablicaslow ) { int i; for( i = 0; i < liczbaslow; i++ ) { printf( "%s\n", tablicaslow[ i ] ); } }
void zapisdopliku( int liczbaslow, char ** tablicaslow ) { int i; FILE * fp; fp = fopen( "test1.txt", "w" ); for( i = 0; i < liczbaslow; i++ ) { fprintf( fp, "%s\n", tablicaslow[ i ] ); } }
|
|
ziomal123456789 Temat założony przez niniejszego użytkownika |
» 2015-06-08 19:02:37 Wszystko już działa poza sortowaniem |
|
1 « 2 » |