Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 13. 03. 2011 18:41

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

dobrý den potřeboval bych pomoci s jedním polem, vstupem je pole libovolné velikosti, cílem je přeskupit v něm nějakým způsobem prvky, vypsat změněné pole a uložit to do souboru. Zkusit nějak ošetřit chyby od uživatele. Děkuji velice za pomoct či aspoň rady.

Offline

  • (téma jako vyřešené označil(a) gladiator01)

#2 13. 03. 2011 20:48

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:
Co jsi zatím vymyslel?


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#3 13. 03. 2011 21:32

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

měl bych takový nápad na něco jako takovou přesmyčku, že se mi ty čísla budou točit od nejvetšího k nejmenšímu. Prostě takový asi jako Had

Offline

 

#4 13. 03. 2011 21:48

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

a je to Dvourozměrné pole např 5 x 5

Offline

 

#5 13. 03. 2011 22:04

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:
To musí být Dvourozměrné pole? Řadit jednorozměrné by bylo asi jednoduší. Nebo chceš každý řádek seřadit jiným směrem.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#6 13. 03. 2011 22:37

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

Bohužel musí být Dvourozměrné. Potřebuji aby přesně jak říkáš 1.......10
                                                                                             20.....11
                                                                                             21.....30
Takhle se mi to zobrazilo no a potřebuji aby se mi to zapisovalo ještě k tomu i do souboru. kód jako takový jsem nějak napsal no, ale s tím zápisem do souboru mám problém a nejde mi to.

Offline

 

#7 13. 03. 2011 22:42

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

ale potřebuji ještě dodělat to že velikost pole zadá uživatel. Udělal jsem to zatím jen natvrdo, prostě pole 10 x 10. Nějak musím začít :D

Offline

 

#8 14. 03. 2011 10:53 — Editoval gladiator01 (14. 03. 2011 18:09)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:
Z tebe to teda leze.

Jestli ty čísla mají být za sebou, tak prostě fci ve které naplňuješ pole přidáš ještě jeden parametr N (případně dva (N,M) jestli nemusí být čtvercová) a uloží se tolik čísel kolik je N*N (N*M) (rozměr matice).
Potom jenom obrátíš sudé řádky a je to.

Nebo jak načítáš ty hodnoty do pole?

Zápis do souboru

Code:

//Formátovaný zápis do souboru
            String string="soubor.txt";
                        FileWriter out;
            PrintWriter outP;
            

            out = new FileWriter(string, false);
            outP = new PrintWriter(out, true);

            for (int i = 0; i < pole.lenght; i++)
                for (int j = 0; j < pole.lenght; j++) {
                    outP.write(pole[i][j] + " ");
                    if (j == pole.lenght-1)
                        outP.write("\n");
                }

            out.close();
            outP.close();

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#9 14. 03. 2011 13:39

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

Tohle je na mě už trošku složitější mohli byste mi to hodit do tohodle kódu :

package cviceni3;

public class Main
{


    public static void main(String[] args)
    {
        int [][]pole = new int [10][10];
        int pom  = 1;
        int pom2 = 20;

        for(int i=0;i<10;i++)
        {
                        for(int j=0;j<10;j++)
                        {
                               if(i%2 == 0)
                               {
                                       pole[i][j]=pom++;
                                       System.out.print(" "+pole[i][j]);
                               }
                               else
                               {
                                       pole[i][j]=pom2--;
                                       System.out.print(" "+pole[i][j]);
                               }
                        }

                        if(i%2 == 0)
                        {
                            pom2 = pom+9;
                        }
                        else
                        {
                            pom = pom2+11;
                        }

                        System.out.println();

       }
    }
}

Offline

 

#10 14. 03. 2011 18:04 — Editoval gladiator01 (14. 03. 2011 18:27)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:

Jednoduché, přidáš si třídu soubor(string, pole[][])

Code:

public static void soubor(String string, int pole[][]) {
    try {
            // Formátovaný zápis do souboru
             FileWriter out;
              PrintWriter outP;
              
                  out = new FileWriter(string, false);
                  outP = new PrintWriter(out, true);

            for (int i = 0; i < pole.length; i++)
                for (int j = 0; j < pole.length; j++) {
                    outP.write(pole[i][j] + " ");
                    if (j == pole.length-1)
                        outP.write("\n");
                }

            out.close();
            outP.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

a zavoláš jí v main

Code:

soubor("soubor.txt", pole);

Ten kód máš dost konkrétní, takže ho budeme muset trochu změnit
  - čísla nahradíš proměnnou ve které máš uloženou velikost a nějak jí upravíš, aby odpovídala původní konkrétní hodnotě (přičteš, odečteš, ....něco)
Umíš načíst číslo z klávesnice do proměnné?


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#11 14. 03. 2011 21:48

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

Asi bych to nějak zvládnul no, nechceš mi s tím radši pomoci? potřeboval bych to nějak dát celý dohromady, protože jak to mám teď rozkouskovaný tak se v tom začínám strácet. Díky moc

Offline

 

#12 14. 03. 2011 22:00

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:
Dobře teda, i když to není moc pedagogické.

Code:

package cviceni3;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class RazeniPole {
    //nacteni cisla z klavesnice
    public static int ctiInt() {
        byte[] pole = new byte[20];
        String nacteno;
        int i;

        try {
            System.in.read(pole);
            nacteno = new String(pole).trim();
            i = Integer.valueOf(nacteno).intValue();
            return i;
        } catch (IOException e) {
            System.out.println("Chybne nactene cislo!");
            return 0;
        }
    }

    public static void soubor(String string, int[][] pole) {
        try {
            // Formátovaný zápis do souboru
            FileWriter out;
            PrintWriter outP;

            out = new FileWriter(string, false);
            outP = new PrintWriter(out, true);

            for (int i = 0; i < pole.length; i++)
                for (int j = 0; j < pole.length; j++) {
                    outP.write(pole[i][j] + " ");
                    if (j == pole.length - 1)
                        outP.write("\n");
                }

            out.close();
            outP.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        int n = 0, k = 1, l = 1;
        System.out.print("Zadej velikost pole: ");
        n = ctiInt();

        int[][] pole = new int[n][n];
        int pom = 1;
        int pom2 = 2 * n;

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (i % 2 == 0) {
                    pole[i][j] = pom++;
                    System.out.print(" " + pole[i][j]);
                } else {
                    pole[i][j] = pom2--;
                    System.out.print(" " + pole[i][j]);
                }
            }

            if (i % 2 == 0) {
                pom2 = pom + (n - 1);
            } else {
                pom = pom2 + (n + 1);
            }

            System.out.println();

        }
               //volání fce pro zápis do souboru
        soubor("soubor.txt", pole);
    }
}

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#13 15. 03. 2011 00:02 — Editoval RePRO (15. 03. 2011 00:36)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

Ahoj,
jenom doplním k Tvému (OOP) kódu:

1] K prvnímu bodu Ti dám plus, líbí se mi statika... Použití u souborů zcela na místě. ;-)
2] Pokud děláš catch (IOException e), pak to e můžeš přesně vypsat (myslím, že u toho dalšího už to máš správně).
3] Existují privátní proměnné třídy resp. datové složky třídy? Proč to píšu? Protože tím jsem chtěl říct, že bych to řešil tak, že bych raději vytvořit třídu Matice, kde by privátní položky tvořily počet sloupců, počet řádků (počet řádků postačí) + samotná matice (dvourozměrné pole). Výhoda je třeba v tom, že by Ti odpadl/y parametr/y z metody soubor! :-)

Takže bych si představoval opět něco podobného:

Code:

public class Matice
{ 
   private int[][] pole;
   private int pocetRadku;
   private string str;
   
   public Matice() 
   {
      // vytvoření matice
   }

   public static int ctiInt()
   {
      // ... 
   }

   public static void soubor()
   {
      // ... 
   }  
}

4] Hlavní metodu Main (nevím jak vy ve škole) bych dal (já osobně) do nové třídy (ale to je jenom otázka zvyku a přehlednosti).
5] Konstruktor/destruktor? Pokud používáš implicitní (bez parametrů), tak ok.
6] Jinak samozřejmě by to šlo rozložit (dále) na atomické objekty (jelikož takto to není ještě zcela úplně správně, ale dá se to pojmout a použít). Další třídu, o které bych nejspíš přemýšlel by byla třída řazení . Jednalo by se o abstraktní třídu, která by pak měla potomky select sort, insert sort, či třeba merge sort. No a objekt Matice by pak komunikoval právě s řazením... :-) Uff, to jsem se zase po dlouhé době rozepsal, tak asi tak. :-)

Jinak vidím, že autor je v začátcích, tak určitě Tvé řešení je optimální... Jednoduše, školním programátorským způsobem. No hlavně, že to bude fungovat, viď? :-) :-) :-) Pro tu jednoduchost můžeš přidat do mé třídy Matice ještě metodu Bubble sort. Jak říkám, nebude to úplně atomicky dobře, ale pro jednoduchou ukázku a demonstraci to zcela postačí. :-) :-)


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#14 15. 03. 2011 12:55

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ RePRO:
Díky za doplnění, já jsem mu to nechtěla zbytečně komplikovat a měnit (a abych řekla pravdu, tak jsem nad tím moc nepřemýšlela (a v Javě se také moc nevyznám) - nejsem tady od toho, abych mu programovala úkoly).

2] Pokud děláš catch (IOException e), pak to e můžeš přesně vypsat (myslím, že u toho dalšího už to máš správně).

Otázka je zda by tomu výpisu bylo rozumět. Určitě je dobře obojí (Herout by asi nenapsal v knize blbost).

3,5,6 - Souhlasím, kdybych to dělala pro sebe, tak bych to také tak udělala.

No hlavně, že to bude fungovat, viď?

Tohle jsi mohl odpustit.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#15 18. 03. 2011 11:49

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

Omlouvám se že znovu otravuji, ale nejde mi tento program spustit, mám problém se třídou a nevím jak to řešit. Děkuji za odpověď

Offline

 

#16 18. 03. 2011 14:06

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:
Třída se musí jmenovat stejně jako soubor. Ty jsi si předtím pojmenoval soubor (a třídu) Main a já tam mam RazeniPole, tak budťto přejmenuj soubor nebo třídu.

Jestli používáš eclipse, tak si označ název třídy a pravým tlačítkem myši vyvolej menu -> QuickFix -> některou z položek (třeba první, pak se ti přejmenuje název souboru podle názvu třídy) .


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#17 22. 03. 2011 10:17

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:
Už ti to funguje? Jestli ano a nemáš už další dotazy, tak označ za vyřešené.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#18 22. 03. 2011 18:36

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

Vše je naprosto OK velice děkuji, jen bych se chtěl zeptat jestli by šlo při tom ukládání do souboru, uložit to pole přesně jak je vypsané v konzoli, tzn. s tím odřádkováním. Děkuji moc

Offline

 

#19 22. 03. 2011 19:02 — Editoval RePRO (22. 03. 2011 19:02)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

Použiješ new line, což se dělá programátorsky takto:  "\n".


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#20 23. 03. 2011 17:33

Feers
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

oki super za vše :)

Offline

 

#21 23. 03. 2011 18:03 — Editoval gladiator01 (23. 03. 2011 18:06)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pomoc s Javou, jednoduchá hra s Dvou-rozměrným polem

↑ Feers:
Aby se ti v souboru skutečně odřádkovalo musíš dát místo outP.write("\n"); tohle outP.write("\r\n"); (pokud máš windows)


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson