Pseudokod przeniesienie na C++

0

Witam,
Dostałem zadanie aby wygenerować plik tekstowy, który zawiera wszystkie k-elementowe podzbiory zbioru {1,...,n} w porządku leksykograficznym.

mam następujący pseudokod do zamiany na kod w C++, prezentuje on się następująco:

begin
       for i:=1 to k do A[i] := i; (*pierwszy pozdbiór*)
       p:=k;
       while p>=1 do
               begin write (A[1],...,A[k]);
                       if A[k] = n then p:=p-1; else p:=k;
                       if p>=1 then
                              for i:=k downto p do A[i] := A[p] + i - p + 1;
      end
end

Zrobiłem coś takiego, niestety nie działa tak jak powinien. (zapis do pliku pominięty)

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	int n, k;
	cin >> n;
	do
	{
		cin >> k;
	} while (k > n); 
	
	int *tab = new int[k];
	int p = k;
	for (int i = 1; i <= k; i++)
	{
		tab[i - 1] = i;
		cout << tab[i - 1] << endl;
	}
			do
			{
				cout << tab[k-1];
				if (tab[k-1] == n)
				{
					p = p - 1;
				}
				else
				{
					p = k;
				}
				if (p >= 1)
				{
					for (int i = k; k>p; i--)
					{
						tab[i-1] = tab[p-1] + i - p + 1;
					}
				}
			} while (p >= 1);

	
	getchar();
	getchar();
	return 0;
} 
0

for i:=k downto p do A[i] := A[p] + i - p + 1;
to nie jest

for (int i = k; k>p; i--)
                    {
                        tab[i-1] = tab[p-1] + i - p + 1;
                    } 

warunek w for jest bez sensu.

1
cin >> n;
do
{
    cin >> k;
} while (k > n); 
 
int *tab = new int[k];

  1. Wczytujesz liczby do k, a potem je wyrzucasz.

  2. Co ten warunek zakończenia ma znaczyć?

  3. A potem tworzysz tablicę wielkości k

  4. Popraw wcięcia: http://format.krzaq.cc/

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