16 gennaio 2004



    1. Indicare l'output del seguente programma:
      #include <stdio.h>

      int RIC(int x) {
        int y;

        if(x <=0) {
          return x;
        }
        else {
          y = RIC(x - 2);
          printf("%d\n", y + 1);
          return y;
        }
      }

      void main() {
        int n;

        printf("inserisci un intero: ");
        scanf("%d", &n);
        printf("%d\n", RIC(n));

      }
    2. Indicare l'output del seguente programma:

      #include <stdio.h>

      int fun(int n) {
        int result = 0;
        if(n == 1) {
          return 1;
        }
        else {
          if(n % 2 == 0) {
            result = fun(n - 1);
          }
          else {
            result = n + fun(n - 1);
          }
          return result;
        }
      }

      void main() {
        printf("%d\n", fun(10));
      }
    3. Indicare l'output del seguente programma:
      #include <stdio.h>

      int s(int a[], int b) {
        if (b < 1) {
          return 0;
        }
        if(b == 1) {
          return a[0];
        }
        return a[b - 1] + s(a, b - 1);
      }

      void main() {

        /* Inizializzo l'array con i valori 1,2,5,4,10 */
        int v[] = {1, 2, 5, 4, 10};

        printf("%d\n", s(v, 4));
      }
    4. Indicare l'output del seguente programma:
      #include <stdio.h>

      int funz(int dim, int s[]) {
        int n;
        printf("chiamata la funzione funz\n");
        if(dim < 0) {
          return 0;
        }
        n = s[dim] + funz(dim - 1, s);
        return n;
      }

      void main() {
        int i, j, tot;
        int s[100];
        printf("Inserisci un numero intero positivo: ");
        scanf("%d%*c", &i);
        if(i < 99) {
          for(j = 0; j < i; j = j + 1) {
             printf("Inserisci un numero intero: ");
             scanf("%d%*c", &s[j]);
          }
          tot = funz(j - 1, s);
          printf("%d\n", tot);
        }
      }
    5. Implementare il tipo di dato astratto SET (insieme di interi) utilizzando una lista dinamica. Si implementi la funzione InserisciElemento in modo tale che SET non contenga due dati uguali. Infine si realizzino le funzioni Unione e Intersezione

    6. Si utilizza una lista collegata a puntatori per rappresentare un polinomio a coefficienti interi di una variabile intera. Definire mediante un'opportuna dichiarazione di tipo, una struttura di nome ELEM_POLINOMIO con tre campi di nome co, exp (di tipo intero) e next (di tipo puntatore) che corrisponda agli elementi della lista. Si implementi una funzione per il calcolo delle potenze intere positive di numeri interi e una funzione che ricevendo come parametri un puntatore al primo elemento della lista e un valore per la variabile x, calcoli e restituisca il valore del polinomio.

    7.  Scrivere un programma che conta le occorrenze di una stringa x in un testo t, ponendo il codice che effettua il conteggio in una funzione