Codice dei programmi nella directory:
///File: Esercizi-vettori.txt
ESERCIZI sui vettori.
1)Mettere in un vettore la tabellina T scelta dall'utente
2)Mettere in un vettore di 100 numeri i primi 100 numeri primi
3)Verificare, data la funzione random(10), calcolare quante volte sono usciti gli 1,
quante volte i 2, ...quante volte i 10 in 100000 (centomila) lanci
4)Dato un vettore di 100 elementi, riempirlo con numeri casuali da 1 a 100
verificare poi nel vettore quali numeri (fra 1 e 100) non ci sono
Altri dopo aver fatto il 4)
4.1) Quante volte è uscito il numero N (N letto da tastiera)
4.2) Quante volte e' uscito ciascun numero fra 1 e N (N letto da tastiera)
4.3) Quanti numeri fra 1 e 100 NON sono usciti
4.4) Quanti numeri fra 1 e 100 SONO usciti
4.5) Visualizzare il numero che è uscito piu' volte (algoritmo del massimo)
///(Fine file: Esercizi-vettori.txt)
///File: VettoreTabellinaFissa.c
#include <stdio.h>
int main()
{
/// v== [ ][ ][ ] [ ] .... [ ]
/// i== 0 1 2 3 .... 9
int v[10]; /// vettore o array di 10 elementi
int i; /// i == indice per scorrere il vettore
int t; /// t contiene la tabellina
/// Riempio il vettore con la tabellina del 2
t=2;
for(i=0; i <10; i++) /// Metto nel vettore la tabellina del 2
{
v[i]=t*(i+1);
}
///for(i=6; i < 8; i++)
/// v[i]=100;
for(i=0; i < 10; i++) /// Visualizzo il vettore in una sola linea
{
printf("%3d ",v[i]);
}
printf("\n");
for(i=0; i < 10; i++) /// Vsualizzo v[0]=2, v[1]=4, .. v[9]=20 su piu' linee
{
printf("v[%2d] = %d\n",i,v[i]);
}
printf("\n");
return 0;
}
///(Fine file: VettoreTabellinaFissa.c)
///File: Soluzioni-Su-Codeboard.html
<a href=https://codeboard.io/projects/573316> 1) Metto in un vettore la tabellina scelta dall'utente</a><br>
<a href=https://codeboard.io/projects/573340> 2) Metto i primi 100 numeri primi in un vettore</a><br>
///(Fine file: Soluzioni-Su-Codeboard.html)
///File: QuantiNumeriMassimi.c
/*** Calcolare quanti numeri sono uguali al massimo di N valori
(N letto da tastiera) ***/
#include <stdio.h>
int v[1000]; /// valori letti da tastiera
void carica(int n)
{
int valore,i;
for(i=0; i <n; i++){
printf("Dammi il %d^ valore ->",i+1);
scanf("%d",&valore);
v[i]=valore;
}
}
void stampa(int n)
{
int i;
for(i=0; i <n; i++)
printf("il %d^ valore = %d\n",i+1,v[i]);
}
int massimo(int n)
{
int i;
int m=v[0]; /// in m ci metto il primo elemento del vettore v[]
for(i=1; i < n; i++)
if (v[i]>m) m=v[i];
return m;
}
int quanti(int n, int max)
{
int i, cont=0;
for(i=0; i <n; i++)
if(v[i]==max) cont++;
return cont;
}
int main()
{
int N;
int i;
int valore;
int max;
printf("Quanti valori vuoi darmi (MAX 1000) ->");
scanf("%d",&N);
carica(N);
stampa(N);
max=massimo(N);
printf("Il massimo e' %d\n",max);
printf("I valori uguali al massimo sono %d\n",quanti(N,max));
return 0;
}
///(Fine file: QuantiNumeriMassimi.c)
///File: Esercizio24Gen.txt
Dato un vettore di N elementi interi, N scelto dall'utente
visualizzare:
1) La media degli N valori
2) La differenza di ogni valore dalla media
3) Quanti numeri differiscono dalla media al massimo di 1 unita'
4) Visualizza tutti i valori maggiori della media
5) Visualizza il vettore al contrario (parti dall'ultimo elemento e arriva al primo)
6) Inverti il vettore (se v=={1,2,3,4,5} v diventa {5,4,3,2,1}
///(Fine file: Esercizio24Gen.txt)
///File: VettoreDinamico.c
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N;
int *v;
int i;
printf("Quanti valori vuoi -->");
scanf("%d",&N);
v=malloc(sizeof(int)*N);
/// da qui in poi v[] e' un vettore di N elementi
for(i=0; i < N; i++)
v[i]=i;
for(i=0; i < N; i++)
printf("%d\n",v[i]);
return 0;
}
///(Fine file: VettoreDinamico.c)
///File: EsercizioVettori27Gennaio.c
#include <stdio.h>
#define MAX 100 /// dimensione dei vettori
double somma(int v[], int nval)
{
int i;
double s = 0;
for (i = 0; i < nval; i++)
s += v[i];
return s;
}
double media(int v[], int nval)
{
return somma(v,nval)/nval;
}
void differenza_media(int v[], int nval) /// scrive sullo schermo la differenza di ogni valore dalla media
{
int i;
double diff;
double m = media(v,nval);
printf(" Valore Differenza\n");
for (i = 0; i < nval; i++)
{
diff = v[i] - m;
printf("%12d", v[i]);
printf("%12.2lf\n", diff);
}
}
void visualizza_maggiori (int v[], int nval) /***visualizza i numeri maggiori della media***/
{
int i;
double m = media(v,nval);
for(i = 0; i < nval; i++)
if (v[i] > m)
printf("%d\n", v[i]);
}
void numeri_vicini_media (int v[], int nval) /// visualizza i numeri che differiscono di al piu' di una unita' dalla media
{
int i;
double m = media(v,nval);
for(i = 0; i < nval; i++)
/// if (v[i] - m < -1 || v[i] - m > 1) /// ho trovato subito la condizione che NON va bene
if (!(v[i] - m < -1 || v[i] - m > 1)) /// allora, la inverto la condizione con il ! (NOT)
printf("%d\n", v[i]);
}
int main()
{
int nval, temp;
int v[MAX] = {0};
do
{
printf("Quanti numeri vuoi inserire? (massimo %d) -->", MAX);
scanf("%d", &nval);
}
while(nval < 1 || nval > MAX);
for (temp = 0; temp < nval; temp++)
{
printf("Inserisci un numero: ");
scanf("%d", &v[temp]);
}
printf("La tua media e' di %.2lf\n", media(v, nval));
printf("La differenza dalla media e':\n");
differenza_media(v, nval);
printf("I numeri piu' grandi della media sono: \n");
visualizza_maggiori(v, nval);
printf("I numeri che differiscono non piu' di una unita' dalla media sono:\n");
numeri_vicini_media(v,nval);
return 0;
}
///(Fine file: EsercizioVettori27Gennaio.c)
///File: Statistica-lettere.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int car, i;
int c[26] = {0};
while((car=getchar())!= EOF){
c[car - 'a']++;
}
/***
A=7
B=12
C=2
....
***/
for(i = 0; i < 26; i++)
printf("%c = %d\n", i + 'a', c[i]);
return 0;
}
///(Fine file: Statistica-lettere.c)
///File: EserciziAllenamentoVettori7feb.c
#include <stdio.h>
#include <stdlib.h>
int eordinato(int v[], int nelem)
{
int i;
for(i = 0; i < nelem - 1; i++)
if(v[i] > v[i+1])
return 0;
return 1;
}
int euguale(int v1[], int v2[], int nelem)
{
int i;
for(i= 0; i < nelem; i++)
if(v1[i] != v2[i])
return 0;
return 1;
}
void stampa(int v[], int nelem)
{
int i;
for(i = 0; i < nelem; i++)
printf("%4d ", v[i]);
printf("\n");
}
void scambia(int v1[], int v2[], int nelem)
{
int i, apg;
for(i = 0; i < nelem; i++)
{
apg = v1[i];
v1[i] = v2[i];
v2[i] = apg;
}
}
int main()
{
int i;
int v1[] = {1, 2, 3, 4, 5, 6};
int v2[] = {7, 8, 9, 10, 11, 12};
int nelem=sizeof(v1)/sizeof(int);
if(eordinato(v1, nelem))
printf("Si\n");
else
printf("No\n");
if(euguale(v1, v2, nelem))
printf("Uguali\n");
else
printf("Diversi\n");
// Scambiare i valori da un vettore a un altro
// senza l'utilizzo di un vettore d'appoggio
stampa(v1, nelem);
stampa(v2, nelem);
scambia(v1, v2, nelem);
stampa(v1, nelem);
stampa(v2, nelem);
return 0;
}
///(Fine file: EserciziAllenamentoVettori7feb.c)
///File: TestRandom.c
/***3)Verificare, data la funzione random(10), calcolare quante volte sono usciti gli 1,
quante volte i 2, ...quante volte i 10 in 100000 (centomila) lanci */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
// Random(X) ritorna un numero fra 1 e X
int Random(int N)
{
static int primavolta = 1; // BOOLEANO
if (primavolta)
{
srand(time(NULL)); /* inizializzo il seme */
primavolta = 0;
}
return (rand() % N) + 1;
}
int main()
{
int vettore[10] = {0};
int cont;
int estratto = 0;
int totale= 0;
for(cont = 1; cont <= 100000; cont++)
{
estratto = Random(10);
vettore[estratto - 1]++; /// oppure vettore[Random(10) -1]++
}
for(cont = 0; cont < 10; cont++)
{
printf("il %2d, e' uscito %6d volte\n", cont+1, vettore[cont]);
totale = totale + vettore[cont]; /// Faccio la verifica che siano usciti 100000 numeri
}
printf("numeri estratti totali : %d", totale);
}
///(Fine file: TestRandom.c)
///File: EserciziVettoriEfunzioni.txt
//--------------------------------------------------------------------------------------
//Esercizi sui vettori Febbario 2026
//--------------------------------------------------------------------------------------
// A1 (3)
// riempire v[] con N elementi (N letto da tastiera) random fra 1 ed M (M letto da tastiera, M >= N)
// in modo che il vettore NON contenga numeri primi.
//A2 (3)
// Dati due vettori ordinati di N elementi v1[] e v2[] mettere in
// un terzo vettore (di dimensione 2*N) i valori di v1 e v2, mantenendo l'ordinamento in V3
// (non ordinare v3 dopo averlo riempito - usare un solo ciclo)
//A3 (1)
// dato v[] vettore di prezzi di N prodotti, q[] vettore di quantita' di N prodotti
// produrre in s[] i totali ottenuto moltiplicando ciascun prezzo di prodotto per la sua quantita'
// es: v[]= [1.10, 2.15, 0.50] , q=[2,1,4] allora in s ci viene messo: s[]=[2.20,1.15,2.00]
//A3.2 (2)
// come sopra ma con vettore sconti[] che contiene la percentuale di sconto per quel prodotto
// es se sconto=[50, 0, 10] allora s[] = [1.10,1.15,1.80]
//A4 (3)
// void sequenze(int v[],int n)
// visualizza sullo schermo quelle parti di vettore con sequenze consecutive
// esempio:
// se v=[1,2,5,3,4,5,-2,-1,0,7,4,5,6]
// visualizza:
// 1,2
// 3,4,5
// -2,-1,0
// 4,5,6
//A5 (2)
// void differenzeuno(int v[], int n)
// Ritorna vero se, per ogni numero il successivo e' uno in piu' o uno in meno
// es: se v[]=[1,2,3,2,1,0,1] ritorna vero
// se v[]=[1,2,4,3,2,1,0] ritorna falso
//A6 (1)
// void asterischi(int v[], int n)
// il vettore v[] contiene numeri fra zero e 50
// Si produca il disegno a schermo che rappresenta, per ogni numero del vettore, la sua
// quantita', in orizzontale, in asterischi
// es: v=[1,4,7,2,0,1]
// Ottengo il disegno:
// *
// ****
// *******
// **
//
// *
//A7 (3)
// disordina...
// dato un vettore v[] di n elementi ordinato
// renderlo "ben disordinato" con gli stessi elementi
// esempio: se v[] e' [1,4,5,6,12,32], puo' diventare [4,32,1,5,12,6] oppure [6,32,4,12,5,1]
//Gruppo denominato C
//---------------------------------------------------------------------------
// Esercizi su vettori di interi
// Fare le funzioni richieste rispettando il prototipo
// e le specifiche
// (n e' la dimensione dei vettori)
//---------------------------------------------------------------------------
//C1 (1)
int vettpari(int v1[], int v2[], int n)
// legge da v2 e copia in v1 solo i valori pari; ritorna il numero
// di elementi copiati
//C2 (1)
int numzeri(int v[], int n)
// ritorna il numero di valori a zero nel vettore v
//C3 (1)
int vett_tabellina(int v[11], int tab)
// ritorna nel vettore v[] la tabellina tab
// es se tab=3 in v[] ci mette [0,3,6,9,...30]
//C3 (1)
int vett_tabellina(int v[11])
// ritorna la tabellina (es 7) se nel vettore c'e' esattamente la tabellina del 7
// es ritorna 3 se in v[] c'e' [0,3,6,9,...30], ritorna 0 se in v[] non c'e' una tabellina
//C4 (1)
int numdivis(int v[], int num, int n)
// ritorna il numero di elementi del vettore v[]
// che sono divisibili per il valore num
//C5 (2)
int numchar(int v[], int n)
// ritorna il numero di valori di v[] che corrispondono al codice ASCII
// di una lettera (maiuscola o minuscola)
// es: se v=[0,-2,345,97,98,65,66] ritorna 4
// perche' 97, 98 sono codici ascii di minuscole; 65 e 66 di maiuscole
//C6 (1)
int numcifre(int v[], int n)
// ritorna il numero di valori di v[] che corrispondono al codice ASCII
// di una cifra
// es: se v=[0,-2,48,50,97] ritorna 2
// perche' 48, 50 sono codici ascii di cifre
//C7 (1)
int numcompresi(int v[], int min, int max, int n)
// ritorna il numero di valori di v[] compresi fra min e max
//C8 (2)
int numdiversi(int v1[], int v2[], int num, int n)
// legge da v2 e copia in v1 i valori, se diversi da num;
// ritorna il numero di valori copiati
//C10 (2)
void sommaprecedenti(int v1[], int v2[], int n)
// legge da v2 e copia in v1 la somma dei precedenti;
// es: se v2=[1,2,2,3,5] v1 diventa [1,3,5,8,13]
///(Fine file: EserciziVettoriEfunzioni.txt)