Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A. Pennisi, S. Peluso, S. Salza Esercizio 1 Scrivere una funzione in linguaggio C denominata trova_carattere che, presa in ingresso una stringa s e un intero i, restituisca il carattere di indice i in s. La funzione deve restituire 0 nel caso in cui s sia NULL oppure l’indice i sia minore di 0 o maggiore della lunghezza di s. Stringa s = “ciao” trova_carattere(s,2) -> a Stringa s = “osso” trova_carattere(s,3)-> o Stringa s = “a” trova_carattere(s,1) -> 0 Stringa s = NULL trova_carattere(s,1) -> 0 Esercitazione 4 2013/2014 Pagina 2 Esercizio 2 Scrivere una funzione in linguaggio C denominata diag_sec che, prese in ingresso una matrice M (matrice quadrata NxN di dimensioni 5x5) e un vettore S (di dimensione N), modifichi opportunamente S inserendovi gli elementi della diagonale secondaria di M. Scrivere, inoltre, una funzione main che: • legga la matrice M da file (supporre che tutti i dati in ingresso siano di tipo int e corretti). • Stampi a video la il valore di S dopo aver eseguito diag_sec(M, S). Esercitazione 4 2013/2014 Pagina 3 Esercizio 3 /* 1*/#include <stdio.h> 1. L’istruzione alla riga 2 produce /* 2*/int main() { perdita di informazione /* 3*/ float a = 2; 2. La riga 6 stampa 2.000000 /* 4*/ int i, c = (int)a; 3. La riga 11 stampa -2 /* 5*/ float b = 1.01f; 4. La riga 12 stampa 15 /* 6*/ printf("%f\n", a); 5. La riga 14 stampa 1 /* 7*/ for(i = 0; i < (int)b; i++){ 6. La riga 15 stampa 0 /* 8*/ if(i == 1) continue; 7. L’istruzione return 0 viene /* 9*/ c *= -1; aggiunta in automatico come /*10*/ } ultima istruzione del main /*11*/ printf("%d\n", c); /*12*/ printf("%d\n", i); /*13*/ if(c < 0) c++; /*14*/ printf("%d\n", i); /*15*/ printf("%d\n", c); /*16*/} Esercitazione 4 2013/2014 Pagina 4 Esercizio 4 /* 1*/#include <stdio.h> /* 2*/#include <string.h> /* 3*/ /* 4*/int main() { /* 5*/ char c[80] = "rossi"; /* 6*/ char* d = "po"; /* 7*/ printf("%d\n", strlen(d)); /* 8*/ char* e = c; /* 9*/ *(e+1) = 'a'; /*10*/ printf("%s\n", c); /*11*/ printf("%d\n", strlen(e)); /*12*/ *(++e) = 'o'; /*13*/ printf("%d\n", strlen(e)); /*14*/ printf("%s\n", c); /*15*/ *(++e) = '\0'; /*16*/ strcat(c, d); /*17*/ printf("%s\n", c); /*18*/ printf("%c\n", *(++e)); /*19*/} Esercitazione 4 1. La riga 7 stampa 2 2. La riga 10 stampa possi 3. La riga 11 stampa 5 4. La riga 13 stampa 3 5. La riga 14 stampa bossi 6. La riga 17 stampa rospo 7. La riga 18 stampa o 2013/2014 Pagina 5