Avatar
Adam Dvořák:

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. června 20:25
Avatar
Petr Stastny
Redaktor
Avatar
Petr Stastny:

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. června 20:38
 
Nahoru Odpovědět 7. června 20:37
Avatar
Adam Dvořák:

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. června 16:52
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Adam Dvořák
Petr Stastny:

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. června 20:46
 
Nahoru Odpovědět 8. června 20:43
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Adam Dvořák
Drahomír Hanák:

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  +1 9. června 1:04
Avatar
Odpovídá na Drahomír Hanák
Adam Dvořák:

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

 
Nahoru Odpovědět 9. června 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.