NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Avatar
Ondra
Neregistrovaný
Avatar
Ondra:6.12.2012 23:10

Zdravím sháním někoho kdo obstojně ovládá C++ a měl by zájem si trošku přivydělat. Není to práce na dlouho tak 1-2 hodinky. Já to bohužel nestíhám skrz jiné projekty. Kdo by měl zájem pište na email. Pošlu zadání. Díky

 
Odpovědět
6.12.2012 23:10
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:7.12.2012 13:06

Lukáš Hruda?

Nahoru Odpovědět
7.12.2012 13:06
New kid back on the block with a R.I.P
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na David Hartinger
Lukáš Hruda:7.12.2012 15:12

Já momentálně mam dost svojí práce ale kdyby sem hodil to zadání tak bych to možná v delšim časovym horizontu udělal i zadarmo, záleží na náročnosti. Každopádně to udělam buť zadarmo a nebo vůbec, když se neznáme tak vymáhat z něj peníze by stejně byl asi problém.

 
Nahoru Odpovědět
7.12.2012 15:12
Avatar
Onda.Zadnik
Člen
Avatar
Onda.Zadnik:7.12.2012 19:21

Zadání je docela dlouhé mám ho v pdf a wordu. Zaplácnout ho sem celý jako text se mi nechce.

 
Nahoru Odpovědět
7.12.2012 19:21
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na matesax
David Jančík:7.12.2012 20:16

Nejvíce mi vyhovuje Dropbox http://www.itnetwork.cz/…leni-souboru Pokud chci něco sdílet jednoduše si to označím a zvolím sdílet - vygeneruje se mi odkaz a ten pak pošlu. Umí zpracovávat jak Office formáty, tak i syntaxi nejrůznějších programovacích jazyků.
Dá se také použít místní úložiště: http://www.itnetwork.cz/dev-lighter

Nahoru Odpovědět
7.12.2012 20:16
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Onda.Zadnik
Člen
Avatar
 
Nahoru Odpovědět
7.12.2012 20:41
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:8.12.2012 12:29

Chápu správně že:

  1. mod znamená modulo (%) ?
  2. tabulka ve třídě Hash má bejt jednorozměrný pole vytvořený pomocí třídy UsporadanePole ?
  3. třída HashZlomky má bejt odvozená od třídy Hash ?
  4. třídu Zlomek máš už někde napsanou ?
 
Nahoru Odpovědět
8.12.2012 12:29
Avatar
Onda.Zadnik
Člen
Avatar
Onda.Zadnik:8.12.2012 21:04
  1. Ano mod je modulo
  2. Tady tím si nejsem jistej
  3. Ano má dědit z té šablony Hash
  4. třídu pro zlomky mám udělanou
Editováno 8.12.2012 21:07
 
Nahoru Odpovědět
8.12.2012 21:04
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:9.12.2012 11:00

Tu třídu Zlomek by bylo dobrý sem dát jako zdroják, obávam se že bez ní to napsat nepude.

 
Nahoru Odpovědět
9.12.2012 11:00
Avatar
Onda.Zadnik
Člen
Avatar
Odpovídá na Lukáš Hruda
Onda.Zadnik:9.12.2012 17:13

Tady je co jsem ji vytvářel. Měla by bejt ok.
http://www.itnetwork.cz/dev-lighter/36

 
Nahoru Odpovědět
9.12.2012 17:13
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:9.12.2012 17:49

Ta třída nemá žádný funkce pro zjištění čitatele a jmenovatele který sou private, počítam že nebude vadit když si je tam přidělam? Nebo to můžu vyřešit přes zpřátelení anebo udělat čitatele a jmenovatele public.

Mimochodem, v C++ se funkce definujou mimo blok třídy a nebo se píšou na jeden řádek. :D

 
Nahoru Odpovědět
9.12.2012 17:49
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 18:16

Funkce se píší mimo třídy ve všech jazycích. Bez ohledu na to, zda jsou nebo nejsou na jeden řádek.

Asi bych tam žádné gettery čitatele ani jmenovatele nepřidával. A dávat je jako public také nebude to pravé ořechové.

Nahoru Odpovědět
9.12.2012 18:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 18:41

Tak třeba v Javě těžko napíšeš funkci mimo třídu.
Dělat je public by asi moc vhodný nebylo, takže buďto udělat ty gettery a nebo spíš přátelskou třídu, každopádně třída HashZlomky<n> se k nim nějak dostat musí.

 
Nahoru Odpovědět
9.12.2012 18:41
Avatar
Odpovídá na Lukáš Hruda
Drahomír Hanák:9.12.2012 18:42

Ano, v Javě jsou to totiž metody ;)

Editováno 9.12.2012 18:42
 
Nahoru Odpovědět
9.12.2012 18:42
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 18:48

To nevylučuje mé tvrzení "Funkce se píší mimo třídy ve všech jazycích".

A proč se k nim HashZlomky musí dostat? Velmi nerad vidím hrabání na vnitřní proměnné objektů.

Nahoru Odpovědět
9.12.2012 18:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Drahomír Hanák
Lukáš Hruda:9.12.2012 18:48

Metoda je "jiný" název pro členskou funkci konkrétní třídy. Každá členská funkce je metoda a každá metoda je členská funkce ale pořád je to funkce (nebo procedura). Přísně vzato statická metoda je nesmysl protože to není členská funkce, nepoužívá se s konkrétní instancí třídy ale samostatně, tudíž to neni členská funkce, tudíž to neni metoda, tudíž i java má obyčejný funkce. :)

 
Nahoru Odpovědět
9.12.2012 18:48
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 18:52

Protože metoda h ve třídě HashZlomky má k hashování použít čitatele a jmenovatele instance, i když toho zadání nechápu přesně jak, ale dostat se k nim musí.

 
Nahoru Odpovědět
9.12.2012 18:52
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 18:55

Nebyla řeč o "členských funkcích", ale o funkcích. Tvá definice "statické metody" zní také zajímavě a závěr ještě zajímavěji. Dnes jsem se dozvěděl tolik novinek :)

Nahoru Odpovědět
9.12.2012 18:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 19:01

Řekni mi jestli je na té definici něco nepravda. Třeba se pletu. :)

 
Nahoru Odpovědět
9.12.2012 19:01
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 19:09

U té definice fakt nevím, protože jak už bylo řečeno, u Javy by pojem "funkce" ztratil jakýkoli význam. Přitom je to stále klíčové slovo.

V každém případě by se statické třídy a metody měly používat pouze v ojedinělých a patřičně odůvodněných případech. Osobně je nepoužívám vůbec.

Nahoru Odpovědět
9.12.2012 19:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 19:16

Já je používam pro nějaký defaultní nastavení tříd. Třeba když mam třídu pro práci s polem, tak v ní budu mít statickou funkci která nastaví defaultní velikost se kterou se vytvoří každej další objekt třídy, u který nezadam velikost explicitně. Takový funkce ale dělam spíš pro doplnění, sice tam sou ale v zásadě je nepoužívam, maximálně když něco testuju, abych nemusel pořád zadávat velikost, atd.

 
Nahoru Odpovědět
9.12.2012 19:16
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 19:33

Aha, takové statické metody nepotřebuji. Defaultní hodnoty nastavuji v konstruktoru.

Nahoru Odpovědět
9.12.2012 19:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 19:40

Já taky ale většinou zároveň chci aby existovala možnost vytvořit instanci s použitim konstuktoru bez parametrů. V Javě nebo C# by to nemělo smysl protože tam beztak objekt vytváříš až operátorem new a konstruktor používáš explicitně i když parametry nemá. V C++ ale většinou objekty vytvářim tak že je prostě deklaruju, a tam pokud konstruktor nemá parametry tak se volá implicitně. Pak je dobrý aby takovej konstruktor existoval a dosadil nějaký defaultní hodnoty. Ale taky záleží co je to za třídu, tohle dělam hlavně v knihovnách. V koncových programech defaultní nastavení u tříd nedělam.

 
Nahoru Odpovědět
9.12.2012 19:40
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 19:48

V C++ není možné přetěžovat konstruktory?

Nahoru Odpovědět
9.12.2012 19:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Onda.Zadnik
Člen
Avatar
Odpovídá na Kit
Onda.Zadnik:9.12.2012 20:01

Je C++ umí přetěžovat konstruktory pokud se nepletu

 
Nahoru Odpovědět
9.12.2012 20:01
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 20:02

Je, právě že ten konstruktor přetížit musim. Chci aby šlo vytvořit instanci s konstruktorem kterym nastavim hodnoty, zároveň pokud konstruktor nezavolam explicitně, použije se konstruktor bez parametrů, po kterym chci aby nastavil hodnoty na ty defaultní. U knihovních tříd chci většinou aby šlo oboje.

Příklad:
Array<int> arr(20); //vytvoří pole o 20 prvcích
Array<int> arr; //vytvoří pole o defaultní velikosti, která se dá změnit statickou funkcí

Kdybych nepřetížil konstruktor Array() tak se program nezkompiluje.

 
Nahoru Odpovědět
9.12.2012 20:02
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 20:11

No vidíš. V tom případě statickou metodu nepotřebuješ.

Ale už chápu, k čemu to používáš. Chápu, ale neschvaluji.

Nahoru Odpovědět
9.12.2012 20:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 20:16

Nepotřebuju ale nějak nevidim že by tam byla v zásadě na škodu. Pokud nechceš tak jí pořád nemusíš používat. Když něco testuju narychlo tak občas trochu usnadní práci, a odendat nebo vykomentovat jí můžu vždycky.

 
Nahoru Odpovědět
9.12.2012 20:16
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 20:19

K podobným účelům se obvykle používá closure. Je to nástroj, který byl k tomu stvořen.

Nahoru Odpovědět
9.12.2012 20:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 20:21

Třeba ve třídě String mam statickou funkci která mění defaultní přesnost desetinných čísel zkonvertovaných na String. Tu můžu sice změnit u každý instance zvlášť ale k objektům který vrací třeba operátor + atd. se zvenku nedostanu a pokud chci i pro tyhle změnit přesnost, musim to změnit celý třídě, v tomhle případě tu statickou funkci potřebuju, nebo sem aspoň nepřišel na to jak se bez ní obejít.

 
Nahoru Odpovědět
9.12.2012 20:21
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 20:32

Ta "statická funkce" by měla být součástí třídy, která bude poskytovat přesnost pro třídu String nebo i pro další třídy.

Nahoru Odpovědět
9.12.2012 20:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:9.12.2012 20:33

http://www.itnetwork.cz/dev-lighter/37
Tady máš tu šablonu třídy UsporadanePole, jestli sem na něco zapomněl tak dej vědět, jinak by to všechno mělo fungovat. Zbytek možná jindy.

 
Nahoru Odpovědět
9.12.2012 20:33
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 20:39

Ona součástí třídy String je. Jenom jí nevoláš s konkrétní instancí ale s třídou String přímo.
String::set_de­fault_precisi­on(x);
Volat jí s konkrétní instancí by bylo nelogický protože to nastavuje vlastně všem instancím a ne jenom tý jedný.
Kód:
String str;
str.set_defau­lt_precision(x);
nedává smysl protože takhle očekáváš že nastavíš defaultní přesnost jenom objektu str přitom to nastavuješ celý třídě.

 
Nahoru Odpovědět
9.12.2012 20:39
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 20:57

Myslel jsem to jinak. Že by byla součástí jiné třídy a objekty třídy String by využívaly instanci té jiné třídy přes DI.

Uznávám, že je to poněkud komplikované řešení, ale možná by ta třída mohla přímo řešit konverzi na string. Ať tak či tak, v jedné aplikaci by mohlo být víc kategorií přesnosti. S každou by se dalo manipulovat zvlášť.

Nahoru Odpovědět
9.12.2012 20:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Onda.Zadnik
Člen
Avatar
Odpovídá na Lukáš Hruda
Onda.Zadnik:9.12.2012 21:04

Páni :) děkuju moc. Zabralo ti to hodně času? Je mi jasné že s tím hashem se ti dělat nechce ale potřeboval bych nakopnout alespoň s tím základem. Mám vytvořenou hashovací tabulku z minulého roku. Ale to jeho zadání moc nechápu. Mohu ji využít v tomhle projektu nebo to myslí že vytvořit pomocí toho uspořádaného pole? Díky moc Ondra

http://www.itnetwork.cz/dev-lighter/39

 
Nahoru Odpovědět
9.12.2012 21:04
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 21:10

Pro moje účely to bohatě stačí takhle, kdyby bylo třeba tak bych nějak vyřešil aby se u těch objektů ke kterým se nedostanu nastavovala přesnot adekvátně podle těch objektů předávaných parametrem, to by ale pravděpodobně znamenalo půlku tý třídy přepsat a to mi jenom kvuli tomuhle přijde trochu zbytečný.

 
Nahoru Odpovědět
9.12.2012 21:10
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:9.12.2012 21:17

Moc času to nezabralo, cca hodinu čistýho času, dělal sem u toho ještě další věci včetně večeře. :)
Já to taky moc nechápu ale ta tabulka se má asi udělat prostě jako pole v tý šabloně třídy Hash. Ještě trochu nechápu jak přesně má fungovat ten hashovací algorytmus, jestli má mít každej prvek svuj vlastní hash a nebo nějak celkově.

 
Nahoru Odpovědět
9.12.2012 21:17
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:9.12.2012 21:24

Souhlasím. Někdy se to s tou objektovostí až přehání. Některé třídy pak vypadají univerzálně a znovupoužitelně, ale jsou k ničemu. Stejně není dobré psát v jednom paradigmatu celou aplikaci.

Nahoru Odpovědět
9.12.2012 21:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:9.12.2012 21:27

Mimochodem k tý třídě Zlomek si musíš přidělat konstruktor bez parametrů
Zlomek() : c(1), j(1) {}
Jinak ti nepude vytvořit uspořádaný pole objektů tý třídy.
Potřebuješ:
UsporadanePole<Zlo­mek,x> pole; ale to nejde když neexistuje konstruktor bez parametrů a v parametru šablony explicitně konstruktor volat nemůžeš.
Další důvod proč by třída měla mít implicitní konstruktor a defaultní hodnoty.

 
Nahoru Odpovědět
9.12.2012 21:27
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:9.12.2012 21:38

Ono hlavně C++ neni čistě objektovej jazyk a třeba když používáš nějakou Céčkovou knihovnu (což já používam skoro v každym programu) tak se neobjektovým řešením většinou ani nevyhneš.

 
Nahoru Odpovědět
9.12.2012 21:38
Avatar
Onda.Zadnik
Člen
Avatar
Odpovídá na Lukáš Hruda
Onda.Zadnik:10.12.2012 16:04

Úloha sestavení hašovací tabulky nemá s uspořádaným polem nic
společného. Jde o klasickou hašovací tabulku.

Šablona HashZlomky je odvozena ze šablony Hash, jak je uvedeno v
zadání úlohy.

tohle mi přišlo od garanta tudíž výstup by měl být něco jako ta hash tabulka co jsem tu dával ne?

 
Nahoru Odpovědět
10.12.2012 16:04
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:10.12.2012 18:38

A do těch jednotlivých prvků se mají ukládat rovnou hashe těch zlomků který tam přidáš předpokládam. Ještě mi řekni jak mam vyřešit přístup šablony HashZlomky k čitateli a jmenovateli třidy Zlomek. Možnosti sem tu už vypisoval, vzhledem k tomu že ta třída má settery tak bych asi udělal prostě gettery pro oboje. Mimochodem máš tam chybu, funkce operátoru / zlomky násobí místo aby je dělila.

 
Nahoru Odpovědět
10.12.2012 18:38
Avatar
Onda.Zadnik
Člen
Avatar
Onda.Zadnik:10.12.2012 19:42

Elegantněji to asi řešit nejde než si udělat get pro každý z nich. Možná jsem to mohl udělat jako pair a potom přistupovat na každý z nich přes first,second ale to už je fuk. Díky za upozornění toho / jsem si nevšiml :)

 
Nahoru Odpovědět
10.12.2012 19:42
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:10.12.2012 20:48

Já ale teď na to nejspíš nebudu mít čas. Můžeš zatim zkusit něco splácat dohromady sám, když se ti to nepovede tak se na to pak podívam, ale nevim kdy. Jinak bych řek že to neni nijak zásadně složitý, to pole je podle mě složitější.

 
Nahoru Odpovědět
10.12.2012 20:48
Avatar
Onda.Zadnik
Člen
Avatar
Onda.Zadnik:10.12.2012 20:58

Já to mám teď to středy a ještě dodělávám jiný věci takže to bohužel nestihnu... mě tohle přijde horší protože jsem pořád nepobral moc co po mě chce vlastně... ale i tak díky za ten první

Editováno 10.12.2012 20:58
 
Nahoru Odpovědět
10.12.2012 20:58
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:10.12.2012 21:46

Dneska už to dělat nebudu a zejtra nestíham, tak možná ještě ve středu ale téžko říct jestli bude čas.

 
Nahoru Odpovědět
10.12.2012 21:46
Avatar
Onda.Zadnik
Člen
Avatar
Odpovídá na Lukáš Hruda
Onda.Zadnik:11.12.2012 20:44

Tak jsem něco zkoušel ale nedaří se mi přepsat tu čistě virtuální metodu.. můžu to sem hodit na zkouknutí?

 
Nahoru Odpovědět
11.12.2012 20:44
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Onda.Zadnik
Lukáš Hruda:11.12.2012 21:44

Nevim o tom že by v C++ existovalo nějaký klíčový slovo override. Čistě virtuální funkce se definuje tak že jí prostě v tý odvozený třídě znova deklaruješ a normálně definuješ, pokud neni krátká tak jí definuj mimo třídu. Jakákoliv členská funkce třídy je automaticky inline pokud jí definuješ uvnitř bloku třídy (u statických si nejsem jistej ale myslim že taky) a to u delších funkcí neni dobře.

 
Nahoru Odpovědět
11.12.2012 21:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Tato diskuze byla označena moderátorem jako nekonstruktivní a myslíme si, že nemá pro veřejnost příliš vysokou hodnotu. Členy můžete samozřejmě stále oslovit soukromě a to formou zpráv nebo chatu.

Zobrazeno 50 zpráv z 64.