Il 0% ha trovato utile questo documento (0 voti)
13 visualizzazioni9 pagine

Tut 03

Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
13 visualizzazioni9 pagine

Tut 03

Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 9

Corso di Algoritmi e Strutture Dati (IN110)

Tutorato n. 3
Marco Liverani*

Esercizio n. 1
Letti in input tre array di interi con lo stesso numero n di elementi, costruisce un quarto array di numeri
floating point con la media aritmetica degli elementi corrispondenti nei primi tre (es.: D i = (A i + B i +
C i )/3, per i = 0, 1, . . . , n − 1). Stampa l’array D.

Diagramma di flusso

Start

Leggi
n

i=0

No
i<n


i=0
Leggi
A[i]

No
i<n
i = i+1

i=0
Leggi
B[i]

No
i<n
i = i+1

i=0
Leggi
C[i]

No
i<n
i = i+1

i=0
D[i] = (A[i]+
B[i]+C[i])/3

No
i<n
i = i+1

Stop

Scrivi
D[i]

i = i+1

* Università degli Studi Roma Tre, Corso di Laurea in Matematica, Corso di Algoritmi e Strutture Dati (IN110); e-mail
[email protected] – sito web del corso http://www.mat.uniroma3.it/users/liverani/IN110/

1
Pseudo-codifica dell’algoritmo
1: leggi l’array A di n elementi
2: leggi l’array B di n elementi
3: leggi l’array C di n elementi
4: per i = 0, 1, 2, . . . , n − 1 ripeti
5: D i = (A i + B i +C i )/3
6: fine-ciclo
7: scrivi l’array D di n elementi
8: stop

Codifica in linguaggio C
 
1 #include <stdlib.h>
2 #include <stdio.h>
3 #define MAX 100
4

5 int main(void) {
6 int i, n, A[MAX], B[MAX], C[MAX];
7 float D[MAX];
8 printf("Numero di elementi: ");
9 scanf("%d", &n);
10 printf("inserisci %d elementi del vettore A: ", n);
11 for (i=0; i<n; i++) {
12 scanf("%d", &A[i]);
13 }
14 printf("inserisci %d elementi del vettore B: ", n);
15 for (i=0; i<n; i++) {
16 scanf("%d", &B[i]);
17 }
18 printf("inserisci %d elementi del vettore C: ", n);
19 for (i=0; i<n; i++) {
20 scanf("%d", &C[i]);
21 }
22 for (i=0; i<n; i++) {
23 D[i] = (float)(A[i]+B[i]+C[i])/3.0;
24 }
25 for (i=0; i<n; i++) {
26 printf("%f ", D[i]);
27 }
28 printf("\n"); return(0);
29 }
 

2
Esercizio n. 2
Leggere una matrice n × m di numeri interi; letti in input due interi h e k (0 ≤ h < n e 0 ≤ k < m)
stampare gli elementi della riga h e della colonna k.

Diagramma di flusso

Start

Leggi n,m

i=0

No
i<n

j=0

Leggi h,k

No
j<m

j=0

Leggi A[i][j]
No
j<m


j = j+1
Scrivi A[h][j]
i=0

i = i+1 j = j+1 No
i<n

Scrivi A[i][k] Stop

i = i+1

3
Pseudo-codifica dell’algoritmo
1: leggi n, m
2: per i = 0, 1, 2 . . . , n − 1 ripeti
3: per j = 0, 1, 2, . . . , m − 1 ripeti
4: leggi A i , j
5: fine-ciclo
6: fine-ciclo
7: leggi h, k
8: per j = 0, 1, 2, . . . , m − 1 ripeti
9: scrivi A h, j
10: fine-ciclo
11: per i = 0, 1, 2, . . . , n − 1 ripeti
12: scrivi A i ,k
13: fine-ciclo
14: stop

Codifica in linguaggio C
 
1 #include <stdlib.h>
2 #include <stdio.h>
3 #define MAX 20
4

5 int main(void) {
6 int A[MAX][MAX], i, j, n, m, h, k;
7 printf("Numero di righe e di colonne: ");
8 scanf("%d %d", &n, &m);
9 for (i=0; i<n; i++) {
10 for (j=0; j<m; j++) {
11 scanf("%d", &A[i][j]);
12 }
13 }
14 printf("Inserisci h e k: ");
15 scanf("%d %d", &h, &k);
16 printf("Riga %d: ", h);
17 for (j=0; j<m; j++) {
18 printf("%d ", A[h][j]);
19 }
20 printf("\nColonna %d: ", k);
21 for (i=0; i<n; i++) {
22 printf("%d ", A[i][k]);
23 }
24 printf("\n");
25 return(0);
26 }
 

4
Esercizio n. 3
Letti in input due array di numeri interi (rispettivamente di n e m elementi) verifica se tutti gli elementi
del primo sono contenuti nel secondo (gli elementi di A = (1, 2, 3) sono contenuti in B = (8, 1, 3, 7, 5, 2, 6)).

Diagramma di flusso

Start

Leggi
n

i=0

No
i<n


Leggi
m
Leggi
A[i]

i=0

i = i+1

No
i<m

Sì flag = 1

Leggi
B[i]
i=0

i = i+1

i<n e No
flag=1


Sì No
flag = 1
flag = 0

Scrivi Scrivi
j=0 Sì No

j<m e No
Stop
A[i]!=B[j]

j = j+1

Sì No
j<m

flag = 1

i = i+1

5
Pseudo-codifica dell’algoritmo
1: leggi n
2: per i = 0, 1, 2, . . . , n − 1 ripeti
3: leggi A i
4: fine-ciclo
5: leggi m
6: per i = 0, 1, 2, . . . , m − 1 ripeti
7: leggi B i
8: fine-ciclo
9: f l ag = 1
10: i =0
11: fintanto che i < n e f l ag = 1 ripeti
12: f l ag = 0
13: j =0
14: fintanto che j < m e A i , B j ripeti
15: j = j +1
16: fine-ciclo
17: se j < m allora
18: f l ag = 1
19: fine-condizione
20: i = i +1
21: fine-ciclo
22: se f l ag = 1 allora
23: scrivi “l’array A è contenuto in B ”
24: altrimenti
25: scrivi “l’array A non è contenuto in B ”
26: fine-condizione
27: stop

6
Codifica in linguaggio C
 
1 #include <stdlib.h>
2 #include <stdio.h>
3 #define MAX 30
4

5 int main(void) {
6 int A[MAX], B[MAX], i, j, n, m, flag;
7 printf("Numero di elementi di A: ");
8 scanf("%d", &n);
9 printf("inserisci %d elementi: ");
10 for (i=0; i<n; i++) {
11 scanf("%d", &A[i]);
12 }
13 printf("Numero di elementi di B: ");
14 scanf("%d", &m);
15 printf("inserisci %d elementi: ");
16 for (i=0; i<m; i++) {
17 scanf("%d", &B[i]);
18 }
19 flag = 1;
20 for (i=0; i<n && flag==1; i++) {
21 flag = 0;
22 j = 0;
23 while (j<m && A[i]!=B[j]) {
24 j = j+1;
25 }
26 if (j<m)
27 flag = 1;
28 }
29 if (flag == 1)
30 printf("L’array A e’ contenuto in B.\n");
31 else
32 printf("L’array A non e’ contenuto in B.\n");
33 return(0);
34 }
 

7
Esercizio n. 4
Letta in input una matrice quadrata A di n × n numeri interi, stampa il prodotto della somma degli
elementi della diagonale principale per la somma degli elementi della diagonale secondaria.

Diagramma di flusso

Start

Leggi
n

i=0

No
i<n

S1 = 0
j=0 S2 = 0

i=0
No
j<n


No
i<n
Leggi
A[i][j] Sì

Scrivi
S1 = S1*S2
j = j+1 S1 + A[i][i]

S2 = Stop
S2 + A[i][n-i-1]

i = i+1

i = i+1

8
Pseudo-codifica dell’algoritmo
1: leggi n
2: per i = 0, 1, 2, . . . , n − 1 ripeti
3: per j = 0, 1, 2, . . . , n − 1 ripeti
4: leggi A i , j
5: fine-ciclo
6: fine-ciclo
7: S 1 = 0, S 2 = 0
8: per i = 0, 1, 2, . . . , n − 1 ripeti
9: S 1 = S 1 + A i ,i
10: S 2 = S 2 + A i ,n−i −1
11: fine-ciclo
12: scrivi S 1 · S 2
13: stop

Codifica in linguaggio C
 
1 #include <stdlib.h>
2 #include <stdio.h>
3 #define MAX 20
4

5 int main(void) {
6 int A[MAX][MAX], i, j, n, s1, s2;
7 printf("Ordine della matrice quadrata (numero di righe e di colonne): ");
8 scanf("%d", &n);
9 for (i=0; i<n; i++) {
10 printf("Inserisci gli elementi della riga %d: ", i);
11 for (j=0; j<n; j++) {
12 scanf("%d", &X[i][j]);
13 }
14 }
15 s1 = 0;
16 s2 = 0;
17 for (i=0; i<n; i++) {
18 s1 = s1 + A[i][i];
19 s2 = s2 + A[i][n-i-1];
20 }
21 printf("S1*S2 = %d\n", s1*s2);
22 return(0);
23 }
 

Potrebbero piacerti anche