Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
ProblemW łańcuchu s należy określić liczbę wszystkich słów. |
Zadanie zliczenia słów (ang. words counting) sprowadza się do wyszukiwania liniowego znaków. Na początku pracy algorytmu ustawiamy znacznik słów t na false. Wartość true tego znacznika oznacza przetwarzanie znaków słowa. Licznik słów ls zerujemy. Teraz w pętli przeglądamy kolejne znaki łańcucha s. Jeśli napotkanym znakiem jest znak litery lub cyfry, to sprawdzamy stan znacznika t. Jeśli jest on ustawiony na false, to znaczy, iż napotkaliśmy w tekście początek słowa. W takim przypadku ustawiamy t na true i zwiększamy o 1 licznik ls. Jeśli znacznik t jest już ustawiony na true, to napotkaliśmy kolejną literę już zliczonego słowa – nic nie robimy. Jeśli napotkamy inny znak, to traktujemy go jako separator i znacznik t zawsze zerujemy. Po przeglądnięciu wszystkich znaków łańcucha s w zmiennej ls mamy liczbę słów.
K01: ls ← 0 ; zerujemy licznik słów K02: t ← false ; zerujemy znacznik słowa K03: Dla i = 0, 1, …, |s|-1: ; przeglądamy znaki łańcucha s wykonuj kroki K04…K09 K04: Jeśli s[i] = cyfra_lub_litera, to idź do kroku K07 K05: t ← false ; zerujemy znacznik słowa K06: Następny obieg pętli K03 K07: Jeśli t = true, ; słowo już zliczone to następny obieg pętli K03 K08: t ← true ; ustawiamy znacznik słowa K09: ls ← ls+1 ; zliczamy słowo K10: Zakończ z wynikiem ls
Uwaga: Zanim uruchomisz program, przeczytaj wstęp do tego artykułu, w którym wyjaśniamy funkcje tych programów oraz sposób korzystania z nich. |
Program odczytuje wiersz znaków, a następnie zlicza występujące w nim wyrazy i wypisuje ich ilość. |
Pascal// Zliczanie wyrazów w łańcuchu tekstowym // Data: 5.07.2008 // (C)2020 mgr Jerzy Wałaszek //--------------------------------------- program prg; var s : ansistring; i, ls : integer; t : boolean; begin readln(s); t := false; ls := 0; for i := 1 to length(s) do if s[i] in ['0'..'9', '_', '-', 'A'..'Z', 'a'..'z', 'Ą', 'ą', 'Ć', 'ć', 'Ę', 'ę', 'Ł', 'ł', 'Ń', 'ń', 'Ó', 'ó', 'Ś', 'ś', 'Ź', 'ź', 'Ż', 'ż'] then begin if not t then begin t := true; inc(ls); end end else t := false; writeln(ls); writeln; end. |
// Zliczanie wyrazów w łańcuchu tekstowym // Data: 5.07.2008 // (C)2020 mgr Jerzy Wałaszek //----------------------------- #include <iostream> #include <string> using namespace std; int main() { string s; int i, ls, n; unsigned char c; bool t; getline(cin, s); n = s.length(); t = false; ls = 0; for(i = 0; i < n; i++) { c = s[i]; if(((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) || (c == '_') || (c == '-') || (c == 164) || (c == 165) || (c == 143) || (c == 134) || (c == 168) || (c == 169) || (c == 157) || (c == 136) || (c == 227) || (c == 228) || (c == 224) || (c == 162) || (c == 151) || (c == 152) || (c == 141) || (c == 171) || (c == 189) || (c == 190)) { if(!t) { t = true; ls++; } } else t = false; } cout << ls << endl << endl; return 0; } |
Basic' Zliczanie wyrazów w łańcuchu tekstowym ' Data: 5.07.2008 ' (C)2020 mgr Jerzy Wałaszek '----------------------------- Dim As String s Dim As Uinteger i, ls, n, t, c Line Input s n = Len (s): t = 0: ls = 0 For i = 1 To n c = Asc (Mid (s, i, 1)) if(((c >= Asc("0")) And (c <= Asc("9"))) Or _ ((c >= Asc("A")) And (c <= Asc("Z"))) Or _ ((c >= Asc("a")) And (c <= Asc("z"))) Or _ (c = Asc("_")) Or (c = Asc ("-")) Or _ (c = 164) Or (c = 165) Or (c = 143) Or _ (c = 134) Or (c = 168) Or (c = 169) Or _ (c = 157) Or (c = 136) Or (c = 227) Or _ (c = 228) Or (c = 224) Or (c = 162) Or _ (c = 151) Or (c = 152) Or (c = 141) Or_ (c = 171) Or (c = 189) Or (c = 190)) Then If t = 0 Then t = 1: ls += 1 End If Else t = 0 End If Next Print ls Print End |
Python
(dodatek)# Zliczanie wyrazów w łańcuchu tekstowym # Data: 13.03.2024 # (C)2024 mgr Jerzy Wałaszek # -------------------------- s = input() t, ls = False, 0 x = "AĄBCĆDEĘFGHIJKLŁMNOÓPQRSŚTUVWXYZŻŹ" x += x.lower() x += "_-0123456789" for i in s: if x.find(i) >= 0: if not t: t = True ls += 1 else: t = False print(ls) print() |
Wynik: |
Ala ma krokodyla z plastiku i gumy, ale co to nas obchodzi. 12 |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.