• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przewidywanie tekstu C++

Object Storage Arubacloud
+1 głos
207 wizyt
pytanie zadane 9 listopada 2015 w C i C++ przez Stefan Początkujący (450 p.)

Hej, chciałem zrobić coś w stylu przwewidywania tekstu, np. wpisuję frazę "pro" i mi podpowiada słowo "prosto", "programowanie". Oczywiście wszystkie podpowiedzi sam popodstawiam, a Was proszę o pomoc lub link jeżeli ktoś wcześniej się tym zajął.
By nie być gołosłownym pokażę Wam mój fragment kodu odpowiadający za "przewidywanie tekstu".
 

void __fastcall TForm1::MaskEdit1Change(TObject *Sender)
{
        char* text;
        text=MaskEdit1->Text.c_str();
        if(strcmp(text, "$close")==0)
        {
                Panel1->Caption="$close [PID]";
        }
}

Wytłumaczę może troszkę mój zamysł i działanie funkcji.
Przy każdym dodaniu/usunięciu znaku w polu tekstowym, pobiera tekst wpisany przez użykownika, miele to miele i porównuje z "przewidywanym" ciągiem znaków(w tym wypadku "$close"), gdy to co wpisał użytkownik będzie równało się przewidywanemu ciągu wyświetli się wskazówka tj. "$close [PID]".

Na czym polega Wasza pomoc? Chciałbym aby jakaś dobra duszyczka pomogła (nakiewrowała/wstawiła link do tutoriala ew.) zrobić tak, by po wpisaniu "$cl" bądź "$clo" (jakiegoś krótszego ciągu niż cała komenda) pokazywała się ta podpowiedź ("$close [PID]").

2 odpowiedzi

+1 głos
odpowiedź 9 listopada 2015 przez adrian17 Ekspert (344,860 p.)
Do wszelkiego autouzupełniania podręcznikową strukturą danych jest drzewo Trie (https://pl.wikipedia.org/wiki/Drzewo_trie, angielska Wiki ma obszerniejszy opis). Znając na przykład pierwszych kilka znaków "$clo", można dość wydajnie znaleźć wszystkie (oczywiście zdefiniowane wcześniej) słowa zaczynające się od tego ciągu, na przykład "$close [PID]" czy "$clone [Thing]".
0 głosów
odpowiedź 9 listopada 2015 przez ZakosiliMiNeta Nałogowiec (30,870 p.)

Niestety kolega był pierwszy na temat TRIE, ale może się przyda http://informatyka.wroc.pl/node/1129?page=0,0. Również można sprawdzać metodą siłową, czyli coś  w stylu:

//pseudo kod 
string słowa[ile];
string pod, // podpowiedz 
bool wypisz = false;
for ( i = 0; i < ile; i++ ){
    wypisz = false;​​
    for ( j = 0; j < pod.length(); j ++ )
       if ( slowa[i][j] !=  podpowiedz[j] ) wypisz = true; 
    if ( wypisz == false ) to wypisz slowo
}

 

Podobne pytania

0 głosów
2 odpowiedzi 1,336 wizyt
pytanie zadane 22 listopada 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)
0 głosów
2 odpowiedzi 579 wizyt
pytanie zadane 29 października 2015 w C i C++ przez patryk16 Obywatel (1,080 p.)
0 głosów
2 odpowiedzi 257 wizyt
pytanie zadane 30 stycznia 2017 w C i C++ przez czujek22 Dyskutant (7,670 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...