NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Kalkulačka na derivácie

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jozef
Člen
Avatar
Jozef:13.4.2015 21:21

Zdravím :) Konečne som si našiel čas na (aspoň čiastočné) dokončenie programu, na ktorom som pracoval. Jedná sa o jednoduchú kalkulačku, ktorá bude počítať derivácie, lepšie povedané zderivuje výraz. Zatiaľ funguje asi pre väčšinu jednoduchých derivácii, teda operácie +,-, premenná s mocninou... Pre tieto funguje pre hociktorú deriváciu, nie len prvú(iba teoreticky, môže nastať pretečenie hodnoty premenných).
Ďalej funguje na násobenie, avšak iba po druhú deriváciu. Pre delenie funguje iba prvá derivácia.
Derivuje to aj goniometrické funkcie, konkrétne teda sin,cos, tg(uznáva aj značku tan), cotg. Avšak iba pre 1. deriváciu, pre ostatné nefunguje správne(teda ak nejde o niečo typu sin x,to by možno mohlo fungovať), na tom ešte pracujem, pretože vyššie derivácie už môžu obsahovať aj násobenie,delenie atď.
Ďalej to funguje pre prirodzený logaritmus, aj pre logaritmus so základom, ktorý určí užívateľ.
Taktiež uznáva e^x, e^-x, a^x...

Kedže som si k tomu sadol po dlhšom čase, je možné, že po úpravách, ktoré som urobil, nebudú niektoré funkcie úplne správne fungovať, preto mi prosím vždy napíšte, ak na niečo také natrafíte(ak to nebude to isté, čo už spomínam v úvode).

Budem rád za každý názor, radu, kritiku :)

Odkaz na stiahnutie:
http://uloz.to/…erivacie-zip

Odpovědět
13.4.2015 21:21
I'm not afraid to die on a treadmill
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na Jozef
David Novák:14.4.2015 11:06

Program vypadá pěkně a i užitečně - v rychlosti jsem to projel a napadají mě dvě věci, co bys mohl zlepšit.

  1. multiplatformnost - používáš windows.h, takže to nepůjde přeložit jinde než na Windows.. Buď bys to mohl zkusit udělat bez toho, nebo dát části s Win-specific kódem do podmíněného překladu, aby se překládaly pouze na Win
  2. rozdělení na moduly - Je fajn, že to máš rozdělené na tři souboury.. Ale myslím, že includování systémových hlavičkových souborů je lepší dělat přímo v .c souborech - je to přehlednější a do každého includuješ jen to, co tam využíváš ;)

Vícenásobné includování hlavičkových souborů ničemu nevadí.. A pokud bys z toho do budoucna dělal nějakou modulární kalkulačku s různými moduly, mohlo by se ti třeba stát, že bys tam vůbec nechtěl includovat derivace.h

3. nejsou tam úplně dobře ošetřené vstupy: například na 15ab2 mi to nic neřekne - ani chyba, ani výsledek

4. co takhle z toho udělat "dávkovou" aplikaci - tj. že vstup by jsi zadal jako argumenty při spuštění (tj. by bylo možné program spustit x-krát pomocí skriptu) a výsledek by to vracelo v neukecané podobě - prostě jen výraz samotný. Ukecaná verze by se dala spustit třeba přepínačem -i.. Tak by to bylo mnohem využitelnější v praxi ;)

Nahoru Odpovědět
14.4.2015 11:06
Chyba je mezi klávesnicí a židlí.
Avatar
Jozef
Člen
Avatar
Jozef:18.4.2015 15:41

Vďaka za pripomienky :)
"Dávková aplikácia"- to načítam výraz a stupeň derivácie zo vstupu, teda ako parametre funkcie main a iba by to teda vypísalo už zderivovaný výraz? A ak by teda pri spustení bolo použité "i",tak by som to spustil v normálnom režime?

Nahoru Odpovědět
18.4.2015 15:41
I'm not afraid to die on a treadmill
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na Jozef
David Novák:18.4.2015 21:47

Přesně :)

Spustil bys to například takhle:

kalkulacka.exe 2 vyraz1 vyraz2 ...

První argument by byl stupeň derivace a pak by mohlo být zadáno klidně několik výrazů (nebo to omezit jen na jeden výraz na spuštění - a pro více rovnic by se program spouštěl víckrát).

int main(int argc, char **argv);

V kódu by ses k tomu dostal takhle - v argc je počet zadaných argumentů.. argv je "pole stringů", přičemž v argv[0] je jméno programu :)

kalkulacka.exe -i

Takhle bys třeba spustil interaktivní režim. Nebo to může být naopak. Nebo by to mohl program zjistit tak, že když nebude mít parametry, tak interaktivní, jinak číst data z nich. Jinak představivosti se meze nekladou a můžeš vymyslet spoustu různých přepínačů a nastavení.. A udělat z toho multifunkční program :)

Třeba můžeš přidat výpočet integrálů nebo i normálních výrazů či i rovnic s neznámými :)

A kdybys to udělal multiplatformní a pořádně to vypiloval, mohlo by se to i běžně používat ;)

Nahoru Odpovědět
18.4.2015 21:47
Chyba je mezi klávesnicí a židlí.
Avatar
Jozef
Člen
Avatar
Odpovídá na David Novák
Jozef:19.4.2015 12:50

Dobre, vďaka za rady :) Na tomto programe plánujem pracovať vždy,keď budem mať čas, takže nejaké tie vylepšenia určite budú.Len teraz ten čas nemám, takže to tak skoro asi nebude...Môžem sem potom aj dávať vylepšené verzie :)

Nahoru Odpovědět
19.4.2015 12:50
I'm not afraid to die on a treadmill
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 5 zpráv z 5.