#include #define N 10 /********* PUNTO A **********/ /* Stampa i primi n interi di a[] */ void print(int a[], int n){ int k; for(k=0 ; k0){ // ciclo ripetuto n volte printf("%d ", *a); a++; } putchar('\n'); } int mainA(){ int v[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int *p = &v[3], *q = v+7; print(v, 10); print(&v[5], 3); print(v+5, 3); print(p+1, 2); print(&p[1], 2); print(q-5, 4); print(&q[-5], 4); return 0; } /********* PUNTO B **********/ /* Legge una sequenza di interi da standard input terminante con un carattere non convertibile in intero oppure EOF. Restituisce il numero di interi letti */ int readB(int a[]){ int k=0, r; do{ r = scanf("%d", a+k); // OPPURE: r = scanf("%d", &a[k]); k++; }while(r == 1); return k-1; } int mainB(){ int v[10], n; n = readB(v); printf("n = %d\n", n); print(v,n); // non e' corretto se n>10 if(n>2){ print(v,n-2); print(v+2, n-2); // OPPURE: print(&v[2], n-2); } return 0; } /********* PUNTO C **********/ /* Legge una sequenza di interi da standard input terminante con un carattere non convertibile in intero oppure EOF. Se la sequenza ha lunghezza > N, vengono letti solo i primi N interi Restituisce il numero di interi letti */ int read(int a[]){ int k=0, r; do{ if(k< N) r = scanf("%d",a+k); k++; }while(k<= N && r == 1); return k-1; } int mainC(){ int v[N] = {0}, n; n = read(v); printf("n = %d\n", n); print(v,n); /* e' sempre corretto in quanto n<= N */ if(n>2){ print(v,n-2); print(v+2, n-2); } return 0; } /********* PUNTO D **********/ /* Calcola la media dei primi n elementi di a[] */ double media(int a[], int n){ int tot=0, k; for(k=0; k