Soluzioni di PEPPE POMA 3B
1)Caricare da tastiera un array di n elementi e stamparlo invertendo i suoi elementi.
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i;
for (i=0; i<MAX; i++) //Ciclo per inizializzazione vettori
{
cout<<"Inserisci elemento "<<i;
cin>>vett[i];
}
cout<<endl;
for(i=MAX-1; i>=0; i--) // Stampa del vettore invertito
cout<<vett[i]<<" ";
}
2)Stampare la somma degli elementi di un array di interi.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i,somma=0;
srand(time(0));
for (i=0; i<MAX; i++) //Ciclo per inizializzazione vettori in random
{
vett[i]=rand()%20;
cout<<vett[i]<<" ";
}
cout<<endl;
for(i=0; i<MAX; i++) // Somma elementi vettore
somma += vett[i];
cout<<"Somma elementi vettore: "<<somma;
}
3)Caricare da tastiera un array di n elementi e stamparlo invertendo il primo elemento con il secondo, il terzo con il quarto, ecc.
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i,app;
cout<<"Ins. val\n";
for(i=0; i<MAX; i++)
cin>>vett[i];
for(i=MAX-1; i>=0; i-=2)
{
app = vett[i-1];
vett[i-1] = vett[i];
vett[i] = app;
}
for (i=0; i<MAX; i++)
cout<<vett[i]<<" ";
}
4)Calcola la somma di due array inseriti da tastiera.
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX], vett1[MAX], i;
cout<<"Ins. val. vett. 1\n";
for(i=0; i<MAX; i++)
cin>>vett[i];
cout<<"\nIns. val. vett. 2\n";
for(i=0; i<MAX; i++)
cin>>vett1[i];
cout<<"\nVettore somma:\n";
for (i=0; i<MAX; i++)
cout<<vett[i]+vett1[i]<<" ";
}
5) Verificare se gli elementi di un vettore sono tutti uguali tra loro.
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX], i;
bool stato=0;
cout<<"Ins. val.\n";
for(i=0; i<MAX; i++)
cin>>vett[i];
for(i=1; i<MAX-1; i++)
{
if (vett[0]==vett[i])
stato=0;
else
stato=1;
}
if (stato)
cout<<"NO tutti UGUALI";
else
cout<<"Tutti UGUALI";
}
6) Verificare se il vettore contiene una sequenza di numeri ordinata in modo strettamente crescente.
#include <iostream>
#define MAX 5
using namespace std;
int main()
{
int vett[MAX];
int i;
bool stato=0;
cout<<"Ins. val.\n";
for(i=0; i<MAX; i++)
cin>>vett[i];
for(i=0; i<MAX-1; i++)
if (vett[i]>=vett[i+1])
{
stato=1;
break;
}
if(stato)
cout<<"NO ordine crescente\n";
else
cout<<"Ordine crescente\n";
}
7)Dato un vettore eseguire una rotazione a sinistra degli elementi **.Dato un vettore eseguire k rotazioni a sinistra degli elementi
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i,j,app;
srand(time(0));
for (i=0; i<MAX; i++) //Ciclo per inizializzazione vettore
{
// in random
vett[i]=rand()%20;
cout<<vett[i]<<" ";
}
cout<<endl;
app=vett[0];
for(i=0; i<MAX; i++) //Ciclo di rotazione
vett[i]=vett[i+1];
vett[MAX-1]=app;
for(i=0; i<MAX; i++) // Stampa del vettore ruotato
cout<<vett[i]<<" ";
}
**
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i,j,app,k;
srand(time(0));
cout<<"Ins. k\n"; //Acquisizione del valore di k
cin>>k;
system("CLS");
for (i=0; i<MAX; i++) //Ciclo per inizializzazione vettori in random
{
vett[i]=rand()%20;
cout<<vett[i]<<" ";
}
cout<<endl;
for(j=0; j<k; j++) //Cicli di ruotamento
{
app=vett[0];
for(i=0; i<MAX; i++)
vett[i]=vett[i+1];
vett[MAX-1]=app;
}
for(i=0; i<MAX; i++) // Stampa del vettore ruotato
cout<<vett[i]<<" ";
}
8) Inizializzare in modo casuale un vettore di dimensione N, stamparlo, ordinarlo in senso decrescente (crescente) e ristamparlo.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i,j,app;
srand(time(0));
for (i=0; i<MAX; i++) //Ciclo per inizializzazione vettore in random
{
vett[i]=rand()%20;
cout<<vett[i]<<" ";
}
cout<<endl;
for(j=0; j<MAX-1; j++) //Cicli di ordinamento
for (i=j+1; i<=MAX-1; i++)
if ( vett[j] > vett[i] ) // Ordine crescente. Per ordinare in modo crescente sostituire > con <
{
app=vett[j]; //scambio
vett[j]=vett[i];
vett[i]=app;
}
for(i=0; i<MAX; i++) // Stampa del vettore ordinato
cout<<vett[i]<<" ";
}
9) Scrivere un programma che inizializa N numeri interi in random e li memorizza in un vettore. Il numero N viene inserito dall’ utente ed è minore di 20. Il programma deve generare un secondo vettore che compatta i numeri contenuti nel primo vettore. In particolare: ogni numero che compare ripetuto nel primo vettore, deve comparire una sola volta nel secondo vettore; ogni numero uguale a zero presente nel primo vettore non deve comparire nel secondo vettore.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 20
using namespace std;
int main()
{
int vett[MAX],vett2[MAX];
int i,j,k=0,N;
bool stato=0;
srand(time(0));
do
{
cout<<"Ins. N. valori: ";
cin>>N;
if (N>MAX)
{
cout<<"Errore. Dimensione massima: "<<MAX<<" valori\n";
cout<<"Hai inserito "<<N<<" valori\n";
system("PAUSE");
}
system("CLS");
}
while (N>MAX);
for (i=0; i<N; i++)
{
vett[i]=rand()%11;
vett2[i]=0;
}
for(i=0; i<N; i++)
{
for (j=0; j<N; j++)
if (vett[i]==vett2[j] || vett[i]==0)
{
stato=1;
break;
}
if (!(stato))
{
vett2[k]=vett[i];
k++;
}
else
stato = 0;
}
cout<<"Vettore originale:\n";
for (i=0; i<N; i++)
cout<<vett[i]<<" ";
cout<<"\nVettore compattato:\n";
for (i=0; i<k; i++)
cout<<vett2[i]<<" ";
}
10) Generare tre array di interi con la funzione rand() che hanno lo stesso numero N di elementi, ognuno dei quali è compreso tra 0 e 100; costruisci un quarto array di numeri floating point con la media aritmetica degli elementi corrispondenti nei primi tre. Stampa i quattro vettori .Calcola il numero di elementi pari e dispari di un array.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
float vett[MAX],vett2[MAX],vett3[MAX],media[MAX];
int i;
srand(time(0));
for (i=0; i<MAX; i++) //Ciclo per inizializzazione vettore in random
{
vett[i]=rand()%101;
vett2[i]=rand()%101;
vett3[i]=rand()%101;
}
for (i=0; i<MAX; i++)
media[i]=(vett[i]+vett2[i]+vett3[i])/3;
cout<<"n.1 n.2 n.3 MEDIA\n";
for(i=0; i<MAX; i++)
{
cout<<vett[i]<<" ";
if (vett[i]<10)
cout<<" ";
cout<<vett2[i]<<" ";
if(vett2[i]<10)
cout<<" ";
cout<<vett3[i]<<" ";
if(vett3[i]<10)
cout<<" ";
cout<<media[i]<<endl;
}
}
11) Calcola il numero di elementi pari e dispari di un array.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i,k=0;
srand(time(0));
for (i=0; i<MAX; i++) //Ciclo per inizializzazione vettoriin random
{
vett[i]=rand()%20;
cout<<vett[i]<<" ";
}
cout<<endl;
for(i=0; i<MAX; i++)
if (!(vett[i]%2))
k++;
cout<<"N. elementi pari: "<<k<<"\nN. eleementi dispari: "<<MAX-k;
}
12) Date le assenze mensili di uno studente calcola il mese in cui si verificano più assenze.
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX],i,max=0;
for(i=0; i<MAX; i++)
{
cout<<"Assenze MESE ";
switch(i)
{
case (0): cout<<"Settembre:\n"; break;
case (1): cout<<"Ottobre:\n"; break;
case (2): cout<<"Novembre:\n"; break;
case (3): cout<<"Dicembre:\n"; break;
case (4): cout<<"Gennaio:\n"; break;
case (5): cout<<"Febbraio:\n"; break;
case (6): cout<<"Marzo:\n"; break;
case (7): cout<<"Aprile:\n"; break;
case (8): cout<<"Maggio:\n"; break;
case (9): cout<<"Giugno:\n"; break;
}
cin>>vett[i];
}
for(i=0; i<MAX; i++) //Indivudio il valore massimo
if(max<vett[i])
max=vett[i];
for(i=0; i<MAX; i++) //Ricerca posizione valore massimo
if(max==vett[i])
break;
cout<<"\nMAX assenze in ";
switch(i)
{
case (0): cout<<"Settembre"; break;
case (1): cout<<"Ottobre"; break;
case (2): cout<<"Novembre"; break;
case (3): cout<<"Dicembre"; break;
case (4): cout<<"Gennaio"; break;
case (5): cout<<"Febbraio"; break;
case (6): cout<<"Marzo"; break;
case (7): cout<<"Aprile"; break;
case (8): cout<<"Maggio"; break;
case (9): cout<<"Giugno"; break;
}
}
13) Calcola la media dei voti presi da un numero N di studenti in un compito in classe, con N inserito da tastiera e con tutti i voti inseriti in un array.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 30
using namespace std;
int main()
{
int i,N;
float vett[MAX], somma=0;
cout<<"Inserire N. studenti\n";
cin>>N;
cout<<"Ins. voti:\n";
for (i=0;i<N;i++)
{
cout<<":";
do // controllo che il voto inserito si compreso fra 1 e 10
{
cin>>vett[i];
}while (vett[i]<1 || vett[i]>10);
}
for(i=0;i<N;i++)
somma += vett[i];
cout<<"Media voti: "<<somma/N;
}
14) Dato un array di tipo bool determinare se almeno un elemento è falso.
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
bool vett[MAX],stato=0;
int i;
cout<<"Ins. valori:\n";
for(i=0; i<MAX; i++)
cin>>vett[i];
for(i=0; i<MAX; i++)
if(vett[i]==0)
{
stato=1;
break;
}
if (stato)
cout<<"Almeno un elemento falso\n";
else
cout<<"Nessun elemento falso\n";
}
15) Letto in input un array di n numeri interi ed un intero k>1, eliminare dall’array tutti i multipli di k, spostando “a sinistra” gli elementi successivi.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX];
int i,j,k,n=0;
srand(time(0));
for (i=0; i<MAX; i++)
{
vett[i]=rand()%51;
cout<<vett[i]<<" ";
}
do
{
cout<<"\nIns. valore: ";
cin>>k;
}
while (k<=1);
for (i=0; i<MAX; i++)
{
if (!(vett[n]%k))
{
for(j=n; j<MAX-1; j++)
vett[j]=vett[j+1];
}
else
n++;
}
for(i=0; i<n; i++)
cout<<vett[i]<<" ";
}
16) Menù. Inizializzare un array di 5 elementi con valori a piacere (ad es. 1,2,3,4,5). Inizialmente si visualizza il primo elemento, premendo il tasto w si visualizza il successivo, premendo z il precedente. L’elemento successivo all’ultimo è il primo, l’elemento precedente al primo è l’ultimo. Premendo q si interrompe il programma.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 5
using namespace std;
int main()
{
int vett[MAX],i;
char a;
srand(time(0));
for(i=0; i<MAX; i++)
{
vett[i]=rand()%50;
cout<<vett[i]<<" ";
}
cout<<endl;
cout<<vett[0]<<endl;
i=0;
do
{
do
{
cin>>a;
} while( a != 'w' && a != 'z' && a != 'q');
switch (a)
{
case ('w'):
if (i==MAX-1)
i=-1;
i++;
break;
case ('z'):
if (i==0)
i=MAX;
i--;
break;
}
cout<<vett[i]<<endl;
} while ( a != 'q' );
}
17) Ripetere l’esercizio precedente con nessuna azione per la richiesta dell’elemento successivo all’ultimo o precedente a al primo.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 5
using namespace std;
int main()
{
int vett[MAX],i;
char a;
srand(time(0));
for(i=0; i<MAX; i++)
{
vett[i]=rand()%50;
cout<<vett[i]<<" ";
}
cout<<endl;
cout<<vett[0]<<endl;
i=0;
do
{
do
{
cin>>a;
}
while( a != 'w' && a != 'z' && a != 'q');
switch (a)
{
case ('w'):
if (i<MAX-1)
i++;
break;
case ('z'):
if (i>0)
i--;
break;
}
cout<<vett[i]<<endl;
}
while ( a != 'q' );
}
18) Dato il numero di capi di abbigliamento comprati da 10 clienti in un negozio, determina il numero complessivo di capi venduti e la media per cliente.
19) Dati due array di dimensione N, inizializzati con valori casuali tra 0 e 100, stamparli, scambiare gli elementi di indice pari e ristamparli.
#include <iostream>
#include <stdlib.h>
#include <ctime>
#define MAX 10
using namespace std;
int main()
{
int vett[MAX],vett1[MAX];
int i,app;
srand(time(0));
for(i=0; i<MAX; i++)
{
vett[i]=rand()%101;
vett1[i]=rand()%101;
}
cout<<"n.1 n.2\n";
for(i=0; i<MAX; i++)
{
cout<<vett[i]<<" ";
cout<<vett1[i]<<" \n";
}
for(i=0; i<MAX; i++)
if (!(i%2)) //se il resto è zero
{
app=vett1[i];
vett1[i]=vett[i];
vett[i]=app;
}
cout<<"\nVettori modificati\n\n";
for(i=0; i<MAX; i++)
{
cout<<vett[i]<<" ";
cout<<vett1[i]<<" \n";
}
}