Program cały czas zwraca ten sam wynik. Jak użyć wektora?

0

Witam.
Próbuję przetestować program zajmujący się wieżami Hanoi, jednak cały czas zwraca mi wynik 1.
Możliwe, że problem jest w main-ie. Nie wiem czy dobrze używam funkcji vector.
Jak mam go uruchomić żeby działał dobrze?

#include <iostream>
#include <vector>

using namespace std;

void move(int number_of_disks, int source, int dest, vector <int> free_peg);

int main()
{
    move(10, 1, 5, vector <int> (3, (2,3,4)));
    cout << move;
}

void move(int number_of_disks, int source, int dest, vector <int> free_peg)
    {
        int p, middle, g;
        int moves;

        if (1 == number_of_disks)
        {
            moves++;
            int move_top_disk (string source, string dest);
        }

        else
        {
            moves++;

            if(free_peg.size() >= 2)
                p = number_of_disks/2;
            else
                p = number_of_disks - 1;

            //Move top "p" disks from peg 1 to peg i
            middle = free_peg.back();
            free_peg.pop_back();
            free_peg.push_back(dest);
            move(p, source, middle,free_peg);

            //Move "n - p " disks from peg 1 to another peg
            free_peg.pop_back();
            move(number_of_disks - p, source, dest, free_peg);

                    //Move p from current peg to the final peg
            free_peg.push_back(source);
            move(p, middle, dest, free_peg);
        }
    }
0

o_O
Tak na oko to chciałeś zrobić

accumulator = vector <int> (3, (2,3,4));
move(10, 1, 5, accumulator);
// pętla wypisujaca wektor

Bo teraz to są jakieś bzdury. move to funkcja więc zupełnie nie ma sensu cout << move. Wywołanie tej funkcji też nie ma sensu linijkę wyżej, bo funkcja nie zwraca żadnej wartości :D

0

Ja dodam, że twoja struktura obiektów jest bezsensu.
Jeden słupek powinien być opisany przez coś co opisuje nie tylko liczbę krążków ale ich wielkości. Słupków masz kilka, dlatego powinno być coś co opisuje kilka słupków.
Przykładowo może być to:
std::vector<std::vector<int>>, albo coś takiego std::vector<std::set<int>>.

Poza tym napisałeś, że na wyjściu masz cały czas jeden, ale w zasadzie nie wiadomo czego oczekujesz. Minimalna liczba ruchów potrzebnych? Sekwencja kolejnych ruchów? A może jeszcze coś innego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1