Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi1
Esercizi
media di n numeri
modificaEsercizio n.1 Calcolare la media di n numeri.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{ float somma ,media,x;
int n, i;
cout<<"quanti sono i numeri di cui vuoi trovare la media?";
cin>>n;
somma=0;
for (i=0;i<n;i++)
{ cout<<"inserisci il "<< i+1 <<" elemento";
cin>>x;
somma=somma+x;
}
media=somma/n;
cout<<"la media vale "<<media<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Soluzione con l'uso delle funzioni
#include <cstdlib>
#include <iostream>
using namespace std;
float media( float v[], int n);
int main(int argc, char *argv[])
{ int m,i;
float risultato;
cout<<"quanti sono i numeri di cui vuoi trovare la media?";
cin>>m;
float vett[m];
for (i=0;i<m;i++)
{ cout<<"inserisci il "<< i+1 <<" elemento";
cin>>vett[i];
}
risultato=media(vett,m);
cout<<"la media vale "<<risultato<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
float media( float v[], int n)
{ float somma ,rmedia;
int i;
somma=0;
for (i=0;i<n;i++)
somma=v[i]+somma;
rmedia=somma/n;
return rmedia;
}
fattoriale
modificaEsercizio n.2
calcolare il fattoriale di un numero intero positivo
#include <cstdlib>
#include <iostream>
//Esercizio calcolare il fattoriale di un numero intero positivo
//soluzione non ricorsiva e senza uso funzioni 4!=4*3*2*1 0!=1
using namespace std;
int main(int argc, char *argv[])
{ int i,n;
float risultato;
cout<<" di che numero intero positivo vuoi calcolare il fattoriale?";
cin>>n;
risultato=1;
for( i=n;i>0;i--)
risultato=risultato*i;
cout<<"il fattoriale di "<<n<<" vale "<<risultato<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Soluzione con l'uso delle funzioni
#include <cstdlib>
#include <iostream>
//Esercizio 2 calcolare il fattoriale di un numero intero positivo
//soluzione ricorsiva e con uso funzioni 4!=4*3! 0!=1
using namespace std;
float fattoriale( int n);
int main(int argc, char *argv[])
{ int m;
float risultato;
cout<<" di che numero intero positivo vuoi calcolare il fattoriale?";
cin>>m;
risultato=fattoriale(m);
cout<<"il fattoriale di "<<m<<" vale "<<risultato<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
float fattoriale( int n)
{ if (n==0) return 1;
else return n*fattoriale(n-1);
}
convertitore lire/euro
modificaEsercizio n.3
Realizzare un convertitore lire/euro
#include <cstdlib>
#include <iostream>
//Esercizio Realizzare un convertitore, ad esempio lire/euro.
using namespace std;
int main(int argc, char *argv[])
{ float lire, euro;
const float fattoreconversione= 1936.21;
cout<<"inserisci l'importo in lire";
cin>>lire;
euro=lire/fattoreconversione;
cout<< lire<<" lire sono "<<euro<< " euro"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
soluzione con l'uso delle funzioni
#include <cstdlib>
#include <iostream>
//Esercizio 3 Realizzare un convertitore lire/euro usando una funzione.
using namespace std;
float convertilireineuro(float lire);
int main(int argc, char *argv[])
{ float slire, seuro;
cout<<"inserisci l'importo in lire";
cin>>slire;
seuro=convertilireineuro(slire);
cout<< slire<<" lire sono "<<seuro<< " euro"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
float convertilireineuro(float lire)
{float euro;
const float fattoreconversione= 1936.21;
euro=lire/fattoreconversione;
return euro;
}
Contare gli zeri in una matrice
modificaEsercizio 4
Scrivere un programma che in una matrice assegnata conti quante volte il numero 0 è presente su ciascuna riga.
#include <cstdlib>
#include <iostream>
/* Scrivere un programma che controlla la frequenza degli elementi che hanno
valore pari a 0 in una matrice assegnata.
Restituire i rispettivi valori riga per riga.
*/
using namespace std;
int main(int argc, char *argv[])
{ int m,n,i,j,conta;
cout<<" di quante righe e' composta la matrice ?";
cin >>m;
cout<<" di quante colonne e' composta la matrice ?";
cin >>n;
int mat[m][n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{cout<<"inserisci l'elemento di indice ["<<i<<","<<j<<"] ";
cin>>mat[i][j];
}
for(i=0;i<m;i++)
{ conta=0;
for(j=0;j<n;j++)
if(mat[i][j]==0) conta++;
cout<<"nella riga "<<i<<" della matrice ci sono "<<conta<<" zeri"<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
Soluzione con l'uso delle funzioni
#include <cstdlib>
#include <iostream>
/* Scrivere un programma che controlla la frequenza degli elementi che hanno
valore pari a 0 in una matrice assegnata.
Restituire i rispettivi valori riga per riga.
utilizza le funzioni per risolvere il problema
*/
void inserisci_matrice( int *mt, int m, int n);
void stampa_matrice( int *mt, int m, int n);
void conta_zeri_per_riga( int *mt, int m, int n, int *zeri );
using namespace std;
int main(int argc, char *argv[])
{ int m,n,i,j,conta;
cout<<" di quante righe e' composta la matrice ?";
cin >>m;
cout<<" di quante colonne e' composta la matrice ?";
cin >>n;
int mat[m][n];
inserisci_matrice((int*)mat,m,n);
cout<<"la matrice inserita' e':"<<endl;
stampa_matrice((int*)mat,m,n);
int soluz[m];
conta_zeri_per_riga((int*)mat,m,n,soluz);
for(i=0;i<m;i++)
cout<<"nella riga "<<i<<" della matrice ci sono "<<soluz[i]<<" zeri"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
void inserisci_matrice( int *mt, int m, int n)
{ int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{cout<<"inserisci l'elemento di indice ["<<i<<","<<j<<"] ";
cin>>*(mt+i*n+j);
}
}
void stampa_matrice( int *mt, int m, int n)
{ int i,j;
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
cout<<*(mt+i*n+j)<<"\t";
cout<<endl;
}
}
void conta_zeri_per_riga( int *mt, int m, int n, int *zeri )
{int i,j,conta;
for(i=0;i<m;i++)
{conta=0;
for(j=0;j<n;j++)
if(*(mt+i*n+j)==0) conta++;
*(zeri+i)=conta; //inserisco nel vettore delle soluzioni
}
}
ricerca esaustiva
modificaEsercizio 5
Ricerca di un elemento in vettore.
#include <cstdlib>
#include <iostream>
//Esercizio 7 Ricerca di un elemento in vettore.
using namespace std;
int main(int argc, char *argv[])
{ int i,n,elementoric;
cout<<"inserisci la dimensione del vettore";
cin>>n;
int vett[n];
for(i=0;i<n;i++)
{cout<<"inserisci l'elemnto del vettore di posizione ["<<i<<"]";
cin>>vett[i];
}
cout<<"inserisci l'elemento da ricercare nel vettore";
cin>>elementoric;
cout<<"l'elemento "<<elementoric<<" si trova nelle righe :"<<endl;
for(i=0;i<n;i++)
if(vett[i]==elementoric) cout<<i<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Soluzione con l'uso delle funzioni
#include <cstdlib>
#include <iostream>
//Esercizio 7 Ricerca di un elemento in vettore soluzione con funzioni.
using namespace std;
void trovanumero(int v[],int n, int ncercato, int pos[], int *ntrovati);
int main(int argc, char *argv[])
{ int i,n,elementoric;
cout<<"inserisci la dimensione del vettore";
cin>>n;
int vett[n];
for(i=0;i<n;i++)
{cout<<"inserisci l'elemento del vettore di posizione ["<<i<<"]";
cin>>vett[i];
}
cout<<"inserisci l'elemento da ricercare nel vettore";
cin>>elementoric;
int posizioni[n];// meglio usare una coda ma ... sono pigro in 3^
int quantepos;
trovanumero(vett,n,elementoric,posizioni,&quantepos);
cout<<"l'elemento "<<elementoric<<" si trova nelle righe :"<<endl;
for(i=0;i<quantepos;i++)
cout<<posizioni[i]<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
void trovanumero(int v[],int n,int ncercato, int pos[], int *ntrovati)
{ int i;
*ntrovati=0;// conta quante volte il valore cercato e' presente nel vettore
for(i=0;i<n;i++)
if(v[i]==ncercato)
{ pos[*ntrovati]=i;
(*ntrovati)++;
}
}
somma di 2 vettori
modificaEsercizio 6
Fare la somma di 2 vettori e scrivere il risultato in un terzo vettore c[i]=a[i]+b[i] dimensione del vettore inserita dal'utente ( e quindi variabile)
#include <cstdlib>
#include <iostream>
/* Fare la somma di 2 vettori e scrivere il risultato in un terzo vettore
c[i]=a[i]+b[i] dimensione del vettore inserita dal'utente ( e quindi variabile)
*/
using namespace std;
int main(int argc, char *argv[])
{ int i,n;
cout<<"inserisci la dimensione del vettore";
cin>>n;
int a[n],b[n],c[n];
for(i=0;i<n;i++)
{cout<<"inserisci l'elemento del vettore a di posizione ["<<i<<"]";
cin>>a[i];
}
for(i=0;i<n;i++)
{cout<<"inserisci l'elemento del vettore b di posizione ["<<i<<"]";
cin>>b[i];
}
for(i=0;i<n;i++)
c[i]=a[i]+b[i];
cout<<"il vettore c somma dei vettori a e b e' "<<endl;
for(i=0;i<n;i++)
cout<<"c["<<i<<"]="<<c[i]<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Soluzione con l'uso delle funzioni
#include <cstdlib>
#include <iostream>
/* Fare la somma di 2 vettori e scrivere il risultato in un terzo vettore
c[i]=a[i]+b[i] dimensione del vettore inserita dal'utente (e quindi variabile)
usando le funzioni
*/
void inseriscivettore(int v[],int n);
void stampavettore(int v[],int n);
void sommavettore(int a[],int b[], int c[], int n);
using namespace std;
int main(int argc, char *argv[])
{ int i,n;
cout<<"inserisci la dimensione del vettore";
cin>>n;
int a[n],b[n],c[n];
cout<<"inserisci il vettore a"<<endl;
inseriscivettore(a,n);
cout<<"inserisci il vettore b"<<endl;
inseriscivettore(b,n);
sommavettore(a,b,c,n);
cout<<"il vettore c somma dei vettori a e b e' "<<endl;
stampavettore(c,n);
system("PAUSE");
return EXIT_SUCCESS;
}
void inseriscivettore(int v[],int n)
{int i;
for(i=0;i<n;i++)
{cout<<"inserisci l'elemento del vettore di posizione ["<<i<<"]";
cin>>v[i];
}
}
void sommavettore(int a[],int b[], int c[], int n)
{int i;
for(i=0;i<n;i++)
c[i]=a[i]+b[i];
}
void stampavettore(int v[],int n)
{ int i;
for(i=0;i<n;i++)
cout<<v[i]<<",";
cout<<endl;
}
copia vettore
modificaEsercizio n.7 Scrivere un programma che copia i valori di un vettore su un secondo vettore utilizzando i puntatori.
#include <cstdlib>
#include <iostream>
//Esercizio 9 Scrivere un programma che eguaglia un vettore ad un altro
// utilizzando i puntatori.
using namespace std;
int main(int argc, char *argv[])
{ int i,n;
cout<<"inserisci la dimensione del vettore";
cin>>n;
int a[n],b[n];
int *pa,*pb;
for(i=0;i<n;i++)
{cout<<"inserisci l'elemento del vettore a di posizione ["<<i<<"]";
cin>>a[i];
}
pa=a;
pb=b;
for(i=0;i<n;i++) *pb++=*pa++;
/* il ciclo di prima poteva essere scritto come
for(i=0;i<n;i++)
{ *pb =*pa;
pa++;
pb++;
}
*/
cout<<"il vettore b vale "<<endl;
for(i=0;i<n;i++)
cout<<"b["<<i<<"]="<<b[i]<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Soluzione con l'uso delle funzioni
#include <cstdlib>
#include <iostream>
//Esercizio 9 Scrivere un programma che eguaglia un vettore ad un altro
// utilizzando i puntatori e le funzioni.
using namespace std;
void inseriscivettore(int v[],int n);
void stampavettore(int v[],int n);
void uguagliavettore(int *a,int *b, int n);
int main(int argc, char *argv[])
{ int i,n;
cout<<"inserisci la dimensione del vettore";
cin>>n;
int a[n],b[n];
cout<<"inserisci il vettore a"<<endl;
inseriscivettore(a,n);
uguagliavettore(a,b,n);
cout<<"il vettore b e' "<<endl;
stampavettore(b,n);
system("PAUSE");
return EXIT_SUCCESS;
}
void inseriscivettore(int v[],int n)
{int i;
for(i=0;i<n;i++)
{cout<<"inserisci l'elemento del vettore di posizione ["<<i<<"]";
cin>>v[i];
}
}
void uguagliavettore(int *a,int *b, int n)
{int i;
for(i=0;i<n;i++)
*b++=*a++;
}
void stampavettore(int v[],int n)
{ int i;
for(i=0;i<n;i++)
cout<<v[i]<<",";
cout<<endl;
}