Corso di Informatica 1 (IN110) Tutorato n. 2 Marco Liverani∗ Esercizio n. 1 Letto in input un array A di n interi, costruire un array B di n numeri tale che B i sia dato dalla media aritmetica dei primi i elementi di A. Stampare il vettore B . Diagramma di flusso Start Leggi n i=0 i<n Sì No s=0 Leggi A[i] i=0 i = i+1 No i<n Sì i=0 s = s + A[i] i<n B[i] = s/(i+1) Sì No Stop Scrivi B[i] i = i+1 i = i+1 ∗ Università degli Studi Roma Tre, Corso di Laurea in Matematica, Corso di Informatica Generale 1 (IN110); e-mail [email protected] – sito web del corso http://www.mat.uniroma3.it/users/liverani/IN110/ 1 Pseudo-codifica dell’algoritmo 1: 2: 3: 4: 5: 6: 7: 8: 9: leggi n leggi n numeri interi e memorizzali nell’array A s =0 per i = 0, 1, . . . , n − 1 ripeti s = s + Ai s B i = i +1 fine-ciclo stampa l’array B stop Codifica in linguaggio C 1 2 3 #include <stdlib.h> #include <stdio.h> #define MAX 100 4 5 6 7 int main(void) { int A[MAX], n, i, s; float B[MAX]; 8 printf("Numero di elementi: "); scanf("%d", &n); printf("Inserisci %d elementi: ", n); for (i=0; i<n; i++) scanf("%d", &A[i]); 9 10 11 12 13 14 s = 0; for (i=0; i<n; i++) { s = s + A[i]; B[i] = (float)s/(i+1); } 15 16 17 18 19 20 printf("Vettore dei valori medi: "); for (i=0; i<n; i++) printf("%f ", B[i]); 21 22 23 24 return(0); 25 26 } 2 Esercizio n. 2 Letto in input un array A di n interi, costruire un array B con gli stessi elementi di A, ma memorizzati al contrario (il primo elemento di A è l’ultimo elemento di B , l’ultimo elemento di A è il primo di B ). Stampare il vettore B . Diagramma di flusso Start Leggi n i=0 i<n No Sì i=0 Leggi A[i] No i<n i = i+1 Sì i=0 B[n-i-1] = A[i] i<n i = i+1 Sì Scrivi B[i] i = i+1 3 No Stop Pseudo-codifica dell’algoritmo 1: 2: 3: 4: 5: 6: 7: leggi n leggi n numeri interi e memorizzali nell’array A per i = 0, 1, . . . , n − 1 ripeti B n−i −1 = A i fine-ciclo stampa l’array B stop Codifica in linguaggio C 1 2 3 #include <stdlib.h> #include <stdio.h> #define MAX 100 4 5 6 int main(void) { int A[MAX], B[MAX], n, i; 7 printf("Numero di elementi: "); scanf("%d", &n); printf("Inserisci %d elementi: ", n); for (i=0; i<n; i++) scanf("%d", &A[i]); 8 9 10 11 12 13 for (i=0; i<n; i++) B[n-i-1] = A[i]; 14 15 16 for (i=0; i<n; i++) printf("%d ", B[i]); 17 18 19 return(0); 20 21 } 4 Esercizio n. 3 Letti in input due interi positivi n e m, leggere in input una matrice A di numeri interi, con n righe ed m colonne. Costruire un array B con m elementi e memorizzare in B k (0 ≤ k < m) il massimo elemento della colonna k della matrice A. Stampare il vettore B . Diagramma di flusso Start Leggi n, m i=0 i<n No Sì j=0 j=0 No j<m j<m No Sì j=0 Sì B[j] = A[0][j] Leggi A[i][j] j<m i=1 No Sì j = j+1 Stop Scrivi B[j] No i<n j = j+1 Sì i = i+1 Sì A[i][j] > B[j] B[j] = A[i][j] i = i+1 j = j+1 5 No Pseudo-codifica dell’algoritmo 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: leggi n e m leggi in input gli elementi della matrice A per j = 0, 1, 2, . . . , m − 1 ripeti B j = A 0, j per i = 1, 2, . . . , n − 1 ripeti se A i , j > B j allora B j = Ai , j fine-condizione fine-ciclo fine-ciclo per j = 0, 1, 2, . . . , m − 1 ripeti stampa B j fine-ciclo stop Codifica in linguaggio C 1 2 3 #include <stdlib.h> #include <stdio.h> #define MAX 100 4 5 6 int main(void) { int A[MAX][MAX], B[MAX], n, m, i, j; 7 printf("Numero di righe e colonne: "); scanf("%d %d", &n, &m); for (i=0; i<n; i++) { printf("Inserisci gli elementi della riga %d: ", i); for (j=0; j<m; j++) scanf("%d", &A[i][j]); } 8 9 10 11 12 13 14 15 for (j=0; j<m; j++) { B[j] = A[0][j]; for (i=1; i<n; i++) { if (A[i][j] > B[j]) B[j] = A[i][j]; } } 16 17 18 19 20 21 22 23 printf("Elementi massimi delle colonne della matrice:\n"); for (j=0; j<m; j++) printf("%d ", B[j]); 24 25 26 27 return(0); 28 29 } 6