NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Rovnice

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

Aktivity
Avatar
Adam Dvořák:7.6.2016 20:25

Ahoj, už jsem tu něco podobného přidával, ale co už, třeba se někdo chytí a pomůže mi s tím. Jsem student střední školy ( mám zaměření na weby, ale máme i programování a no to jsem vážně špatnej).
Dostal jsem úkol, udělat program na výpočet lineárních rovnic ve stylu např. 2x+7=4 ( rovnice nesmí být pevně daná, uživatel jí zadá jako string) a musí to být udělané objektově a s pomocí tříd. No, a co je můj problém? - všechno, nevím si s tím absolutně rady, jak jsem říkal, jsem zaměřen na weby a věnuji tomu všechnu pozornost, tohle ale musím udělat abych prolezl. Pomohl by mi někdo?(nejlepší by bylo kdyby rovnou celý program, vůbec nevím jak to udělat, takže dotazy typu co už máš, mají jednoduchou odpověď - nic, totálně v tom plavu). Díky za případnou pomoc

 
Odpovědět
7.6.2016 20:25
Avatar
Petr Šťastný
Tvůrce
Avatar
Petr Šťastný:7.6.2016 20:37

Pomohlo by ti tohle? :-)

http://www.itnetwork.cz/…09cae486b8f4

http://stackoverflow.com/…with-vectors

// EDIT: to druhy je v c#, ale v jave to bude podobny :)

Editováno 7.6.2016 20:38
 
Nahoru Odpovědět
7.6.2016 20:37
Avatar
Adam Dvořák:8.6.2016 16:52

Jo, trošku jo, ale furt to nedokážu udělat:/ nemohl bys mi sem třeba hodit menší ukázko( apoň základ) toho kodu jakby to mohlo vypadat?

 
Nahoru Odpovědět
8.6.2016 16:52
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Adam Dvořák
Petr Šťastný:8.6.2016 20:43

Teď nemám čas, ale jestli se budu o víkendu nudit a budu mít dlouhou chvíli, určitě nějaký základ (alespoň postup, jak co nakódovat) udělám. Ale upozorňuji, že to bude v c#.

Každopádně to zkus pomocí knihovny Math, podobně, jako na stackoverflowu.

Jo a používej tlačítko Odpovědět, zpráva mi tak dojde rychleji :-)

Editováno 8.6.2016 20:46
 
Nahoru Odpovědět
8.6.2016 20:43
Avatar
Odpovídá na Adam Dvořák
Drahomír Hanák:9.6.2016 1:04

Nejdřív si ujasni zadání. Z toho, co jsi napsal, to není moc jasné. Předpokládám, že v tom řetězci budou jen celá čísla a operátory +, -. Rovnice je zadána korektně (tj. obsahuje pouze celá čísla, x, +, -, právě 1 výskyt znaku = a čísla jsou oddělená nějakým operátorem +, -, =). Detekci chybného vstupu snad zvládneš sám.

Je dobré se nad problémem trochu zamyslet, než hned psát kód. Můžeš si třeba všimnout:

  1. stačí si pamatovat jen 2 čísla: součet koeficientů u x převedených na levou stranu a součet konstant převedených na pravou stranu
  2. můžeme ten řetězec procházet po znacích a jen si měnit stav (stav bude znaménko a strana rovnice)
  3. '=' mění znaménko na + a stranu rovnice na pravou, '+' mění znaménko na +, '-' mění znaménko na -
  4. pokud narazíme na číslo, musíme zkontrolovat ještě znak za ním, jestli to není x, abychom zjistili, jestli se jedná o konstantu nebo člen s x
  5. konstanty na levé straně rovnice přičítáme k součtu konstant s opačným znaménkem, stejně tak koeficienty u x na pravé straně přičítáme s opačním znaménkem k součtu koeficientú
  6. kdybychom reprezentovali znaménko a stranu rovnice čísly +1 a -1, změnu znaménka múžeme provést jednoduše násobením (konkrétně pokud levou stranu rovnice označíme -1 a pravou +1, součet koeficientú K a součet konstant C, po načtení čísla x, pokud x je konstanta: C = C + znaménko * strana * x, pokud x je koeficient: K = K + znaménko * -strana * x)
  7. když vyjde součet koeficientů u x 0 a součet konstant 0, rovnice má nekonečně mnoho řešení
  8. pokud vyjde součet koeficientů u x 0, ale součet konstant nenulový, rovnice nemá řešení
  9. řešením je podíl součtu konstant a součtu koeficientů u x, pokud to dává smysl (tj. součet koeficientů je nenulový)

S tímhle by už neměl být problém napsat jednoduchou a krátkou funkci, která zadanou rovnici vyřešì.

 
Nahoru Odpovědět
9.6.2016 1:04
Avatar
Odpovídá na Petr Šťastný
Adam Dvořák:9.6.2016 11:38

jojo, díky moc

 
Nahoru Odpovědět
9.6.2016 11:38
Avatar
Odpovídá na Drahomír Hanák
Adam Dvořák:9.6.2016 11:40

jinak já už jsem si nějak vymyslel jak byt mohlo být, ale neumím to napsat

 
Nahoru Odpovědět
9.6.2016 11:40
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 7 zpráv z 7.