Corso LP 98/99: Esercizi per la prova di laboratorio

Esercizio 1
Completare il seguente schema di programma C come indicato dai commenti, e quindi testare la sua correttezza facendolo eseguire.
...
/*dichiarare un tipo, di nome MATRICE,
  per le matrici quadrate la cui dimensione può variare da 1 a 30*/

...

/*dichiarare una funzione che preso un elemento di MATRICE ritorna il
  suo elemento massimo ed i suoi indici 
  (se esistono più massimi vanno bene gli indici di uno a scelta)*/
............

/*dichiarare una funzione che controlla se un elemento di MATRICE è
  diagonale */

............

main()
{  
    MATRICE A ;
    
    /*assegnare ad A una matrice 4 x 4 */
    ....
    
    /*stampare il valore massimo di A con i suoi indici sullo 
      standard output*/
    ....
    
    /*stampare sullo standard output se A è o no diagonale*/
    .....
}
Ritornare il risultato su un file di nome TEST1cognome.c; il file con lo schema del programma da completare si trova qui.
Esercizio 2
Completare il seguente schema di programma C come indicato dai commenti, e quindi testare la sua correttezza facendolo eseguire.
......
/*dichiarare un tipo per le successioni di interi di lunghezza minore 
  o uguale a K, dove K è una costante fissata*/
......

/*dichiarare una funzione che realizzi l'operazione di chop definita come segue
  chop(<a1,...,an>) = <a1,... an-1>      se n > 0
  chop(<>)   indefinito/errore/non si può fare      altrimenti */
................

/*dichiarare una funzione che realizzi l'operazione append definita come segue
  append(<a1,...,an>,<b1,...,bm>) = <a1,...,an,b1,...,bm>     se n+m < K
  indefinito/errore/non si può fare             altrimenti */
.....

main()
{
    /*assegnare a due variabili distinte, S1 e S2, le successioni 1 3 5 7 e 
    2 4 6 8 10 12 */
    ........
    
    /*"choppare" S1 e stampare la successioni risultante*/
    .....
    
    /*appendere S1 a S2 e stampare la successioni risultante*/
    ........
}
Ritornare il risultato su un file di nome TEST2cognome.c; il file con lo schema del programma da completare si trova qui.
Esercizio 3
Completare il seguente schema del programma da completare C come indicato dai commenti, e quindi testare la sua correttezza facendolo eseguire.
......
/*dichiarare un tipo per le successioni di interi di lunghezza qualsiasi*/
......

/*dichiarare una funzione che realizzi l'operazione di chop definita come segue
  chop(<a1,...,an>) =  <a1,... an-1>      se n > 0
  chop(<>)   indefinito/errore/non si può fare      altrimenti */
................

/*dichiarare una funzione che realizzi l'operazione append definita come segue
  append(<a1,...,an>,<b1,...,bm>) =  <a1,...,an,b1,...,bm>     se n+m < K
  indefinito/errore/non si può fare             altrimenti */
.....

main()
{
    /*assegnare a due variabili distinte, S1 e S2, le successioni 1 3 5 7 e 
    2 4 6 8 10 12 */
    ........
    
    /*"choppare" S1 e stampare la successioni risultante*/
    .....
    
    /*appendere S1 a S2 e stampare la successioni risultante*/
    ........
}
Ritornare il risultato su un file di nome TEST3cognome.c; il file con lo schema del programma da completare si trova qui.
Esercizio 4
Si consideri la struttura dati doppia lista di caratteri e reali, di cui un esempio è presentato graficamente di seguito.

Completare il seguente schema del programma da completare C come indicato dai commenti, e quindi testare la sua correttezza facendolo eseguire.

......
/*dichiarare un tipo per le doppie liste utilizzando i puntatori*/
......

/*dichiarare una funzione che stampa i numeri associati ad un dato carattere 
  in una data doppia lista */
................

/*dichiarare una funzione che aggiunge un numero alla lista associata ad un 
  dato carattere, 
  se il carattere non è presente, aggiunge un elemento alla prima lista*/
.....

main()
{
    /*dichiarare una variabile DL del tipo doppia lista e inizializzarla in 
      modo che non contenga alcun carattere ed alcun numero*/
    ....
    
    /*aggiungere di seguito alla lista in DL 
      3 associato ad A, 5 associato a B, 5 associato ad A, 7 associato ad F, 
      7 associato ad A, 7 associato a B*/
    ........
    
    /*stampare i numeri associati ad F*/
    .....
    
    /*stampare i numeri associati ad A*/
    .....
}
Ritornare il risultato su un file di nome TEST4cognome.c; il file con lo schema del programma da completare si trova qui.
Esercizio 5
Completare il seguente schema di programma C come indicato dai commenti, e quindi testare la sua correttezza facendolo eseguire.
In questo caso il progetto deve includere i file del modulo di input/output di base utilizzati nell'esercitazione (interfaccia e body).
......
......

#include "BASICIO.h"

................

main()
{
    /*Leggere  il nome di un file, sia esso EFFE, e di un file 
      di interi positivi in ordine crescente (che identificano
      linee in EFFE), sia esso ELLE, 
      rimuovere da EFFE tutte le linee di testo indicate in ELLE.*/
    .....
}
Ritornare il risultato su un file di nome TEST5cognome.c; il file con lo schema del programma da completare si trova qui.