Corso di Calcolatori Elettronici APPUNTI SUL LINGUAGGIO C Esercitazione II Esercizi sugli array e strutture Array Esercizio: Dati N numeri memorizzarli in un array e poi stampare il minimo e il massimo elemento tra gli N forniti da input. Oss. N sia una costante (per esempio 5). Array #include <stdio.h> #define N 5 /* è noto a tutti che la dimensione del vettore è N */ int minimo (int vet[]) { int i, min; min = vet[0]; for (i = 1; i<N; i ++) if (vet[i]<min) min = vet[i]; return min; } int massimo (int vet[]) { int i, max; max = vet[0]; for (i = 1; i<N; i ++) if (vet[i]>max) max = vet[i]; return max; } Array main () { int i, a[N]; printf ("Scrivi %d numeri interi\n", N); for (i = 0; i<N; i++) scanf ("%d", &a[i]); printf ("Il minimo vale %d e il massimo è %d\n", minimo(a), massimo(a)); } Array Dati N valori interi forniti in ordine qualunque, memorizzarli in un array e poi stampare in uscita l'elenco dei valori dati in ordine crescente. Oss. N sia una costante (per esempio 5). Vettore di elementi di un certo tipo, sul quale è definita una relazione d’ordine totale : – Selection sort, o ordinamento per minimi successivi: – Ad ogni passo seleziona il minimo nel vettore e lo pone nella prima posizione, richiamandosi ed escludendo dal vettore il primo elemento. Array posmin [0] [1] [2] [3] 2 5 1 -1 posmin [0] [1] [2] [3] [0] [1] [2] [3] -1 5 1 2 -1 5 1 2 Vettore corrente Array #include <stdio.h> #define N 5 void leggi(int a[]) { int i; printf ("Scrivi %d interi\n", N); for (i = 0; i < N; i++) scanf ("%d", &a[i]); } void scrivi(int a[]) { int i; printf ("Vettore ordinato:\n"); for (i = 0; i < N; i++) printf ("%d \t", a[i]); } Array void sort (int vet[]) { int j, i, posmin, min; for (j=0; j < N; j++) { posmin=j; min = vet[j]; for (i=j+1;i<N; i++) if (vet[i]<min) { min=vet[i]; posmin=i; } if (posmin != j) { /*scambio */ vet[posmin]=vet[j]; vet[j]= min; } } } Array main () { int i, a[N]; leggi(a); sort(a); scrivi(a); } Strutture Esercizio: Si considerino i punti su di un piano cartesiano. Ogni punto è costituito da una coppia di coordinate (X,Y). Si definisca un progetto con le seguenti funzionalità: - Si gestiscano insiemi di N punti - un metodo per inizializzare gli elementi di un insieme - un metodo per stampare su video gli elementi di un insieme - Un metodo che dati due punti generi il punto medio - Un metodo che dati due punti calcoli la distanza tra i due - Un metodo che dato un punto calcoli in quale quadrante appartiene (si consideri un numero intero compreso tra 1 e 4) - Un metodo che dato l’insieme di punti e il numero di quadrante (un numero intero tra 1 e 4) calcoli il numero di punti dell’insieme che appartengono a quel quadrante Oss. N sia una costante (per esempio 10). Stringhe Esercizio: Si considerino stringhe lunghe massimo 30 caratteri (considerare solo le lettere minuscole). Si definisca un progetto in linguaggio C che gestisca stringhe di questo tipo e in particolare la funzionalità che data una stringa calcoli la lettera con occorrenza massima (in caso di pari occorrenza ritornare la prima in ordine). Oss. Si considerino tali stringhe attingere dal seguente vocabolario: {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z} Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su array e strutture FINE