Zamiana liter z polskiego alfabetu na liczby
Ostatnio zmodyfikowano 2013-08-25 13:25
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: 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. |
|
abdi |
» 2013-08-10 21:25:18 może coś takiego? wstring str1 = L"ąbc"; stringstream sstr1;
if( str1[ 0 ] == L'ą' ) { sstr1 << "1"; } cout << sstr1.str();
|
|
Bajt |
» 2013-08-10 22:03:03 |
|
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 :) |
|
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. |
|
« 1 » |