Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Novinky: Děkujeme všem návštěvníkům fóra, kteří ochotně radí ostatním. Vaše práce je velmi potřebná a vážíme si jí.

Autor Téma: Amatér programuje C++ kalkulačku.....  (Přečteno 5313 krát)

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Amatér programuje C++ kalkulačku.....
« kdy: 20 Květen 2011, 13:47:34 »
Ahoj, jsem celkem C++ newbie, a tak vlastně čistě z hecu programuju takovej maličkej prográmek. Měla by to být taková elementární kalkulačka + převaděč jednotek + převaděč mezi kódama (BCD, BCD+3, Grayův kód.....)


http://sourceforge.net/projects/quonverter/
Kód si můžete stáhnout z gitu.
http://quonverter.git.sourceforge.net/git/gitweb.cgi?p=quonverter/quonverter;a=summary
Stačí stáhnout a zkompilovat z QtCreatoru.

Kdyžtak pište nějaký dojmy, co z toho máte, co byste případně vylepšili (toho bude hodně), co byste naopak oddělali, na čem bych měl zapracovat, atd.....
Kód asi nebude úplně ok (jsem celkem nechutnej generátor kódu, moje kódy sou leckdy hustokrutě prasácký, ale co už :D), takže komentujte i ten styl, ať se třeba poučím.

Díky.
ArchLinux (KDE)
Můj web

domitea

  • Návštěvník
  • *
  • Příspěvků: 39
  • Karma: +4/-1
  • Mayday, mayday, bird strike, flight 1549
    • Zobrazit profil
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #1 kdy: 10 Červen 2011, 20:46:28 »
Kalkulačka pěkná. Co takle tam zkusit přidat grafy funkcí? (zadáš rovnici a z té se to dopočítá) To už by bylo docela "konkurenceschopné"

P.S: Neznáme se z jiného fóra? ;D
Prozřel jsem! Už se na svět nedívám přes Wokna, ale přes okno!

Martin - ViPEr*CZ*

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3047
  • Karma: +145/-18
    • Zobrazit profil
    • http://vipersoftware.net
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #2 kdy: 11 Červen 2011, 12:09:16 »
No vypadá to slušně... rozhodně né začátečnický dílko.... i v designu je cit.
Kód jsem nějak extra nestudoval... na to není time... jen se zeptám... co dělá tlačítko mod? Spolu s číslovkou např.: 20mod= (napíšu 20 stisknu mod a poté rovná se) dojde k vyvolání vyjímky OS (někde to na něčem spadne)  ;)
A dále jde dělit nulou (spíše se to chová jako kdyby to dělilo jedničkou)... to je asi taky taková triviálnost ;)
Dál třeba při stusknu x na druhou se vloží funkce sqr()... to je možná také nepraktické... očekával bych výsledek ... tj. 5 a stisk x na druhou buď vyhodí výsledek nebo zapíše, že chci tu pětku na druhou... sqr bych do textového pole asi nevkládal. ;) To samé ostatní funkce např. sin. Pak jsem třeba zkoušel x krát po sobě vložit např. rand funkci... to chování by mělo být také jinak. Jednak upravit podle předchozí specifikace a rand například musí vyhodit náhodné číslo... a to nemluvím o tom, že když tam vytvořím krásný vstup z rand() a dám rovná se, tak opět vyjímka. Asi to nemá rádo prázdnou rand().... ani se mu nedivím :-) Desetinný čísla dále ošetřit ... vstup např.: 0...............000 nevypadá taky moc OK ;) No jdu radši na oběd. Práce asi už máte dost 8)
« Poslední změna: 11 Červen 2011, 12:17:16 od Martin - ViPEr*CZ* »
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #3 kdy: 11 Červen 2011, 15:24:54 »
Kalkulačka pěkná. Co takle tam zkusit přidat grafy funkcí? (zadáš rovnici a z té se to dopočítá) To už by bylo docela "konkurenceschopné"

P.S: Neznáme se z jiného fóra? ;D

Díky za názor. Čoveče to nevím, esli se známe. Identifikuj se nějak :D
ArchLinux (KDE)
Můj web

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #4 kdy: 11 Červen 2011, 15:30:57 »
No vypadá to slušně... rozhodně né začátečnický dílko.... i v designu je cit.
Kód jsem nějak extra nestudoval... na to není time... jen se zeptám... co dělá tlačítko mod? Spolu s číslovkou např.: 20mod= (napíšu 20 stisknu mod a poté rovná se) dojde k vyvolání vyjímky OS (někde to na něčem spadne)  ;)
A dále jde dělit nulou (spíše se to chová jako kdyby to dělilo jedničkou)... to je asi taky taková triviálnost ;)
Dál třeba při stusknu x na druhou se vloží funkce sqr()... to je možná také nepraktické... očekával bych výsledek ... tj. 5 a stisk x na druhou buď vyhodí výsledek nebo zapíše, že chci tu pětku na druhou... sqr bych do textového pole asi nevkládal. ;) To samé ostatní funkce např. sin. Pak jsem třeba zkoušel x krát po sobě vložit např. rand funkci... to chování by mělo být také jinak. Jednak upravit podle předchozí specifikace a rand například musí vyhodit náhodné číslo... a to nemluvím o tom, že když tam vytvořím krásný vstup z rand() a dám rovná se, tak opět vyjímka. Asi to nemá rádo prázdnou rand().... ani se mu nedivím :-) Desetinný čísla dále ošetřit ... vstup např.: 0...............000 nevypadá taky moc OK ;) No jdu radši na oběd. Práce asi už máte dost 8)

Ahoj. No mod by měl fungovat jako zbytek po dělení. Tedy 12 mod 5 = 2. Pokud to někde spadne, tak prosím napiš něco bližšího (OS, nějakou vyjímku, co to vyhodí třeba atp.). To vkládání funkcí (sqr) jsem tak udělal záměrně,aby mohl uživatel nejdřív zapsat celej výraz třeba.

Dělení nulou mám ošetřeno tak že to vrací dělenec, tedy se to skutečně tváří taky jako kdybys dělil jedničkou. Patrně zavedu nějakej StatusBar, kde budu vypisovat tyhle vyjímky. Například "V pořádku", "Dělíte nulou" "Nekonečno" atd atd.

Na desetinných číslech pracuju.

Celkově hodně těch vyjímek není ošetřeno. To časem všechno ošetřím.

Doporučuju, abyste vyzkoušeli poslední verzi. (0.2.1)

https://sourceforge.net/projects/quonverter/

Moc díky, za tipy a nalezené chyby. Sám je moc nehledám.
ArchLinux (KDE)
Můj web

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #5 kdy: 11 Červen 2011, 15:38:33 »
Jo, teď teda upravuju ty vyjímky. Budu vracet nulu, pokud dojde k chybě. Později dodělám statusbar.

A ta funkce rand funguje podle mě celkem očekávaně. Zkrátka vrací pseudonáhodné číslo od rozsahu 1 - n, kde n je rand(n).

Tedy například rand(15) vrací 1-15.

EDIT:
Tak ty chyby u těch funkcí mám opravený u sebe už.
« Poslední změna: 11 Červen 2011, 15:45:39 od skunkos »
ArchLinux (KDE)
Můj web

Martin - ViPEr*CZ*

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3047
  • Karma: +145/-18
    • Zobrazit profil
    • http://vipersoftware.net
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #6 kdy: 11 Červen 2011, 15:38:48 »
Aha... tak pokud neřešíte exceptions, tak pak jako návrh je to povedené... to zase musím pochválit. Trochu se zaměřit na tu uživatelskou část. Chápu, že uživatel chce vypsat prvně výraz a pak rovnítkem spočítat... možná úvaha... dám číslo a pak dám rand ... nebylo by tedy lepší aby mi to číslo skočilo do závorek pokud jsem doteď neudělal operátor???

Příklad:

5rand() bych spíše parsoval chytře do rand(5) ale když zmačknu 5+ a pak rand, tak zápis vyskočí 5+rand() a ještě suprovější by bolo kdyby se kurzor nastavil automaticky do tý závorky pro vložení čísel (!!! prázdné hodnoty v rand padají !!!) a zárovka z obou stran se zvýraznila... to by vypadalo. 8)
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Martin - ViPEr*CZ*

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3047
  • Karma: +145/-18
    • Zobrazit profil
    • http://vipersoftware.net
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #7 kdy: 11 Červen 2011, 15:39:31 »
Jo, teď teda upravuju ty vyjímky. Budu vracet nulu, pokud dojde k chybě. Později dodělám statusbar.

A ta funkce rand funguje podle mě celkem očekávaně. Zkrátka vrací pseudonáhodné číslo od rozsahu 1 - n, kde n je rand(n).

Tedy například rand(15) vrací 1-15.
Tak si zkuste 100x kliknout na rand a pak dát rovnítko :-)
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #8 kdy: 11 Červen 2011, 15:47:01 »
Aha... tak pokud neřešíte exceptions, tak pak jako návrh je to povedené... to zase musím pochválit. Trochu se zaměřit na tu uživatelskou část. Chápu, že uživatel chce vypsat prvně výraz a pak rovnítkem spočítat... možná úvaha... dám číslo a pak dám rand ... nebylo by tedy lepší aby mi to číslo skočilo do závorek pokud jsem doteď neudělal operátor???

Příklad:

5rand() bych spíše parsoval chytře do rand(5) ale když zmačknu 5+ a pak rand, tak zápis vyskočí 5+rand() a ještě suprovější by bolo kdyby se kurzor nastavil automaticky do tý závorky pro vložení čísel (!!! prázdné hodnoty v rand padají !!!) a zárovka z obou stran se zvýraznila... to by vypadalo. 8)

No takhle by to mělo asi fungovat pokud to dobře chápu. Zkuste to pomocí tlačítek. Například vyťukat 5+rand() a kurzor by vám měl skutečně skočit dovnitř závorek.
ArchLinux (KDE)
Můj web

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #9 kdy: 11 Červen 2011, 15:48:18 »
Jo, teď teda upravuju ty vyjímky. Budu vracet nulu, pokud dojde k chybě. Později dodělám statusbar.

A ta funkce rand funguje podle mě celkem očekávaně. Zkrátka vrací pseudonáhodné číslo od rozsahu 1 - n, kde n je rand(n).

Tedy například rand(15) vrací 1-15.
Tak si zkuste 100x kliknout na rand a pak dát rovnítko :-)

A rovnítko netřeba dávat. Místo rovnítka používejte třeba ENTER. Nebo to tlačítkové rovná-se, pokud chcete klikat. Tohle ja zatím slabinka, to zadávání těch výrazů, ale co. Je to mladej prográmek :D
ArchLinux (KDE)
Můj web

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #10 kdy: 11 Červen 2011, 15:50:28 »
rand(rand(rand(rand(rand(rand(rand(rand(rand(rand(rand(rand(rand(rand()))))))))))))) = 0, to sedí protože na vstupu toho vnitřního randu není číslo a tehdy to nuluju

EDIT:

Takový okrouhlý popis funkcí je v nápovědě. Jinak je fakt možný, že tam budou i očividné chyby, jako jak říkám. Když to objevíte, tak to bude fajn. Není cílem udělat nějakej enterprise software. Je to for fun a když se ve výsledku stane, že to někomu i v něčem pomuže, tak tím líp.
« Poslední změna: 11 Červen 2011, 15:55:09 od skunkos »
ArchLinux (KDE)
Můj web

domitea

  • Návštěvník
  • *
  • Příspěvků: 39
  • Karma: +4/-1
  • Mayday, mayday, bird strike, flight 1549
    • Zobrazit profil
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #11 kdy: 14 Červen 2011, 22:03:10 »
Skunicz - PC-help.cz  ;D

Kalkulačka jde pořád dál a dál

P.S. To děláš v Qt Creatoru?
Prozřel jsem! Už se na svět nedívám přes Wokna, ale přes okno!

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #12 kdy: 14 Červen 2011, 22:25:33 »
Skunicz - PC-help.cz  ;D

Kalkulačka jde pořád dál a dál

P.S. To děláš v Qt Creatoru?
Mj. i v QtCreatoru.
ArchLinux (KDE)
Můj web

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #13 kdy: 01 Červenec 2011, 11:35:35 »
Zdravím, už sme tři lidi, co na kalkulačce děláme.

Zkompiloval jsem binárku pro linux. Tak prosím stáhněte, vyzkoušejte a kritizujte.


https://sourceforge.net/projects/quonverter/

Pozor, je to pouze zabalená binárky, závislosti si musíte donistalovat. Snad jedinou závislostí budou qt-knihovny (libQtCore, libQtXml, libQtGui, libQtNetwork).

ArchLinux (KDE)
Můj web

daysleeper

  • Závislák
  • ****
  • Příspěvků: 1206
  • Karma: +157/-19
    • Zobrazit profil
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #14 kdy: 01 Červenec 2011, 11:54:42 »
historie prikladu je super

trochu nekonzistentni zapis, napr.
x!(5) = 120
9^2 = 81
(u faktorialu je argument v zavorce za funkci, u mocniny ne)

Zeroise jsem tedy neznal...

povoli mi to vyrazy typu 5sin(2), ale nespocte to spravne (asi by melo byt 5*sin(2))

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #15 kdy: 01 Červenec 2011, 11:58:19 »
historie prikladu je super

trochu nekonzistentni zapis, napr.
x!(5) = 120
9^2 = 81
(u faktorialu je argument v zavorce za funkci, u mocniny ne)

Zeroise jsem tedy neznal...

povoli mi to vyrazy typu 5sin(2), ale nespocte to spravne (asi by melo byt 5*sin(2))

Dík za tipy. Je pravda že ty zápisy budu muset nějak sjednotit. Ale stačí si přečíst help. Tam je napsán důvod proč je ten zápis takový jaký je (je to dáno aritou operací). A co se týče toho 5sin...to možná upravím, ale podle mě je dobré nutít uživatele zadávat ty výrazy opravdu korektně a včetně všech operátorů, opět viz Help.

A Zeroise, to je anglický ekvivalent slova Smazat/Vynulovat. Takže tohle nuluje vstup kalkulačky.
ArchLinux (KDE)
Můj web

daysleeper

  • Závislák
  • ****
  • Příspěvků: 1206
  • Karma: +157/-19
    • Zobrazit profil
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #16 kdy: 01 Červenec 2011, 12:31:48 »
Dík za tipy. Je pravda že ty zápisy budu muset nějak sjednotit. Ale stačí si přečíst help. Tam je napsán důvod proč je ten zápis takový jaký je (je to dáno aritou operací). A co se týče toho 5sin...to možná upravím, ale podle mě je dobré nutít uživatele zadávat ty výrazy opravdu korektně a včetně všech operátorů, opět viz Help.

A Zeroise, to je anglický ekvivalent slova Smazat/Vynulovat. Takže tohle nuluje vstup kalkulačky.
no jo, jenze x! i x^2 jsou obe unary...

uzivatele to podle me psat vyrazy korektne nedonuti, protoze to nehlasi chybu, ale vypise nespravny vysledek, coz si clovek nemusi vsimnout

zeroise: proc nepouzit obycejne "zero", ktere je mnohem uzivanejsi, a dave imo i vetsi smysl?

jinak dobra prace. ja nejcasteji pouzivam kalkulacku na prevody a operace hex - bin - dec, takze kdybys chtel v budoucnu nekdy implementovat tuto funkci... :)

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #17 kdy: 01 Červenec 2011, 12:38:32 »
Dík za tipy. Je pravda že ty zápisy budu muset nějak sjednotit. Ale stačí si přečíst help. Tam je napsán důvod proč je ten zápis takový jaký je (je to dáno aritou operací). A co se týče toho 5sin...to možná upravím, ale podle mě je dobré nutít uživatele zadávat ty výrazy opravdu korektně a včetně všech operátorů, opět viz Help.

A Zeroise, to je anglický ekvivalent slova Smazat/Vynulovat. Takže tohle nuluje vstup kalkulačky.
no jo, jenze x! i x^2 jsou obe unary...

uzivatele to podle me psat vyrazy korektne nedonuti, protoze to nehlasi chybu, ale vypise nespravny vysledek, coz si clovek nemusi vsimnout

zeroise: proc nepouzit obycejne "zero", ktere je mnohem uzivanejsi, a dave imo i vetsi smysl?

jinak dobra prace. ja nejcasteji pouzivam kalkulacku na prevody a operace hex - bin - dec, takze kdybys chtel v budoucnu nekdy implementovat tuto funkci... :)

Zkoušel si převody jednotek? To co popisuješ tam je.
ArchLinux (KDE)
Můj web

_Crix_

  • Návštěvník
  • *
  • Příspěvků: 13
  • Karma: +1/-0
    • Zobrazit profil
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #18 kdy: 08 Září 2011, 00:10:24 »
Hele, vypadá to dost dobře, mi osobně by se tam hodně líbilo nějaké grafy funkcí. Idea ve smyslu napíšu předpis funkce -> vyhodí mi to graf

skunkos

  • Člen
  • **
  • Příspěvků: 399
  • Karma: +32/-4
    • Zobrazit profil
    • Osobní web
Re: Amatér programuje C++ kalkulačku.....
« Odpověď #19 kdy: 15 Září 2011, 10:05:07 »
No už na tom moc nepracuju + rozhodl jsem se udělat to, že z Qonverteru odstraním kompletně KALKULAČKU + MATICOVOU KALKULAČKU a zaměřím se na takový ten primární ukol -> aplikace na převod jednotek + všeho co se dá převádět.

Todle povede k pročištění kódu

viz

http://quonverter.git.sourceforge.net/git/gitweb.cgi?p=quonverter/quonverter;a=summary
« Poslední změna: 15 Září 2011, 10:07:11 od skunkos »
ArchLinux (KDE)
Můj web