Portál AbcLinuxu, 9. května 2025 23:55

Dotaz: Programování v C

20.10.2015 22:07 zacatecnikJirka
Programování v C
Přečteno: 1271×
Odpovědět | Admin
jak udělám v jazyce C aby mi program napsal po tom co zadám hodnotu jestli se jedná o číslo/prvočíslo/slovo/datum?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.10.2015 22:46 NN
Rozbalit Rozbalit vše Re: Programování v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Domaci ukol?
21.10.2015 00:03 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Programování v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jednoduše musíš to poznat podle zadaných znaků.....

když se to bude skládat jenom ze znaků 0 až 9 tak to bude číslo když tam budou znaky a až z tak to asi bude slovo když tam budou znaky 0 až 9 a dvě tečky tak to asi bude datum ......
23.10.2015 14:30 MadCatX
Rozbalit Rozbalit vše Re: Programování v C
0.13.5656 nebo 12..45 není datum
21. února 1950 je datum
XVI, 0x10 nebo -3.14159 je číslo

Nejdřív si dokonale ujasněte zadání. Až to uděláte, naprogramovat to nebude kdovíjak komplikované.
24.10.2015 01:08 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Programování v C
To byla jenom rada jak to řešit, samozřejmě se musí ujasnit zda XVI je číslo, zda nesmyslný datum je datum, zda datum může být vyjádřen slovy (první leden devatenáctsetšedesátosm) atd..
ghibulo avatar 23.10.2015 11:33 ghibulo | skóre: 6 | blog: ghibulo
Rozbalit Rozbalit vše Re: Programování v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
začal bych možná pokusem převést celej vstup na číslo pomocí funkce... strtol

Podle toho ukazatele endptr půjde zjistit, jestli to celé bylo číslo. Pokud ano - projel bych cyklem esli jde o prvočíslo. Pokud ne -> zkusil bych zjišťovat rozumná čísla a tečky pro datum... když by vše zkrachovalo -> string
Voty avatar 23.10.2015 13:46 Voty | skóre: 12 | blog: gemini
Rozbalit Rozbalit vše Re: Programování v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Protože mám dnes dobrou náladu...

Zadání úlohy máme, vzhledem k tomu, jak zadání vypadá, bude to asi úloha školní, ale v praxi se se vyskytují podobně blbá zadání. Teď potřebuješ zadání rozvést do specifikace. To znamená udělat analýzu, co to znamená číslo (např. celé, desetinné, řádový oddělovač je tečka nebo čárka, hexadecimální), co znamená prvočíslo (ok, to je jednoduché), co znamená datum (např. čísla oddělená tečkou, lomítkem, ISO, Juliánské) a co znamená slovo (musí být platné, v jakém jazyce), s jakou mírou jistoty je potřeba kategorie určit a tak dále.

No a pak už stačí odvodit pravidla pro jednotlivé kategorie a implementovat například konečným automatem.
Jednu rozbil a tu druhou ztratil.
25.10.2015 02:37 pakanek | skóre: 28 | Vyškov
Rozbalit Rozbalit vše Re: Programování v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tomu se říká parser. Pro neco tak jednoducheho jako je toto lze pouzit knihovnu pro regularní výrazy.
Všechno dobré je pro něco zlé.
29.10.2015 13:13 frr | skóre: 34
Rozbalit Rozbalit vše Re: Programování v C
Souhlas - nasadit na to libPCRE a je po ptákách. Sice je to pak spíš o regulárních výrazech, než o Cčku, ale v daném čase bude výsledkem bohatší parser, než kdyby to člověk dělal celé na koleně :-)
[:wq]
29.10.2015 16:47 Radovan
Rozbalit Rozbalit vše Re: Programování v C
Nejsem si jistý jestli tazatel v tuhle chvíli dokáže dostatečně efektivně použít aspoň funkci scanf(), natož knihovnu a regulární výrazy ;-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.