Vyčíslování chemických rovnic – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vyčíslování chemických rovnic – Java – Fórum – Programujte.comVyčíslování chemických rovnic – Java – Fórum – Programujte.com

 

Jan Merunka
~ Anonymní uživatel
2 příspěvky
12. 4. 2015   #1
-
0
-

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ý. 

Nahlásit jako SPAM
IP: 2a00:1028:8d1e:f5de:d1c9:...–
NotBeginner
~ Anonymní uživatel
185 příspěvků
13. 4. 2015   #2
-
0
-

Předveď co máš a "možná" ti s programování pomůžeme. Neřešíme tu za druhé jejich úkoly.

Nahlásit jako SPAM
IP: 217.112.161.–
Jan Merunka
~ Anonymní uživatel
2 příspěvky
14. 4. 2015   #3
-
0
-

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á");
       }
    }
}

Nahlásit jako SPAM
IP: 85.71.189.–
pee-jay_cz0
Návštěvník
14. 4. 2015   #4
-
0
-

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. :)

Nahlásit jako SPAM
IP: 213.129.141.–
pee-jay_cz0
Návštěvník
14. 4. 2015   #5
-
0
-

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?

Nahlásit jako SPAM
IP: 213.129.141.–
pee-jay_cz0
Návštěvník
14. 4. 2015   #6
-
0
-

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.

Nahlásit jako SPAM
IP: 213.129.141.–
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, 46 hostů

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 program — založil Anonymní uživatel

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ý