Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Martin
Neregistrovaný
Avatar
Martin:6.12.2013 21:13

Vaším úkolem je vytvořit funkci (ne program, pouze funkci), která
dokáže pomoci PR oddělení při formulaci politicky korektních tiskových
prohlášení. S rozvojem naší společnosti je spojená nutnost formulovat
své myšlenky tak, aby prohlášení nemohlo nikoho ranit či dokonce
urazit. Tomuto trendu se říká politická korektnost, lidově též
newspeak. Podobnost s pojmem newspeak z Orwellova románu je
pochopitelně čistě náhodná. Označit někoho za "flákače" je prostě
nepřípustné, naproti tomu pojem "osoba se specifickou potřebou
plánování účasti v pracovním procesu" je zcela jistě univerzálně
použitelné. Vámi implementovaná funkce tomuto procesu bude napomáhat.
Vypisovat dlouhé politicky korektní fráze odmítají i osoby bez
specifických potřeb plánování účasti v pracovním procesu.
Implementovaná funkce bude v textu nahrazovat nevhodné politicky
nekorektní formulace za jejich správnou náhradu. Rozhraní funkce bude:
char * newSpeak ( const char * text, const char * (*replace)[2] );
Parametry funkce jsou: text - původní text, ve kterém má dojít k
náhradě nevhodných formulací. Tento parametr je const, tedy funkce jej
může pouze číst, replace - je pole s dvojicemi řetězců, k nahrazení.
Pole replace je dvojrozměrné, obsahuje n řádek a dva sloupce. Ve
sloupci 0 je řetězec nevhodné fráze a ve sloupci 1 je její politicky
korektní náhrada. Počet řádek pole není explicitně určen, víte ale, že
poslední řádka v poli obsahuje dva ukazatele s hodnotou NULL.
Návratovou hodnotou funkce je řetězec s provedenými náhradami. Tento
řetězec musí být funkcí dynamicky alokován (buď malloc nebo realloc).
Volající řetězec použije a po jeho použití jej uvolní z paměti (zavolá
free). V případě chybných parametrů vrací funkce NULL. Chceme, aby
náhrady v řetězci byly jednoznačné. Toho dosáhneme následujícím: text
nahrazujeme zleva doprava, jednou nahrazený text již není znovu
nahrazován, v náhradách pokračujeme za nahrazeným textem (viz např.
ukázka "specialist"), nahrazované fráze (sloupec 0) jsou jednoznačné,
tedy žádný vzor nesmí být předponou jiného vzoru. Funkce před
zahájením práce zkontroluje, že toto platí, pokud ne, vrátí chybovou
signalizaci hodnotou NULL. V ukázkovém běhu je to porušeno u dvojice
fail a failure. Všechny řetězce, které funkce dostává/vrací jsou
ASCIIZ řetězce (nulou ukončené). Při porovnávání řetězců funkce
rozlišuje malá a velká písmenka. Odevzdávejte zdrojový soubor, který
obsahuje implementaci požadované funkce newSpeak. Do zdrojového
souboru přidejte i další Vaše podpůrné funkce, které jsou z newSpeak
volané. Funkce bude volaná z testovacího prostředí, je proto důležité
přesně dodržet zadané rozhraní funkce. Za základ pro implementaci
použijte kód z ukázky níže. V kódu chybí vyplnit funkci newSpeak (a
případné další podpůrné funkce). Ukázka obsahuje testovací funkci
main, uvedené hodnoty jsou použité při základním testu. Všimněte si,
že vkládání hlavičkových souborů a funkce main jsou zabalené v bloku
podmíněného překladu (#ifdef/#endif). Prosím, ponechte bloky
podmíněného překladu i v odevzdávaném zdrojovém souboru. Podmíněný
překlad Vám zjednoduší práci. Při kompilaci na Vašem počítači můžete
program normálně spouštět a testovat. Při kompilaci na Progtestu
funkce main a vkládání hlavičkových souborů "zmizí", tedy nebude
kolidovat s hlavičkovými soubory a funkcí main testovacího prostředí.
Váš program bude spouštěn v omezeném testovacím prostředí. Je omezen
dobou běhu (limit je vidět v logu referenčního řešení) a dále je
omezena i velikost dostupné paměti. Časové limity jsou nastavené tak,
aby rozumná implementace naivního algoritmu prošla všemi povinnými
testy. Řešení fungující v povinných testech může získat nominálních
100% bodů. Bonusový test vyžaduje časově a paměťově efektivní výpočet
i pro dlouhé řetězce obsahující mnoho slov a slovníky obsahující
stovky dlouhých frází. První bonus kontroluje rychlost, druhý
paměťovou náročnost. Pro implementaci musíte použít C řetězce. C++
řetězce (std::string)

a 01.12.13 STL 21:04:38

jsou zakázané, jejich použití povede k chybě při kompilaci. Ukázka
použití funkce:

#ifndef __PROGTEST__ #include <stdio.h> #include <string.h> #include
<stdlib.h> #include <ctype.h> #endif /* __PROGTEST__ / char *
newSpeak ( const char * text, const char * (*replace)[2] ) { /
todo
*/ } #ifndef __PROGTEST__ int main ( int argc, char * argv [] ) { char

  • res; const char * d1 [][2] = { { "murderer", "termination

specialist" }, { "failure", "non-traditional success" }, {
"specialist", "person with certified level of knowledge" }, { "dumb",
"cerebrally challenged" }, { "teacher", "voluntary knowledge conveyor"
}, { "evil", "nicenest deprived" }, { "incorrect answer", "alternative
answer" }, { "student", "client" }, { NULL, NULL } }; const char * d2
[][2] = { { "fail", "suboptimal result" }, { "failure",
"non-traditional success" }, { NULL, NULL } }; res = newSpeak (
"Everybody is happy.", d1 ); /* res = "Everybody is happy."/ free (
res ); res = newSpeak ( "The student answered an incorrect answer.",
d1 ); /
res = "The client answered an alternative answer."/ free (
res ); res = newSpeak ( "He was dumb, his failure was expected.", d1
); /
res = "He was cerebrally challenged, his non-traditional success
was expected."/ free ( res ); res = newSpeak ( "The evil teacher
became a murderer.", d1 ); /
res = "The nicenest deprived voluntary
knowledge conveyor became a termination specialist."/ free ( res );
res = newSpeak ( "Devil's advocate.", d1 ); /
res = "Dnicenest
deprived's advocate."/ free ( res ); res = newSpeak ( "Hello.", d2 );
/
res = NULL / return 0; } #endif / __PROGTEST__ */

Hlasi se nekdo dobrovolne?

 
Odpovědět
6.12.2013 21:13
Avatar
coells
Tvůrce
Avatar
coells:6.12.2013 22:31

Je ti jasné, že když odevzdáš řešení z internetu, tak se na to nejspíš přijde? Co takhle místo hledání dobrovolníků se místo toho dobrovolně odhlásit z ČVUT a jít dělat něco užitečného?

 
Nahoru Odpovědět
6.12.2013 22:31
Avatar
mkub
Tvůrce
Avatar
Odpovídá na
mkub:6.12.2013 22:55

a co takto napisat si ten program sam? ak by si cele riesenie iba odpisal z netu, tak by ti to nielen nepomohlo, ale by ti to mohlo aj uskodit...
na tvojom mieste by som odisiel na inu skolu, kde sa nevyucuje IT a programovanie

 
Nahoru Odpovědět
6.12.2013 22:55
Avatar
Martin
Neregistrovaný
Avatar
Martin:6.12.2013 23:47

Tohle neni pro me. Potrebuji sehnat nekoho kdo to zvladne. Bohuzel c# neni zrovna ma parketa..

 
Nahoru Odpovědět
6.12.2013 23:47
Avatar
mkub
Tvůrce
Avatar
Odpovídá na
mkub:7.12.2013 0:05

ked to nie je pre teba, tak preco si isiel do toho? z donutenia?

 
Nahoru Odpovědět
7.12.2013 0:05
Avatar
Martin
Neregistrovaný
Avatar
Martin:7.12.2013 0:24

z donuceni ne, urcite by si to mohla dotycna osoba udelat sama.. Jde o neco jineho, je v tom moznej budouci vztah. Zde nejspis nenajdu nikoho kdo by mi pomohl ze?

 
Nahoru Odpovědět
7.12.2013 0:24
Avatar
mkub
Tvůrce
Avatar
Odpovídá na
mkub:7.12.2013 0:29

je mozne, ze tu niekoho najdes, ale najlepsie, ked si to urobi sam, ziska aj prax, prax sa neziskava s hotovymi programami

 
Nahoru Odpovědět
7.12.2013 0:29
Avatar
coells
Tvůrce
Avatar
Odpovídá na
coells:7.12.2013 0:50

Přečti si poslední odstavec http://xolej.g6.cz/…pan-progtest

 
Nahoru Odpovědět
7.12.2013 0:50
Avatar
Milan Křepelka
Tvůrce
Avatar
Milan Křepelka:7.12.2013 9:01

Fuj. K něčemu takovému mám poměrně averzi. No ale když už chce někdo využít programátora k řešení domácích úkolů, měl by taktéž říct, kolik tisíc za hodinu vlastně nabízí. Troufneš si to říct ?

 
Nahoru Odpovědět
7.12.2013 9:01
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Milan Křepelka
Kit:7.12.2013 9:06

Co ti na tom ProgTestu vadí?

Nahoru Odpovědět
7.12.2013 9:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na
David Hynek:7.12.2013 10:06

Hlásí se někdo dobrovolně? To jako v případě, že se nikdo nepřihlásí, někoho pověříš tímhle úkolem? :)

Dám ti jednu dobrou radu. To, že za někoho vyřešíš jeden jeho problém ti přinese i jeho druhý problém a pak další a další. Mnohdy je lepší pomocí, nepomoci. Umět rozlišit, kdy pomoci a kdy raději ne je celkem umění, ale věřím že to zvládneš.

Nahoru Odpovědět
7.12.2013 10:06
Čím víc vím, tím víc věcí nevím.
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na David Hynek
TomBen:7.12.2013 12:07

Na všechny, kteří se dobrovolně nepřihlásili přijede
neregistrovaný Martin na bílém koni a bude na ně sněžit
až do dubna. Takže se všichni hlašte. :D

Nahoru Odpovědět
7.12.2013 12:07
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Libor Šimo (libcosenior):7.12.2013 12:12

Ja som sa neprihlásil a biely kôň tu jazdí už pár dní. :P

Nahoru Odpovědět
7.12.2013 12:12
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.