Zliczanie częstości występowania znaków
Ostatnio zmodyfikowano 2009-01-05 19:47
snake_yaro Temat założony przez niniejszego użytkownika |
Zliczanie częstości występowania znaków » 2009-01-05 18:50:59 Witam. Mam do napisania program o podanej treści: Napisz program zliczajacy czestosc wystepowania wszystkich znaków w podanym tekscie łacznie ze znakami interpunkcyjnymi i przestankowymi oraz białymi znakami (spacja, tabulacja). Wyswietl liste znaków poczawszy od najczesciej wystepujacych ze wskazaniem liczby wystapien oraz liczba wszystkich znaków. Do wykonania całosci zadania wykorzystaj metode sortowania przez zliczanie. Kod, który przedstawiam pozwala na obliczanie ilości wyrazów z danego zdania wraz z miejscem występowania (indeksem). Pytanie dotyczy możliwości przerobienia poniższego programu, aby działał zgodnie z wytycznymi treści powyżej. Dziękuję za jakąkolwiek pomoc. #include <cstdlib> #include <iostream> #include <iomanip> #include <string.h>
using namespace std;
void zliczanie( int tab[], int n, int zakres ) { int * licznik = new int[ zakres ]; for( int i = 0; i < zakres; i++ ) licznik[ i ] = 0; for( int i = 0; i < n; i++ ) licznik[ tab[ i ] ] ++; int j = 0; for( int i = 0; i < zakres; i++ ) while(( licznik[ i ] -- ) > 0 ) tab[ j++ ] = i; delete[] licznik; return; }
void wyswietlanie( int tab[], int n ) { for( int i = 0; i < n; i++ ) cout << setw( 4 ) << tab[ i ]; }
int podzial( char zdanie[], int wyrazy[] ) { int liczba = 0; if( zdanie[ 0 ] == '\0' ) { return( liczba ); } int poczatek = 0; int dlugosc = strlen( zdanie ); for( int i = 0; i < dlugosc; i++ ) if(( zdanie[ i ] != '\t' ) &&( zdanie[ i ] != ' ' ) ) { if( poczatek == 0 ) { poczatek = 1; wyrazy[ liczba++ ] = i; } } else { zdanie[ i ] = '\0'; poczatek = 0; } return( liczba ); }
int main( int argc, char * argv[] ) { char zdanie[ 100 ]; int wyrazy[ 200 ], liczba; cout << "Wprowadz zdanie: " << endl; cin.getline( zdanie, sizeof( zdanie ) ); cout << "Twoje zdanie: " << zdanie << endl; liczba = podzial( zdanie, wyrazy ); for( int i = 0; i < liczba; i++ ) cout << "wyrazy " << i + 1 << " na pozycji " << wyrazy[ i ] << " to " << &( zdanie[ wyrazy[ i ] ] ) << endl; system( "PAUSE" ); return EXIT_SUCCESS; } |
|
pekfos |
» 2009-01-05 18:54:44 daj kod w [.code src="C++"][/code] (tylko bez tej kropki przed 'code src') to wszystkim będzie łatwiej go zrozumieć |
|
snake_yaro Temat założony przez niniejszego użytkownika |
» 2009-01-05 19:01:13 pefkos - dzięki za radę, podejrzewam, że Pan Pietrzuch uprzedził nas wszystkich poprawiając mojego posta. (: |
|
lynx |
» 2009-01-05 19:47:50 |
|
« 1 » |