Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2...

34
Corso di Laboratorio di Informatica Ingegneria Clinica – BCLR 3 Esercizi Esame Domenico Daniele Bloisi

Transcript of Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2...

Page 1: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Corso di Laboratorio di InformaticaIngegneria Clinica – BCLR

3

Esercizi Esame

Domenico Daniele Bloisi

Page 2: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Docente

Ing. Domenico Daniele Bloisi, PhDRicercatore

Dipartimento di Ingegneria Informatica, Automaticae Gestionale “Antonio Ruberti”Via Ariosto 25(adiacente Piazza Dante,

fermate Manzoni, Vittorio Emanuele,

Tram 3 fermata via Labicana)

Email: [email protected]

Home page: http://www.dis.uniroma1.it/~bloisiPagina 22013/2014Esercizi Esame

3

Page 3: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Ricevimento

In aula, subito dopo le lezioni Su appuntamento (tramite invio di una email) presso: Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti, via Ariosto 25 - II piano, stanza A209

Si invitano gli studenti a controllare regolarmente la bacheca degli avvisihttp://www.dis.uniroma1.it/~bloisi/didattica/labinf1314.html#Avvisi

Pagina 32013/2014Esercizi Esame3

Page 4: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Orari

Lunedì 12.00 – 13.30 Aula 15, via Scarpa 14

Lunedì 14.00 – 17.15Aula 15, Laboratorio Didattico via Tiburtina 205

Martedì 14.00 – 15.30 Aula 16, via Scarpa 14

Mercoledì 12.00 – 13.30 Aula 15, via Scarpa 14

Pagina 42013/2014Esercizi Esame3

Page 5: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 1

Pagina 52013/2014Esercizi Esame3

Scrivere una funzione trasp che, dati in ingresso una matrice (rappresentata tramite puntatore a puntatore), la dimensione delle righe e la dimensione delle colonne, restituisca una nuova matrice (rappresentata tramite puntatore a puntatore) che sia la trasposta della matrice in ingresso.

Esempio

1 2 3 1 22 3 1 2 3 3 1

Inoltre, scrivere ...

Page 6: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 1

Pagina 62013/2014Esercizi Esame3

Inoltre, scrivere una funzione main che verifichi il comportamento della funzione traspLa matrice di cui si vuole calcolare la trasposta deve essere recuperata da file.Il formato del file in ingresso sarà:<R> <C><dato0> <dato1> … <datoC-1>…<datoR-1> <dato1> … <datoC-1>

2 33 3 54 62 71

Esempio

Page 7: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 1

Pagina 72013/2014Esercizi Esame3

//dichiarazione della funzione traspint** trasp(int**, int, int);

Page 8: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 1

Pagina 82013/2014Esercizi Esame3

int** trasp(int** mat, int r, int c){int i;int j;int** t = malloc(c * sizeof(int*));if(t == NULL)

return NULL;for(i = 0; i < c; i++) {

t[i] = malloc(r * sizeof(int));if(t[i] == NULL)

return NULL;}for(i = 0; i < r; i++) {

for(j = 0; j < c; j++) {t[j][i] = mat[i][j];

}}return t;

}

Definizione della funzionetrasp

Page 9: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 1

Pagina 92013/2014Esercizi Esame3

#include <stdlib.h>#include <stdio.h>

#define DEBUG 1

int main() {FILE* fd = fopen("dati.txt","r"); //FILE* fd = fopen("C:\\code\\dati.txt","r"); if(fd == NULL) {

fprintf(stderr, "Errore apertura file\n");return EXIT_FAILURE;

}else {

fprintf(stdout, "File aperto\n");}

path assoluto

path relativo

Page 10: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 1

Pagina 102013/2014Esercizi Esame3

int r, c; //numero di righe e colonnefscanf(fd, "%d", &r);fscanf(fd, "%d", &c);//creazione struttura dati per memorizzare i//dati letti da fileint** M = malloc(r * sizeof(int*));if(M == NULL) {

fprintf(stderr, "Errore M\n");return EXIT_FAILURE;

}int i, j;for(i = 0; i < r; i++) {

M[i] = malloc(c * sizeof(int));if(M[i] == NULL) {

fprintf(stderr, "Errore M[%d]\n", i);return EXIT_FAILURE;

}}

Page 11: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 1

Pagina 112013/2014Esercizi Esame3

//memorizzazione datifor(i = 0; i < r; i++) {

for(j = 0; j < c; j++) {fscanf(fd, "%d", &M[i][j]);

}}

#if DEBUGprintf("M\n");for(i = 0; i < r; i++) {//righe

for(j = 0; j < c; j++) {//colonneprintf("%d ", M[i][j]);

}printf("\n");

}printf("\n");

#endif

Page 12: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 1

Pagina 122013/2014Esercizi Esame3

//calcolo traspostaint** T = trasp(M, r, c);if(T == NULL) {

fprintf(stderr, "Errore funzione trasp\n");return EXIT_FAILURE;

}

printf("Trasposta\n");for(i = 0; i < c; i++) {//righe

for(j = 0; j < r; j++) {//colonneprintf("%d ", T[i][j]);

}printf("\n");

}

Page 13: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 1

Pagina 132013/2014Esercizi Esame3

for(j = 0; j < r; j++)free(M[j]);

free(M);for(j = 0; j < c; j++)

free(T[j]);free(T);

}

Page 14: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 2

Pagina 142013/2014Esercizi Esame3

Scrivere una funzione creaFileDecrescente che, preso in ingresso il nome di un file contenente interi, lo modifichi in modo da contenere gli stessi interi, ma in ordine inverso.

Esempio di file in input

Page 15: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esempio Esecuzione Esercizio 2

Pagina 152013/2014Esercizi Esame3

File interi.txt originale1 12 34 5 6 7 3 4 5 6 6 77 4 3 32 2 34 5 6 6 4 2 3 4 66 5 433 23 889 0 6 54

File interi.txt modificato54 6 0 889 23 433 5 66 4 3 2 4 6 6 5 34 2 32 3 4 77 6 6 5 4 3 7 6 5 34 12 1

Esempio di file in output

Page 16: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 162013/2014Esercizi Esame3

//prototipo per creaFileDecrescenteint creaFileDecrescente(const char* nomefile);

Page 17: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 172013/2014Esercizi Esame3

int creaFileDecrescente(const char* nomefile) {

FILE* fd = fopen(nomefile, "r");if(fd == NULL)

return 0;int i, count = 0, j = 0;while(!feof(fd)) {

if(fscanf(fd, "%d", &i) == 1) count++;

}

Page 18: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 182013/2014Esercizi Esame3

if(count == 0) return 0;

int array[count];rewind(fd);while(!feof(fd)) {

if(fscanf(fd, "%d", &i) == 1)array[j++] = i;

}fclose(fd);

Page 19: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Funzione rewind

Pagina 192013/2014Esercizi Esame3

Syntax:#include <stdio.h>void rewind( FILE *stream );

Description:The function rewind() moves the file position indicator to the beginning of the specified stream, also clearing the error and EOF flags associated with that stream.

Page 20: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 202013/2014Esercizi Esame3

fd = fopen(nomefile, "w");if(fd == NULL)

return 0;for(i = count-1; i >= 0; i--)

fprintf(fd, "%d ", array[i]);fclose(fd);return 1;

}

Page 21: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 212013/2014Esercizi Esame3

int main() {char *nomefile = "interi.txt";FILE* fd = fopen(nomefile, "r");if(fd == NULL) {

printf("errore apertura ""file %s\n", nomefile);

exit(EXIT_FAILURE);}

Page 22: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 222013/2014Esercizi Esame3

int i;printf("file %s originale\n", nomefile);while(!feof(fd)) {

if(fscanf(fd, "%d", &i) == 1) {printf("%d ", i);

}}printf("\n");fclose(fd);

Page 23: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 232013/2014Esercizi Esame3

if(creaFileDecrescente(nomefile)) {fd = fopen(nomefile, "r");if(fd == NULL) {

printf("Errore apertura file %s\n", nomefile);

exit(EXIT_FAILURE);}printf("file %s modificato\n",

nomefile);

Page 24: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 242013/2014Esercizi Esame3

while(!feof(fd)) {if(fscanf(fd, "%d", &i) == 1){

printf("%d ", i);}

}printf("\n");fclose(fd);

}

Page 25: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 2

Pagina 252013/2014Esercizi Esame3

else {printf( "errore in "

"creaFileDecrescente(%s)\n", nomefile);

exit(EXIT_FAILURE);}return EXIT_SUCCESS;

}

Page 26: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 3

Pagina 262013/2014Esercizi Esame3

Scrivere un programma che legga caratteri dalla tastiera e li scriva su un file “copia.txt” fino a che l'utente non immetta il carattere '$', nel qual caso il programma deve terminare verificando la corretta chiusura del file.

Esempiodigitare il testo da salvare$ per terminareeeeeesssssjtyrgesss$File copia.txt chiuso correttamente

Page 27: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esempio Output Esercizio 3

Pagina 272013/2014Esercizi Esame3

Page 28: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 3

Pagina 282013/2014Esercizi Esame3

#include <stdio.h>#include <stdlib.h>

int main() {char *nomefile = "copia.txt";FILE* fd = fopen(nomefile, "w");if(fd == NULL) {

printf("errore apertura file %s\n", nomefile);

return EXIT_FAILURE;}

Page 29: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 3

Pagina 292013/2014Esercizi Esame3

printf("digitare il testo da salvare\n");printf("$ per terminare\n");int c = getchar();while(c != '$' && c != EOF) {

fprintf(fd, "%c", c);c = getchar();

}

Page 30: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Soluzione Esercizio 3

Pagina 302013/2014Esercizi Esame3

int i = fclose(fd);if(i == 0)

printf("File %s chiuso correttamente\n",nomefile);

elseprintf("Errore in chiusura per "

"il file %s\n", nomefile);return EXIT_SUCCESS;

}

Page 31: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 4 Vero/Falso

Pagina 312013/2014Esercizi Esame3

void f(int *a) {a[1]=++a[3];

}

int main (void){/*1*/ int x[5]={14, 7, -4};/*2*/ printf("%d\n", x[4]);/*3*/ printf("%d\n", x[3] && (x[1] = 4));/*4*/ printf("%d\n", x[1]);/*5*/ printf("%d\n", x[3]);/*6*/ f(x);/*7*/ printf("%d\n", x[1]);/*8*/ printf("%d\n", x[3]);/*9*/ return 0; }

1. La riga 2 stampa un numero casuale2. La riga 3 stampa 03. La riga 4 stampa 44. La riga 5 stampa 05. La riga 7 stampa 16. La riga 8 stampa 1

Page 32: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 4 Output

Pagina 322013/2014Esercizi Esame3

007011

Page 33: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 5 Vero/Falso

Pagina 332013/2014Esercizi Esame3

int main() {/* 1*/ int A; float B; char C, ch;/* 2*/ A=4; B=2.9f; C='C'; ch='D';/* 3*/ printf("%c\n", C);/* 4*/ printf("%d\n", ch - C);/* 5*/ printf("%d\n", A%(int)B);/* 6*/ A = (A%(int)B + (++A));/* 7*/ printf("%d\n", A);/* 8*/ B = A++/B;/* 9*/ printf("%f\n", B);/*10*/ ch = (C+=1);/*11*/ printf("%c\n", ch);}

1. La riga 3 stampa 672. La riga 4 stampa 13. La riga 5 stampa 04. La riga 7 stampa 55. La riga 9 stampa 3.6670006. La riga 11 stampa D

Codice ASCII C = 67Codice ASCII D = 68

Page 34: Presentazione di PowerPointbloisi/didattica/ingegneriaClinica1314/... · free(T);} Esercizio 2 Esercizi Esame 2013/2014 Pagina 14 3 Scrivere una funzione creaFileDecrescente che,

Esercizio 5 Output

Pagina 342013/2014Esercizi Esame3

C1051.724138D