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

Sorter słów w C

Ostatnio zmodyfikowano 2015-06-08 19:02
Autor Wiadomość
pekfos
» 2015-06-08 14:18:22
Ile można zwracać uwagę.. ziomal123456789, zapoznaj się z zasadami zakładania tematów.
P-133320
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.
P-133326
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?

C/C++
#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 );
    //char **pustatablica=tworztabliceslow(liczbaslow);
    //char **tablicaslow=odczytzpliku(liczbaslow,pustatablica);
    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 ) //funkcja uzupelniajaca plik slowami
{
    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() //funkcja pobierajaca dane od uzytkownika
{
    int liczbaslow;
    printf( "Podaj liczbe wyrazow \n" );
    scanf( "%i", & liczbaslow );
    return liczbaslow;
}

char ** odczytzpliku( int liczbaslow, char ** tablicaslow ) //funkcja odczytujaca slowa z pliku
{
    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 ) //funkcja tworzy pust¹ tablicê s³ów
{
    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 ) //funkcja zwalniajaca pamiec
{
    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 ] );
    }
}
P-133333
ziomal123456789
Temat założony przez niniejszego użytkownika
» 2015-06-08 19:02:37
Wszystko już działa poza sortowaniem
P-133336
1 « 2 »
Poprzednia strona Strona 2 z 2