Anonymní profil Račanský Tomáš – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Račanský Tomáš – Programujte.comAnonymní profil Račanský Tomáš – Programujte.com

 

Příspěvky odeslané z IP adresy 90.177.127.–

Račanský Tomáš
Java › Hanojské věže - špatné zobra…
24. 1. 2013   #170638

Můžeš mi poslat ten kód nebo jenom tu rekurzívu?  já to tam prostě nevidim

Račanský Tomáš
Java › Hanojské věže - špatné zobra…
22. 1. 2013   #170554

Ahoj, jsem velký amatér v oblasti programování a do školy mám napsat program na hanojské věže.

To jak fungujou najdu všude, ale já potřebuju nějak vypisovat každý krok kde se jaký disk nachází a to sem nikde nenašel. Tady posílám kód, který sem horko těžko napsal, a mám tam problém s obrazováním nevim s rekurzí těch disků.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hanojskeuswa;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.Scanner;
import java.util.Stack;

/**
*
* @author Celnik
*/
public class Hanojskeuswa {
   
   

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        try {
                                                             // vytvoreni promenne pocetDisku
            BufferedReader fileOutReader = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("zadejte vystupni soubor");                 
            String fileOut = fileOutReader.readLine();                          //nacte vystup
            Scanner sc = new Scanner(System.in);                                //deklarace Scanneru
            System.out.println("zadejte pocet disku");
            int pocetDisku = sc.nextInt();                                          //ze vstupu nacte cislo - pocetDisku a prepise
            FileOutputStream vystup = new FileOutputStream(fileOut);            //pracuje se souborem vystup.txt
            try (PrintStream ps = new PrintStream(vystup)) {
                Stack<Integer> A, B, C;
                A = new Stack();
                B = new Stack();
                C = new Stack();
           
           

                for (int i = pocetDisku; i > 0; i--) {                              //prida do stacku A pocet disku
                    A.push(i);
                }

                ps.println("Prvni jehla: " + A + " Druha jehla: " + B + " Treti jehla: " + C);

                prenesVez(pocetDisku, A, B, C, ps);
            }
            System.out.println("hotovo");
        } catch (IOException e) {                                               //ochrana
            System.out.println("Chyba");
        }
    }

    private static void prenesVez(int pocetDisku, Stack<Integer> odkud, Stack<Integer> kam, Stack<Integer> pomoc, PrintStream ps) {
        if (pocetDisku > 0) {                                                   // jestlize je pocetDisku > 0 provede cyklus
            prenesVez(pocetDisku - 1, odkud, pomoc, kam, ps);                  
            kam.push(odkud.pop());
           
            ps.println("Prvni jehla: " + odkud + " Druha jehla: " + pomoc + " Treti jehla: " + kam);
            prenesVez(pocetDisku - 1, pomoc, kam, odkud, ps);
        }
       
    }
   
}

Při spuštění se program zeptá jak se má jmenovat soubor do kterého se uloží umístění disků. (např. test.txt)

potom počet disků a když zadám třeba 3, tak se zobrazí toto:

Prvni jehla: [3, 2, 1] Druha jehla: [] Treti jehla: []
Prvni jehla: [3, 2] Druha jehla: [] Treti jehla: [1]
Prvni jehla: [3] Druha jehla: [1] Treti jehla: [2]
Prvni jehla: [] Druha jehla: [3] Treti jehla: [2, 1]
Prvni jehla: [] Druha jehla: [2, 1] Treti jehla: [3]
Prvni jehla: [2] Druha jehla: [3] Treti jehla: [1]
Prvni jehla: [] Druha jehla: [1] Treti jehla: [3, 2]
Prvni jehla: [] Druha jehla: [] Treti jehla: [3, 2, 1]

já potřebuju tohle:

Prvni jehla: [3, 2, 1] Druha jehla: [] Treti jehla: []
Prvni jehla: [3, 2] Druha jehla: [] Treti jehla: [1]
Prvni jehla: [3] Druha jehla: [2] Treti jehla: [1]
Prvni jehla: [3] Druha jehla: [2, 1] Treti jehla: []
Prvni jehla: [] Druha jehla: [2, 1] Treti jehla: [3]
Prvni jehla: [1] Druha jehla: [2] Treti jehla: [3]
Prvni jehla: [1] Druha jehla: [] Treti jehla: [3, 2]
Prvni jehla: [] Druha jehla: [] Treti jehla: [3, 2, 1]

Díky za každou pomoc.

 

 

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