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
čau, prosím o nějaké nápady jak v céčku napsat program, který zjistí, zda se text, který zadá uživatel, vyskytuje v souboru
příklad:
v souboru je text: "ahoj jak se máš"
a uživatel zadá třeba slovo: "jak"
a program vypíše, že se tam toto slovo vyskytuje nebo i když uživatel zadá "ja" tak se to tam vyskytuje nebo ikdyž zadá "*ak*" tak se to tam vyskytuje
předem díky za jakékoliv nápady, či rady
Offline
Můžeš například využít hlavičkového souboru string.h, konkrétně pak funkce char * strstr(const char *, const char *). Více info třeba zde http://www.cplusplus.com/reference/clib … ng/strstr/
Tz. načítat ze souboru po řádcích do nějakého řetězce a v tomto řetězci pak hledat uživatelem zadaný řetězec pomocí výše uvedené funkce.
Offline
tak je to nakonec jinak, náhodně se mi vygeneruje jméno souboru a náhodně se mi vygeneruje maska jména souboru, můžou tam být libovolné ascii znaky a program musí zjistit zda se maska shoduje se jménem, pokud je zadaná *, tak ta může zastupovat libovolný počet znaků (taky jinak žádný znak, jeden nebo více), hvězdička může být jak v masce tak ve jméně, prosím o nějaké algoritmy
↑ septolet: dík za odkaz, ale moc sem ho nepochopila, ale když vlastně hledam jenom název souboru, dá se to taky využít?
Offline

↑ case_fcs:Měli jste ve škole něco o formálních jazycích/automatech/gramatikách/regulárních výrazech? Pokud jo, tak stačí postavit konečný automat podle masky a tím název souboru prohnat.
Pokud můžete používat externí knihovny, zkus toto: http://www.gnu.org/s/libc/manual/html_n … sions.html
Offline
tak to sme bohužel nic takovýho zatim nebrali, přesto ale díky
ještě jenom prosim, když mam nějaký pole znaků, jak se s nim pracuje? když chci třeba písmeno h ze slova "ahoj" tak to neni pole[2] ?
ani nevim jak to moc funguje s charem, když chci přečíst text, co uživatel zadává z klávesnice a uložit si ho do pole tak nemůžu udělat -- scanf("%s", pole); ? tak aby se mi právě každý to písmenko uložilo do jedný pozice viz to s tim h, jak píšu vejš
Offline
ještě jenom prosim, když mam nějaký pole znaků, jak se s nim pracuje? když chci třeba písmeno h ze slova "ahoj" tak to neni pole[2] ?
V jazyku C se pole indexují od 0.
ani nevim jak to moc funguje s charem, když chci přečíst text, co uživatel zadává z klávesnice a uložit si ho do pole tak nemůžu udělat -- scanf("%s", pole); ? tak aby se mi právě každý to písmenko uložilo do jedný pozice viz to s tim h, jak píšu vejš
Ano, tohle skutečně jde:
char pole[20];
scanf("%19s", pole);EDIT: Jinak jestli bys se chtěla více ponořit do progarmování v C-čku, tak bych pro začátek doporučil knihy od pana Pavla Herouta, konkrétně díly ze série Učebnice jazyka C. Jsou to dva díly. První se dá koupit třeba zde: http://www.kopp.cz/www/cz/160-vyrobek-ucebnice-jazyka-c a druhý zde: http://www.kopp.cz/www/cz/161-vyrobek-u … ka-c-2-dil
Offline
tak já mam jméno souboru v proměnné char * file a používam dynamické pole a napsala sem to teda takhle:
pole = (char *) malloc (* file);
je to možný? akorát já nevytvářim celý program, jen jednu funkci, která porovnává to jméno souboru s maskou, tak nevim jestli to můžu takhle použít, já vlastně takhle vůbec nevim jak je velký file, sem z toho nějak zmatená
Offline
↑ case_fcs: ano, cecko indexuje pole od nuly, takze pole[5] odpovida 6. prvku pole
Offline
↑ case_fcs:
Můžeš použít deklaraci statického pole s inicializací:
char a[]={"Ahojky nazdar jaksemas"};
Nemusíš počítat znaky, ty hranaté závorky jsou PRÁZDNÉ a pole bude mít délku početznaků+1 (nezapomeň, že řetězec končí binární nulou a i ta potřebuje v poli svůj bajt.
Jedná se o statické pole. Dynamické viz předchozí příspěvky.
Offline