Výpočet příkladu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpočet příkladu – Java – Fórum – Programujte.comVýpočet příkladu – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Nicolas0
Návštěvník
15. 5. 2013   #1
-
0
-

Ahoj,

mám JTextArea a v něm zapsáno 1+2

Když to chci vypočítat, je nejlepší způsob použít .toCharArray() a pak zkoumat pole zda obsahuje číslo či znaménko a podle toho sestavit program?

Nebo se používá nějaký jiný efektivnější způsob, popř. jaký?

Předem díky, N.

Nahlásit jako SPAM
IP: 62.209.192.–
Nicolas

Quis ut Deus?
sleepy0
Stálý člen
15. 5. 2013   #2
-
0
-

no to zalezi co od toho vsetkeho chces, lebo to co si napisal by bolo velmi neefektivne na take nieco ako: 4*(sin(12)+ 15*(3-2)/4*tan(cos(1-4*sin(0.1)))). A ak sa ti to nechce programovat tak pouzi kniznicu, nico ako symja, jep, exp4j. Vacsinou to funguje velmi jednoducho len to toho vlozis cely String a spustis vypocet. pozri si priklady.

Nahlásit jako SPAM
IP: 158.195.204.–
Nicolas0
Návštěvník
16. 5. 2013   #3
-
0
-

#2 sleepy
chtěl bych zobrazit i mezivýpočty...

Nahlásit jako SPAM
IP: 82.144.151.–
Nicolas

Quis ut Deus?
sleepy0
Stálý člen
16. 5. 2013   #4
-
0
-

No tak to si musis napisat sam. Ked som ja take nieco robil, tak som pouziva strom, s tym ze cislo (resp. funkcia) ma najvyssiu prioritu a opertory idu postupne {(*,/), (+,-)}, a koren je prvkom z tohto pola (aj ked Ved. cisla, netvoria ani len komutativnu grupu, vzhladom na poeraciu scitovania, ale cisto teoreticky) s najnizsou prijoritou, cize + alebo -.

priklad: sin(3*(15-4)+2*(cos(3) - 1):

    |    15    4   |           | cos(3)         1 |

    | 3     -       |      2    |            -        |

sin|   *           |         *

                        +

A potom som volal pre kazdy nod len getValue() a ten mi vracal cislo, alebo ak to bola funkcia tak tu najskor spocital a takto iteroval az sa nedostal po cislo. Tam mozes vypisovat aj medzivypocty.

Nahlásit jako SPAM
IP: 158.195.204.–
Nicolas0
Návštěvník
21. 5. 2013   #5
-
0
-

#4 sleepy
Díky, vcelku pochopitelně jsem strom našel na: http://www.cs.vsb.cz/benes/vyuka/upr/texty/adt/ch01s07.html a jde o to že si musím nastavit priority, tedy jak píšeš {(*,/), (+,-)}

Ale vrátím se na začátek, tak bych chtěl vědět jestli na to jdu dobře či nikoliv. Uvedu jednoduchý příklad a jak bych to řešil.

Př: 2*(1+3)

- Nejdřív bych celý řetězec rozsekal pomocí .toCharArray()

- Podle priorit ve stromu bych vyhledal poslední otevírací závorku, k ní uzavírací závorku a to co je v ní uložil do Stringu

- String bych spočítal podle tebou uvedené knihovny

- A nakonec bych výsledek a 2* zase uložil do Stringu a znovu spočítal pomocí knihovny

Sedí?

Díky, N.

Nahlásit jako SPAM
IP: 62.209.192.–
Nicolas

Quis ut Deus?
sleepy0
Stálý člen
21. 5. 2013   #6
-
0
-

Moze byt, otazkou je ze, ked uz to mas takto rozlozene ci sa ti vobec oplati tu knihovnu pouzit :) (nie ze by to nebolo jednoduchsie, ale jednoducho niekolko krat za sebou parsujes nejaky String, navyse aj tak budes musiet pouzit rekurentne vyhladavanie, ak budes mat zatvorky v zatvorkach, cize vlastne urobis vacsinu roboty). Ja som zatvorky riesil pomerne jednoducho tak, ze som povedal ze vsetko co je ohranicene nejakou zatvorkou je funkciou a teda ma prioritu ako cislo. Tu je kod ako som, ja robil taketo nieco: https://github.com/sleepy771/IsotopeCalculator/blob/master/src/isocalc/function/parser/TreeFunction.java. Nieje to idealne, ale mozno z tho nieco vycitas, alebo sa pozri do tych kniznic co som ti posielal

Nahlásit jako SPAM
IP: 158.195.204.–
Nicolas0
Návštěvník
22. 5. 2013   #7
-
0
-

#6 sleepy
Tak ještě jednou díky... snad se mně to podaří :-)

N.

Nahlásit jako SPAM
IP: 62.209.192.–
Nicolas

Quis ut Deus?
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý