Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi1

Indice del libro

Esercizi

media di n numeri

modifica

Esercizio 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

modifica

Esercizio 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

modifica

Esercizio 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

modifica

Esercizio 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

modifica

Esercizio 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

modifica

Esercizio 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

modifica

Esercizio 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;
}