Dobrý den, potřeboval bych pomoct s zadáním úkolu na programovní. Máme napsat program v javě, který vyčísluje základní chemické rovnice nejlépe matematickou cestou, tedy aby program napsal vztahy neznámých v rovnici a spočítal je. Vůbec nevím jak začít, takže za jakékoliv rady budu vděčný.
Fórum › Java
Vyčíslování chemických rovnic
![](img/forum_vlakno_help_vyreseno.png)
Předveď co máš a "možná" ti s programování pomůžeme. Neřešíme tu za druhé jejich úkoly.
ok jediný co mám je že jsem zadanou rovnici rozděli na tokeny..
public class Vycisleni {
public static void main(String[] args) {
//scanner, do kterého se píše text (rovnice)
Scanner scan = new Scanner(System.in, "UTF-8");
//uvodní text, co napíše program při spuštění
System.out.println("Napiš rovnici: ve tvaru aPCl3+bH20->cH3PO3+dHCl");
//text se převede do stringu
String rovnice = scan.nextLine();
if(rovnice.contains("+")) { //pokud platí tak se spustí celý program
//tokenizer
StringTokenizer tokenizer = new StringTokenizer(rovnice, "+ ->");
List<String> casti = new ArrayList<String>();
while(tokenizer.hasMoreTokens()) {
String prvek = tokenizer.nextToken();
casti.add(prvek);
System.out.println(prvek);
}
}else{ //pokud ne tak se napíše toto
System.out.println("Tato rovnice " + rovnice + " není správně napsaná");
}
}
}
Treba te to inspiruje :)
(PCl3) + (H20) --> (H3PO3) + (HCl)
Soucet: (Prvek - vlevo, vpravo)
P 1, 1
Cl 3, 1
H 2, 3+1
O 1, 3
--------------------------
A jedu kontrolu (od prvniho do posledniho prvku):
P 1, 1 - OK
Cl 3,1 - Nesedí. Abych dorovnal, sloučeninu s Cl napravo (HCl) x 3
--------------------------
(PCl3) + (H20) --> (H3PO3) + 3x(HCl)
Soucet: (Prvek - vlevo, vpravo)
P 1, 1
Cl 3, 3
H 2, 3+3
O 1, 3
--------------------------
A jedu kontrolu (od prvniho do posledniho prvku):
P 1, 1 - OK
Cl 3, 3 - OK
H 2, 6 Nesedí. Abych dorovnal, sloučeninu s H nalevo (H20) x 3
--------------------------
(PCl3) + 3x(H20) --> (H3PO3) + 3x(HCl)
P 1, 1
Cl 3, 3
H 6, 3+3
O 3, 3
--------------------------
Kontrola OK
--------------------------
Takze to potrebuju rozbit na prvky.
Vytvorit seznam o 5 sloupcich.
sloupec 1 - prvek
sloupec 2 - poradove cislo slouceniny vlevo, ve ktere se prvek nachazi - abych mohl spravne roznasobit celou slouceninu, bude-li treba
sloupec 3 - poradove cislo slouceniny vpravo, ve ktere se prvek nachazi - || -
sloupec 4 - mnozstvi tohoto prvku vlevo
sloupec 5 - mnozstvi tohoto prvku vpravo
Udelat primarni test, jestli se nalezene prvky vlevo a vpravo shoduji - jinak to nikdy nemuze vyjit.
A stejne to asi nevyjde vzdycky - zatim me nenapada jak to predem odhalit. :)
Lepsi:
1. seznam: Slouceniny = 2 sloupce (nazev, nasobic)
2. seznam: Prvky = 3 sloupce (prvek, pocet vlevo, pocet vpravo)
Procedura "Kontrola" vzdy zacne vytvorenim seznamu prvku (podle seznamu sloucenin krat jejich aktualni nasobic) a pokud to u nejakeho prvku nesedi, tak se zmeni nasobic prislusne slouceniny a kontrola zacne znovu od zacatku, dokud nebude vse OK.
Otazka. Pokud uzivatel sam zada a, b, c, d - co tam vlastne chces pocitat? Jen zkontrolovat, zda to sedi?
Doplnek 2.
Slouceniny potrebuji jeste jeden sloupec, udaj o tom, kde se ktera sloucenina v rovnici nachazi (nalevo/napravo), at je mozno urcit, kterou vynasobit.
Pokud se prvek, ktery chceme vynasobit, nachazi na dane strane rovnice ve vice slouceninach, je treba se pro nejakou rozhodnout.
Zrejme bude treba zkusit obe moznosti a vybrat tu, po ktere nastane vetsi shoda souctu prvku nalevo/napravo.
Konec teorie.
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Program na soustavu rovnic — založil kamilek
řešení rovnic - dotaz — založil Balaam
Čtení rovnic ze souboru — založil Lukáš
Soustavy rovnic a nerovnic — založil jajka
Soustavy rovnic a program — založil Anonymní uživatel
Moderátoři diskuze