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