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.
Tutorialspoint

Esercizio 3

c

#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");
}

Compile and Execute C Online

c

#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;
}

Compile and Execute C Online

c

Unable to open file!