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

Zamiana liter z polskiego alfabetu na liczby

Ostatnio zmodyfikowano 2013-08-25 13:25
Autor Wiadomość
matka5432
Temat założony przez niniejszego użytkownika
Zamiana liter z polskiego alfabetu na liczby
» 2013-08-10 21:11:26
Witam,
Pisze taki programik, i potrzebuje zamienic litery na liczby (a - 0, ą - 1, c - 2 itd).
Robie to w ten sposob, ze kopiuje kazda literke po kolei z danego slowa, i porownuje z tym:
 
C/C++
string litera[ 32 ];
litera[ 0 ] = "a";
litera[ 1 ] = "ą";
litera[ 2 ] = "b";
...
litera[ 30 ] = "ź";
litera[ 31 ] = "ż";

po czym tablica slowa[ numer slowa ][ numer litery ] wypelnia sie liczbami. Wszystko by gralo, gdyby nie to, ze nie moge skopiowac polskich znakow diakrytycznych funkcj zmienna.insert(). Probowalem tez uzyc funkcji zmienna.erase(), aby usunac znaki przed i po znaku, tak aby nie naruszyc polskiego znaku diakratycznego (do poki nie narusze polskiego znaku zadną funkcją, jest on normalnie wyswietlany, moge go nawet pobierac z pliku. Moze dlatego, ze uzywam linuxa). Niestety tu tez napotkalem pewien problem, polski znak diakratyczny dla programu jest uwazany za 2 znaki, wiec musialbym przeskoczyc o 1 pozycje dalej ( zmienna.erase( pozycja1 + 1, liczba_znakow_do usuniecia). Niby wydaje sie to proste, ale wykrycie tego przed przystapieniem do zamiany liter mocno zwolni program, poniewaz musi on zamienic 2.5 mln slow (czyli 2.5 mln razy musialby wyszukac polskich znakow diakratycznych w kazdym danym slowie), jak narazie zajmuje mu to ponad minute, a to i tak dlugo.
P-89932
abdi
» 2013-08-10 21:25:18
Frazy, które należy wpisać w wyszukiwarkę google:

może coś takiego?

C/C++
wstring str1 = L"ąbc";
stringstream sstr1;

if( str1[ 0 ] == L'ą' )
{
    sstr1 << "1";
}
cout << sstr1.str();
P-89937
Bajt
» 2013-08-10 22:03:03
Hmm...Nie wiem, czy coś takiego zadziała.
http://cpp0x.pl/forum/temat/​?id=282
P-89944
domin568
» 2013-08-10 23:56:33
Pisałem taki podobny program , lecz pamietam ze był zupelnie inaczej napisany , jak go jutro znajdę to wyśle fragment :)
P-89951
DejaVu
» 2013-08-25 13:25:32
Chcesz powiedzieć, że masz bazę, która ma 20MB słów? Problemem raczej jest właściwe zdefiniowanie rozwiązywanego zagadnienia, a nie sam problem wyszukiwania litery w każdym słowie. Jeżeli musisz przeszukiwać wszystkie słowa, tj. 20MB danych to i tak kompilując w trybie Release uzyskasz czas rzędu 4/5sekund przeszukując tekst liniowo.
P-90867
« 1 »
  Strona 1 z 1