Jak działa ten program?

Jak działa ten program?
DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 53
0

Witam,
może mi ktoś wyjaśnić na jakiej zasadzie działa ten program? Ma on za zadanie liczyć permutacje wskazanego skończonego ciągu.
O co właściwie chodzi przy sprawdzaniu p==1? Czym jest ta zmienna? W pierwszym if wypisujemy w pętli wszystkie liczby od 1 do n. Ale nie wiem co robi kod w else? No i sama funkcja - permutacja? Pomoże ktoś? :-(

Kopiuj
 #include <stdio.h>

// n - ostatnia liczba zbioru


void permutacja(int T[], int p, int n) {
	
	if(p==1) {
		int i; // deklaracja zmiennej pomocniczej
		for(i=0; i<n; i++) {
			printf("%d ", T[i]); // wypisz każdą liczbę w linii dopóki nie przekroczy najwiekszej liczby zbioru - n
		}
		printf("\n");
	}
	else {
		int S[n];
		int i;
		for(i=0; i<n; i++)
			S[i]=T[i];
		for(i=0; i<p; i++)
	{
		permutacja(S, p-1, n);
		int t = S[i];
		S[i] = S[p-1];
		S[p-1] = t;
		}
	}		
}

void nazwa(int n)
{
	int T[n];
	int i;
	for(i=0; i<n; i++)
		T[i] = i+1;
	permutacja(T,n,n);
}

main() {

	printf("Podaj ostatnia liczbe zbioru: ");	
	int n;
	scanf("%d", &n);
	nazwa(n);
	
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Strasznie wolno, niepotrzebnie bazgroląc w dodatkowej tablice.

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
int S[n];
  • Normalny kompilator tego by nie przepuscil.
DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 53
0
_13th_Dragon napisał(a):

Strasznie wolno, niepotrzebnie bazgroląc w dodatkowej tablice.

No trudno, ale działać działa. :)

DamianPrg napisał(a):
Kopiuj
int S[n];
  • Normalny kompilator tego by nie przepuscil.

To jak powinno być? :)

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 53
0

A może mi chociaż ktoś powiedzieć czym jest zmienna p?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.