Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
#include <stdio.h>
int kupleP(int n, int k);
void printTuple(int * tuple, int k);
int isValidTuple(int * tuple, int k, int n, int result);
int isSorted(int * tuple, int k);
void countValidTuples(int * chosen, int * arr, int index,
int r, int start, int end, int * counter, int n);
int main() {
int n, k;
printf("N: ");
scanf("%d", & n);
printf("K: ");
scanf("%d", & k);
printf("\nIl numero delle %d-uple di %d è: %d\n", k, n, kupleP(n, k));
return 0;
}
int kupleP(int n, int k) {
// Creo un array che utilizzerò per le permutazioni
// e lo inizializzo con i valori [1,2,3,4,...,n]
int arr[n];
for (int i = 0; i < n; i++)
arr[i] = i + 1;
int s = sizeof(arr) / sizeof(arr[0]);
int chosen[k + 1];
int counter = 0;
if (k > 1)
countValidTuples(chosen, arr, 0, k, 0, s - 1, & counter, n);
else
counter = 1;
return counter;
}
// Controlla se il prodotto della tupla è N
int isValidTuple(int * array, int k, int n, int result) {
if (k == -1) {
return (result == n) ? 1 : 0;
} else {
return isValidTuple(array, k - 1, n, result * array[k]);
}
}
// Controlla se la tupla è ordinata
int isSorted(int * array, int k) {
if (k == 0) {
return 1;
} else {
if (array[k] >= array[k - 1]) {
return isSorted(array, k - 1);
} else {
return 0;
}
}
}
// Genera tutte le tuple ed incrementa il contatore
void countValidTuples(int * chosen, int * arr, int index,
int r, int start, int end, int * counter, int n) {
if (index == r) {
int temporaryTuple[r];
for (int i = 0; i < r; i++) {
temporaryTuple[i] = arr[chosen[i]];
}
if (isSorted(temporaryTuple, r - 1) == 1 &&
isValidTuple(temporaryTuple, r - 1, n, 1) == 1) {
printTuple(temporaryTuple, r);
* counter = * counter + 1;
}
return;
}
for (int i = start; i <= end; i++) {
chosen[index] = i;
countValidTuples(chosen, arr, index + 1, r, i, end, counter, n);
}
return;
}
// ------------------------------
void printTuple(int * tuple, int k) {
for (int i = 0; i < k; i++) {
printf("%d ", tuple[i]);
}
printf("\n");
}
#include <stdio.h>
int main()
{
double firstNumber, secondNumber, temporaryVariable;
printf("Enter first number: ");
scanf("%lf", &firstNumber);
printf("Enter second number: ");
scanf("%lf",&secondNumber);
// Value of firstNumber is assigned to temporaryVariable
temporaryVariable = firstNumber;
// Value of secondNumber is assigned to firstNumber
firstNumber = secondNumber;
// Value of temporaryVariable (which contains the initial value of firstNumber) is assigned to secondNumber
secondNumber = temporaryVariable;
printf("\nAfter swapping, firstNumber = %.2lf\n", firstNumber);
printf("After swapping, secondNumber = %.2lf", secondNumber);
return 0;
}