ESAME 15-07-99 (C)

Questionario cartaceo

Rispondere alle seguenti domande:
  1. Trasformare il seguente numero in base 7 nel corrispondente in base 9:
    123
  2. Che cosa stampa il seguente programma C?
    #include <stdio.h>
    #include <stdlib.h>
    
    int * x;
    
    void F(int y)
    {   int *z;
        z = (int *)malloc(sizeof(int));
        *z = y;
        x = z;
    }
    
    main()
    {   int i, w = 7;
        for(i=1; i <= 5; i = i * 2){
            F(i);
            printf("...%d...\n",*x); };
    }
  3. Descrivere brevemente in modo schematico la storia di un programma C partendo da quando viene scritto sulla carta fino a quando il computer ritornerà i suoi risultati.
  4. Completare il seguente frammento di programma C come indicato dai commenti:
    #include < stdio.h>
    #include < stdlib.h>
    
    typedef struct ALB *ALBERO;
    struct ALB { float ELEM;
                  ALBERO SINISTRO;
                  ALBERO DESTRO;   } ;
              
    BOOL APPARTIENE(ALBERO a, float e)
    /*questa funzione controlla se e appartiene all'albero a,
      cioe' se si trova in uno dei suoi nodi */
    {......}

Parte laboratorio

Completare il seguente programma C come indicato dai commenti
#include <stdio.h>

/*gli elementi del tipo IMMAGINE rappresentano delle immagine a colori in modo digitale, ogni*/
/*elemento della matrice rappresenta un colore secondo un opportuno meccanismo di codifica */

#define H 5
#define L 7  /*altezza e larghezza delle immagini*/

typedef int IMMAGINE[H][L];

/* sottoprogramma che controlla se un'immagine e' a bande orizzontali */
/* per esempio  quella che segue lo e'        3 3 3 3 3 3 3
                                              3 3 3 3 3 3 3
                                              4 4 4 4 4 4 4
                                              2 2 2 2 2 2 2
                                              2 2 2 2 2 2 2
   mentre quest'altra non lo e'   3 3 3 3 3 3 3
                                  3 3 3 0 3 3 3
                                  4 4 4 4 4 4 4
                                  2 2 2 2 2 2 2
                                  2 2 2 2 2 2 2              */
........

/* sottoprogramma che controlla se un'immagine e' a righine verticali */
/* per esempio  quella che segue lo e'  3 4 3 4 3 4 3
                                        3 4 3 4 3 4 3
                                        3 4 3 4 3 4 3
                                        3 4 3 4 3 4 3
                                        3 4 3 4 3 4 3
   mentre quest'altra non lo e'   3 4 3 3 3 4 3
                                  3 4 3 3 3 4 3
                                  3 4 3 3 3 4 3
                                  3 4 3 3 3 4 3
                                  3 4 3 3 3 4 3              */
............

/* sottoprogramma che controlla se un'immagine e' a quadretti */
/* per esempio  quella che segue lo e'    3 0 3 0 3 0 3
                                          0 3 0 3 0 3 0
                                          3 0 3 0 3 0 3
                                          0 3 0 3 0 3 0
                                          3 0 3 0 3 0 3
   mentre quest'altra non lo e'   3 3 0 0 0 0 0
                                  3 3 0 0 0 0 0
                                  0 0 3 3 3 3 3
                                  0 0 3 3 3 3 3
                                  0 0 3 3 3 3 3    */
.............
main()
{  /* testare adeguatamente le procedure definite sopra*/
   /* evitare di definire un sottoprogramma per leggere una matrice */
...... 
}