TORRE DI HANOI

di il
18 risposte

18 Risposte - Pagina 2

  • Re: TORRE DI HANOI

    Salve a tutti!
    Seguendo la logica di questo esercizio, il mio problema è quando gli passo dei valori presenti in un file di input costituito da 100 righe composte da N e M( "n" per il numero dei dischi, "m" per la mossa di cui voglio i dettagli).
    Dà il giusto output solamente per la prima riga.
    Cos'è che sbaglio?Sono due giorni che ci sbatto la testa senza trovare soluzione
    Spero possiate aiutarmi, ve ne sarei grata.
    
    #include <iostream>
    #include <string>
    #include<fstream>
    
    using namespace std;
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    
    int mossa = 0;
    void hanoi(int disk, int mov, int start, int end, int free) {
    	if (disk == 1) {
    		mossa++;
    		if(mossa == mov){
    			fout << "Muovi il disco " << disk << " dal piolo " << start << " al piolo " << end << endl;
    		}
    	}
    	else {
    		hanoi(disk-1, mov, start, free, end); 
    		mossa ++;
    		if(mossa == mov){
    			fout << "Muovi il disco " << disk << " dal piolo " << start << " al piolo " << end << endl;
    		} 
    		hanoi(disk-1, mov, free, end, start);
    	}
    }
    
    int main() {
    	int n;
    	int m;
    	for(int i=0; i<100; i++){
    		fin >> n;
    		fin >> m;
    		hanoi(n,m,1,3,2);
    	} 
    }
    
  • Re: TORRE DI HANOI

    Prova così:
    int main() {
    	int n;
    	int m;
    	for(int i=0; i<100; i++){
    		fin >> n;
    		fin >> m;
    		hanoi(n,m,1,3,2);
    		mossa = 0;
    	} 
    }
    
  • Re: TORRE DI HANOI

    Ecco cosa succede ad avere variabili globali…
  • Re: TORRE DI HANOI

    Andrea Quaglia ha scritto:


    Prova così:
    int main() {
    	int n;
    	int m;
    	for(int i=0; i<100; i++){
    		fin >> n;
    		fin >> m;
    		hanoi(n,m,1,3,2);
    		mossa = 0;
    	} 
    }
    
    Una variabile globale mi ha fatta impazzire! Grazie, grazie e ancora grazie...problema risolto
Devi accedere o registrarti per scrivere nel forum
18 risposte