Program wypisujący możliwe kombinacje z liczb w tabelach

0

Witam.
Czy ktoś z forumowiczów byłby w stanie naprowadzić/podać link do programu wypisującego możliwe kombinacje z liczb w tabelach(lub bez tabel). Opiszę jak miałoby to wyglądać. W czterech oknach tabeli mogą się pojawić 3 różne liczby - w każdym oknie te liczby mogą się różnić. Liczby, z których mają być kombinacje mogę wybrać sama. Liczba wszystkich kombinacji to 81 - jeśli dobrze policzyłam. Na rysunku przedstawię mniej/więcej o co chodzi.

Możliwości przykładowych liczb w tabelach:

Pierwsze okno tabeli: 80 08 78
Drugie okno tabeli: 78 23 55
Trzecie okno tabeli: 37 00 38
Czwarte okno tabeli: 70 78 19

Przykładowa możliwość:

80
55
37
19

Wynik nie musi być w tabeli ale chciałabym aby poszczególne możliwości posiadały jakiś odstęp między sobą/były jedna pod drugą.

title

Nie posiadam wykształcenia informatycznego więc nie wiem czy jest to dla Was duży czy mały problem. Będę wdzięczna za każdą pomoc. Pozdrawiam.

0

Może coś w ten deseń

#include <iostream>
#define XMAX 4
#define YMAX 3

using namespace std;

void loadData(int tab[YMAX][XMAX]);
void printAllCombinations(int tab[YMAX][XMAX]);

int main()
{
    int tab[YMAX][XMAX];
    loadData(tab);
    printAllCombinations(tab);
    return 0;
}
void loadData(int tab[YMAX][XMAX])
{
    for(int i=0;i<YMAX;i++)
    {
        for(int j=0;j<XMAX;j++)
        {
            cout<<"Podaj tab["<<i<<"]["<<j<<"]: ";
            cin>>tab[i][j];
        }
    }
}

void printAllCombinations(int tab[YMAX][XMAX])
{
    for(int i=0;i<YMAX;i++){
        for(int j=0;j<YMAX;j++){
            for(int k=0;k<YMAX;k++){
                for(int m=0;m<YMAX;m++){
                    cout<<tab[i][0]<<" "<<tab[j][1]<<" "<<tab[k][2]<<" "<<tab[m][3]<<endl;
            }
        }
    }
}
}
0

https://wandbox.org/permlink/n7JdSSPrrEsnWW1f

template <typename Iter>
bool next_int_combination(Iter b, Iter e, const int valuesCount)
{
    for (auto it = b; it != e;) {
        ++*it;
        if (*it < valuesCount) return true;
        std::fill(b, ++it, 0);
        b = it;
    }
    return false;
}

int main(){
    int values[][3] {
        {  1,  2,  3 },
        {  4,  5,  6 },
        {  7,  8,  9 },
        { 10, 11, 12 }
    };
    
    int indexes[std::size(values)] {};
    for (bool hasNext = true; hasNext; 
         hasNext = next_int_combination(std::begin(indexes), std::end(indexes), std::size(values[0]))) 
    {
        int digit = 0;
        for (auto index : indexes) {
            std::cout << values[digit++][index] << ", ";
        }
        std::cout << std::endl;
    }
    return 0;
}

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