struck literki_i_cyferki{
unsigned int iLiczbaLiterek;
unsigned char cZnakLiterki;
} *tablicaZnaczkow
na poczatku mozna zalozyc że ( bedzie to zajmowac, u mnie przynajmniej, 480 bajtow , noo i miejsce na wskaznik :] )
tablicaZnacznikow = (literki_i_cyferki ) malloc( 24sizeof( literki_i_cyferki));
24 bo mozna zalozyc ze pojawi sie caly alfabet :]
34 jezeli dodali bysmy cyfry :]
i odwolywal sie poprzez kod ascii danego znaku
np. od 65 mamy A, czyli jezeli
int iSize = 24;
int iIndeksDoOstatniegoElementuTablicy = iSize; // to bedzie pokazyawc gdzie ejst ostatni element zajety
int numerLiterki;
if ( ((unsigned int ) znak > 65 ) && ( (unsigned int ) znak < 89 ){ // 24 + 65, ale nie wiem czy na bank to bedzie 89 bo nie wiem ile znakow jest w tablicy ascii
numerLiterki = ((unsigned int ) - 65 ) ; // dla literki a bedzie to 0 dla b= 1 dla , c = 2 itd.
tablicaZnacznikow[ numerLiterki].iLiczbaLiterek++;
}
else if ((unsigned int ) znak > 97 ) &&& (( unsigned int ) znak < 121 ) {// zakresy dla malych znakow;
numerLiterki = ((unsigned int) - 97 );
tablicaZnacznikow[ numerLiterki].iLiczbaLiterek++;
}
i tak samo dla liczb.
natomiast dopiero jezeli pojawi sie cos czego nie ma w tablicy to dodac .... 5 elementow do tablicy i do tego dopisac i szukac ponad zakresem tablicy :]
idac dalej
else {
if( iSize < iIndeksDoOstatniegoElementuTablicy ){
iSize = iSize + 5; // mowimy ze bedzie teraz wieksza tablica ( cala tablica zajete i nie zajete komorki )
numerLiterki = realloc( numerLiterki , iSize * sizeof( literki_i_cyferki ) ; //
}
for( int iLicznikTablicy = 24 ; iLicznikTablicy < iIndeksDoOstatniegoElementuTablicy ; iLicznikTablicy++){ // lecimy od 24 bo pomija sie wtedy znaki alfabetu ktore znamy
if ( tablicaZnacznikow[ iLiczniktablicy].cZnakLiterki == znak ){
tablicaZnacznikow[ iLiczniktablicy].iLiczbaLiterek++;
break;
}
if ( iLicznikTablicy + 1 < iIndeksDoOstatniegoElementuTablicy) // dochodzimy do wniosku ze jednak znaku nie ma ejszcze w tablicy i trzeba go dodac.
tablicaZnacznikow[ iLicznikTablicy + 1].cZnakLiterki = znak;
tablicaZnacznikow[ iLicznikTablicy +1].iLiczbaLiterek++;
}
no i tak ze wszsytkimi znakami :]
indeksy
iIndeksDoOstatniegoElementuTablicy
oraz
iLicznikTablicy i iSize
moga sie troche rozjezdzac ( o 1 wartosc , zdaza mi sie tak napisac cos czasem, ... )
wazne
pamietaj ze za kazdym razem kiedy allokujesz pamiec mowisz systemowi ze bedziesz jej uzywac :].
jezeli nadpiszesz sobie wskaznik do zaalokowanej pamieci
wskaznik = malloc ( rozmiar );
to stracisz moliwosc dostepu do pamieci ( sie to memory leak nazywa );
dopiero po zamknieciu programu pamiec moze zostac zwrocona do systemu ( chociaz pewnie mozliwe jest zeby nie zostala zwrocona :] ).
wiec pamietaj zeby stosowac free :]
czyli
free( wskaznik_do_juz_nie_potrzebnej_pamieci);
[edit 1] dodanie info o free();
[edit 2] literowka :]
[edit 3] znazniki cpp
[edit 4] ten koment
[edit 5] znaniki dla struktury
[edit 6 ] przepraszam za literowki, wszedlem na forum na chwile zeby zobaczyc czy ktos odpowiedzial na mojego posta ( no i od razu zajrzalem do tematu ), a jako ze istnieje skoczone prawdopodobienstwo ze posiadasz pewne kraglosci na klatce piesiowej postanowilem sie podlizac i strzelic odpowiedz.
[edit 7] urozmaicenie tematu o odrobinę dorbiu
[edit 8] nie wiem czemu na podgladzie kurczak dziala, a na forum sie nie wyswietla ;/