Sortowanie znaków
Ostatnio zmodyfikowano 2017-11-23 18:29
pekfos |
» 2017-11-20 01:11:15 No to zrób to na bazie sortowania. Wystarczy z głową zrobić jedną pętlę, do tego nie potrzeba przygotowania teoretycznego. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2017-11-21 11:03:34 Ale chyba trzeba więcej zrozumienia bo nie mam pojęcia wgl co ta pętla ma robić. Posortuje dwa stringi i co dalej? Jak zrobić żeby robili mi kombinacje słów z liter? |
|
pekfos |
» 2017-11-21 17:35:14 Żadnych kombinacji. Masz sprawdzić, czy w stringu A są wszystkie znaki, potrzebne do skonstruowania B. Gdy oba napisy są posortowane, możesz to określić jedną pętlą przechodzącą po obu napisach naraz, ale używasz osobnych zmiennych do indeksowania ich. for( int i = 0, j = 0; j < B.size(); ) { if( i >= A.size() ) return false; } |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2017-11-21 22:53:10 Dobrze zrozumiem że zwraca true wtedy kiedy A[ i ] < B[ j ]? Bo jeżeli jest równe to wiadomo że pasuje a jeżeli mniejsze tzn że litera w A wystąpiła więcej niż raz prawda? Chociaż jeżeli mniejsza to powinna sprawdzać dalej bo może się pojawić potem tak? |
|
pekfos |
» 2017-11-21 23:08:13 Dobrze zrozumiem że zwraca true wtedy kiedy A[ i ] < B[ j ]? |
Nie. Nic w tej pętli nie będzie zwracać true. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2017-11-21 23:19:49 Miałem na myśli A[ i ] == B[ j ]. Wytlumacz mi to jakos tak na chlopski rozum prosze bo ja juz całkiem nie rozumiem. Jak nic nie bedzie pasować? -.- Wpisałem powiedzmy z klawiatury litery {eptfao}. W którejś linijce w pliku będzie zapisane słowo "poeta". Po posortowaniu rozumiem, że bedzie aeopt & aefopt. Sprawdzam pierwsza literke i się zgadza. Potem kolejna i tez jest ok. Litera "f" jest mniejsza od litery o wiec sprawdza dalej bo moze jeszcze wystapic. No i reszta pasuje czyli sa wszystkie znaki do skonstruowania wyrazu "poeta". Dlaczego więc ta pętla nie zwraca true? Wyjaśnij mi to prosze szerzej słownie nie wiem krokowo jak to działa. Jaki jest mechanizm. Bo po tym ostatnim Twoim wpisie że nic nie zwraca true to widać że dalej nie rozumiem :( |
|
pekfos |
» 2017-11-22 00:24:16 Pętla przechodzi po wszystkich wymaganych znakach, więc nie możesz w niej zwracać true. W pętli możesz najwyżej wykryć przypadek, w którym dopasowania na pewno nie ma, a nie z góry zarządzić, że jest dopasowanie, bo dwie pierwsze litery są sobie równe. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2017-11-22 10:49:03 for( int i = 0, int j = 0; j < plikowe.size(); ) { if( i >= wpisane.size() ) return false; if( wpisane[ i ] > plikowe[ j ] ) return false; if( wpisane[ i ] < plikowe[ j ] ) i++; if( wpisane[ i ] == plikowe[ j ] ) i++; j++; } kompilator nie chce przyjąć tej pętli. Chce średnik przed intem tam gdzie chyba jest przecinek.. Można robić takie pętle z dwoma zmiennymi? |
|
1 « 2 » 3 4 |