Analyza textu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Analyza textu – C / C++ – Fórum – Programujte.comAnalyza textu – C / C++ – Fórum – Programujte.com

 

Mikas
~ Anonymní uživatel
13 příspěvků
11. 12. 2019   #1
-
0
-

Dobry den potreboval bych poradit s du

Cílem úlohy je provést analýzu textu ve formě textového souboru obecné délky na standardním vstupu programu.

Zadání

Ze standardního vstupu přečtěte textový soubor obecné velikosti
Vypište seznam všech (unikátních) slov textu. Ze slov odstraňte všechna interpuknční znaménka (,, ., :, ;, a další)
Seznam může být primárně case-insensitive (tzn. Osel a osel jsou stejná slova, v seznamu se objeví osel) nebo case-sensitive (tzn. Osel a osel jsou dvě různá slova, v seznamu se objeví obě). Chování programu ovlivňuje parametr programu -c (viz příklady).
Určete počet všech slov. Za slovo se považuje i číselná hodnota, pokud se v textu vyskytuje.
Najděte nejčastější a nejméně časté slovo.
Vypište seznam všech slov. Pro slovo je vyhrazeno 20 znaků. (Za místem vyhrazeným pro slovo je mezera, která odděluje slovo od čísla reprezentujícího četnost.)
Styl řazení výpisu seznamu ovládejte volbou parametru programu -s. Pro -s 1 je seznam nalezených slov řazen vzestupně podle četnosti, pro -s 2 je seznam nalezených slov řazen podle abecedy. Jiné hodnoty parametru budou ignorovány, na standardní chybový výstup pak program vypíše “Warning: Chybna hodnota parametru -s!”.
Omezte parametrem programu -l délku vypisovaných slov. Hodnota parametru -l je kladné celé číslo, hodnota 0 potlačí výpis seznamu slov. Pokud není podmínka pro parametr splněna, je parametr ignorován a na standardní chybový výstup program vypíše “Warning: Chybna hodnota parametru -l!”.
Pořadí parametrů je libovolné.

Testovací soubor:

$ cat pub00.in Ahoj, jak se mas. Mam se dobre. Jak se mas ty? Ja se mam taky dobre.

vystupy:

Implicitní chování programu (bez parametrů příkazové řádky - case insensitive, slova seřazena v pořadí výskytu v datovém souboru)

$ ./a.out < pub00.in

Seznam slov:
ahoj                  1
jak                    2
se                     4
mas                  2
mam                 2
dobre                2
ty                       1
ja                       1
taky                   1
Pocet slov:         9
Nejcastejsi:        se
Nejmene caste: ahoj ty ja taky

vsechny dalsi vystupy maji byt take zarovnane

Case sensitive výpis (parametr -c)

$ ./a.out -c < pub00.in Seznam slov: Ahoj 1 jak 1 se 4 mas 2 Mam 1 dobre 2 Jak 1 ty 1 Ja 1 mam 1 taky 1 Pocet slov: 11 Nejcastejsi: se Nejmene caste: Ahoj jak Mam Jak ty Ja mam taky

Řazení podle výskytu (vzestupně, case-insensitive případ)

./a.out -s 1 < pub00.in Seznam slov: ahoj 1 ty 1 ja 1 taky 1 jak 2 mas 2 mam 2 dobre 2 se 4 Pocet slov: 9 Nejcastejsi: se Nejmene caste: ahoj ty ja taky

Řazení podle abecedy (case-sensitive případ)

./a.out -c -s 2 < pub00.in Seznam slov: Ahoj 1 Ja 1 Jak 1 Mam 1 dobre 2 jak 1 mam 1 mas 2 se 4 taky 1 ty 1 Pocet slov: 11 Nejcastejsi: se Nejmene caste: Ahoj Ja Jak Mam jak mam taky ty

Limit délky vypisovaných slov

./a.out -l 3 < pub00.in Seznam slov: jak 2 mas 2 mam 2 Pocet slov: 9 Nejcastejsi: se Nejmene caste: ahoj ty ja taky./a.out -l 0 < pub00.in Pocet slov: 9 Nejcastejsi: se Nejmene caste: ahoj ty ja taky

predem dekuji za pomoc

Nahlásit jako SPAM
IP: 147.32.218.–
gna
~ Anonymní uživatel
1864 příspěvků
11. 12. 2019   #2
-
0
-

S čím konkrétně si nevíš rady?

Nahlásit jako SPAM
IP: 213.211.51.–
Mikas
~ Anonymní uživatel
13 příspěvků
12. 12. 2019   #3
-
0
-

potreboval bych vedet ja kpretypovat char ** na int a jak vyresit podminku kdyz to ma fungovat jen kdyz je to cele kladne cislo:

Nahlásit jako SPAM
IP: 147.32.31.–
KIIV
~ Moderátor
+43
God of flame
12. 12. 2019   #4
-
0
-

#3 Mikas
pretypovat se to neda. Musis to prevest. Treba atol (ale moc nezkontrolujes, jestli to bylo uspesne nebo ne), ci sscanf.

A cele kladne cislo ... "vetsi nez nula" ... nic vic v tom neni

Nahlásit jako SPAM
IP: 46.135.104.–
Program vždy dělá to co naprogramujete, ne to co chcete...
13. 12. 2019   #5
-
0
-

#4 KIIV
pokud to má být celé kladné číslo, tak větší než nula nestačí, protože 23,7 je větší než nula, ale není celé číslo. Asi bych zkusil načítat pomocí sscanf int číslo a znak za načteným číslem. Nezkoušel jsem to, ale pokud by řetězec obsahoval jen celé číslo, očekával bych načtení jedné položky. V případě desetinného čísla nebo neplatných znaků by načetl 2 položky - číslo a znak. A pak ověřit, zda číslo je kladné = větší než nula. Druhá možnost je přezkoumat samotný řetězec zda neobsahuje "nevhodné" znaky, včetně - (mínus) na začátku.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
13. 12. 2019   #6
-
0
-

#5 hlucheucho
No ja sem nenasel v zadani nic o tom, ze by to mel delat v tom textu, tak sem predpokladal spis ze to je na zpracovani parametru.

Pokud by to bylo v textu, tak plati to tvoje

Nahlásit jako SPAM
IP: 185.163.40.–
Program vždy dělá to co naprogramujete, ne to co chcete...
13. 12. 2019   #7
-
0
-

#6 KIIV
jsem myslel, že parametry jsou pole char*. 

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
13. 12. 2019   #8
-
0
-

#7 hlucheucho
Parametry jsou pole retezcu: char * argv[];  neboli take  char ** argv;  a zminoval char **, ale nerekl presne co chce tak tezko rici

Nahlásit jako SPAM
IP: 46.135.104.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

Analýza textu — založil Petr

Statistická analýza textu — založil Evrokorps

Funkční analýza — založil Jano

Analýza grafů — založil Spectator

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý