Esercitazioni
del
corso
di Laboratorio di Calcolo (II)
n. 7
vettori e loro ordinamento
questa esercitazione non verra' valutata
- create ex7
(usando il comando mkdir)
- spostatevi in ex7 (usando il
comando cd)
- scaricate il programma bubblesort.c (terzo bottone del mouse, "save
link target as") in ex7
- compilatelo e giratelo, cercate di
capirne il contenuto e il funzionamento dell'algoritmo di ordinamento
"bubblesort" osservando cio' che viene stampato dal programma
- modificate il programma affinche'
questo
- operi con un vettore con 1000
elementi (ovviamente dovrete levare tutte le stampe!)
- apra in lettura il file esterno interi.dat (che vi dovete scaricare in ex7)
- legga dal file i 1000 elementi
del vettore
FILE *
f1;
f1=fopen("interi.dat","r");
e poi in un ciclo con indice i :
fscanf(f1,"%d",&vettore[i]);
... fclose(f1);
- li riordini
- apra in scrittura un nuovo file
intord.dat
- vi scriva i 1000 elementi ordinati
- chiuda i file
FILE *
f2;
f2=fopen("intord.dat","w");
e poi in un ciclo con indice i :
fprintf(f2,"%d\n",vettore[i]);
... fclose(f2);
- compilate girate e controllate il
risultato
- scrivete un nuovo programma che
- definisca un vettore di double da
100000 elementi
- apra in lettura il file esterno valori.dat (che vi dovete scaricare in ex7)
- definisca un istogramma con 50
bin da -5 a 5 mediante
- un vettore x di double da 51
elementi contenente i valori estremi dei bin, ovvero -5, -4.8, -4.6 ...
4.6, 4.8, 5
- un vettore n di interi lungo 50
nel quale accumulare il numero di volte in cui un dato cada all'interno
dell'intervallo (bin) i-esimo ovvero sia compreso tra x[i] e
x[i+1]
- legga il file e riempia
l'istogramma (si puo' fare all'interno dello stesso ciclo)
- trovi l'elemento n[i] piu' grande
del vettore n e ponga nmax=n[i] con nmax intero (questo non puo' essere
fatto nello stesso ciclo, serve un ciclo sui 50 intervalli)
- stampi l'istogramma mediante le
istruzioni
for(
j=25; j>0;j--) {
for( i=0; i<50;i++) {
if( n[i]
> nmax*j/25 ) {
printf("*"); /* si stampa un simbolo */
} else {
printf(" "); /* si stampa uno spazio */
}
}
printf("\n");
}