Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 04. 10. 2013 00:03

Ollii
Zelenáč
Příspěvky: 1
Pozice: studentka
Reputace:   
 

C - počítání slov

Ahoj, jsem čerstvá studentka VŠ IT. Moc mě baví počítače, ovládám výborně textové, tabulkové i databázové editory.  Problém je, že jsem nikdy neprogramovala. Tedy pokud nepočítám "Hello world" na střední. Na VŠ máme udělat projekt v jazyce C a já vůbec nevím jak bych měla začít. :(

1.Zadání: Vytvořte program, který ve vstupním textu spočítá slova obsahující uživatelem specifikovaný znak a jejich počet vypíše. Uživatel specifikuje daný znak argumentem příkazové řádky. Uživatel navíc může specifikovat pozici znaku v počítaném slově dalším argumentem příkazové řádky.   


Mohl by mi zde, někdo ze šikovných pánů napsat alespoň základní kostru kódu? Byla bych Vám vděčná. Vůbec si s tím nevím rady :(

Offline

 

#2 04. 10. 2013 12:19

Formol
Místo: Praha
Příspěvky: 782
Pozice: krotitel mikroskopů (UHIEM 1. LF UK)
Reputace:   42 
 

Re: C - počítání slov

↑ Ollii:
Ahoj,
nebylo by lepší, kdybyses s tím zkusila poprat sama? Na tomhle si totiž můžeš hezky zkusit postup dekompozice problému na dílčí a již mnohem jednodušší úlohy. Předpokládám, že máš text v textovém souboru.

Dílčí úlohy by mohly být:
1. Načtení jednokho slova ze vstupního souboru
2. Test, zda na zadané pozici obsahuje zadaný znak

To je hodně obecné, ale už vidíš, že 2 je triviální;-)

Takže načtení slova ze souboru. Postupů je několik, nejčasteji se používají dva:
1. Textový soubor čteš znak po znaku a znaky přidáváš na konec pracovní proměnné. Jakmile narazíš na mezeru, interpunkční znak nebo konec řádku, máš konec slova.
2. Text čteš po řádcích, každý řádek zpracováváš podobně jako v bodě 1.

Přístup 2 je z technických důvodů efektivnější, takže bys ho měla použít. Trochu rozepsaný postup by mohl vypadat např. takto:

Code:

1  Pokud jsi u konce vstupního souboru, skonči, jinak načti ze vstupního souboru řetězec radek. 
2  Vynuluj pomocnou řetězcovou proměnnou slovo. Vynuluj pomocnou proměnnou index.
3  Z pozice index souboru radek nacti znak ch.
4  Pokud je ch tisknutelný znak, přijej jej na konec proměnné slovo, inkrementuj index a jdi na řádek 3.
5  V proměnné slovo je slovo. Můžeš jej např. uložit do seznamu slov.  
6  Pokud je ch znak konec řádku, jdi na řádek 1.
7  Vynuluj pomocnou slovo a jdi na řádek 3.

Jinak pokud se trochu zamyslíš (doporučuji), zjistíš, že to jde napsat i mnohem lépe, zejména pokud je cílem jen spočítat některá slova. Tohle je ale podle mého průhlednější - takže doporučuji zkusit si tohle přepsat do C a pak zkusit vymyslet, jak to všechno optimalizovat (např. vůbec nepotřebuješ proměnnou slovo).


Доктор сказал «в морг» — значит в морг!

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson