Informatica 2 Liceo Scientifico Scienze Applicate/esercizi1 funzioni

Indice del libro

Esercizio n.1 Scrivi una funzione void per il calcolo dell'

area di un trapezio modifica

#include <cstdlib>
#include <iostream>

using namespace std;

//questo e' il prototipo della funzione
void areatrapezio (int baseminore, int basemaggiore, int altezza, int *area);


int main(int argc, char *argv[])
{
 int a,b,c,d,e,f,g,h;
 cout<<"inserisci la base minore";
 cin>>a;
 cout<<"inserisci la base maggiore";
 cin>>b;
 cout<<"inserisci l'altezza";
 cin>>c;
 areatrapezio (a,b,c,&d);// 1 chiamata alla funzione
 cout<<"l'area vale "<<d <<endl;
 cout<<"inserisci la base minore";
 cin>>e;
 cout<<"inserisci la base maggiore";
 cin>>f;
 cout<<"inserisci l'altezza";
 cin>>g;
 areatrapezio (e,f,g,&h);// 2 chiamata alla funzione
 cout<<"l'area vale "<<h<<endl;
  system ("PAUSE");
  return 0;
  
}
 
 
// questa e' la dichiarazione della funzione
 
 void areatrapezio (int baseminore, int basemaggiore, int altezza, int *area)
 {
 *area=(baseminore+basemaggiore)*altezza/2;
 }


Esercizio n.2 Scrivi una funzione void per calcolare

l'area di un rettangolo modifica

#include <cstdlib>
#include <iostream>

using namespace std;

 /* calcolo area rettangolo utilizzando le funzioni void
 obiettivo uso funzioni void restituzione valori
 */ 

void arearettangolo(float lato, float altezza, float *area);


int main(int argc, char *argv[])
{
float lato, altezza,a;
cout<<"inserire il lato ";
cin>>lato;
cout<<"inserire l'altezza ";
cin>>altezza;
arearettangolo(lato,altezza,&a);
cout<<"l'area del rettangolo è: "<<a<<endl;

system("PAUSE");
  return 0;
}

void arearettangolo(float lato, float altezza, float *area)
{
*area=lato*altezza;
}

Esercizio n.3 Calcolo del

max e della posizione del massimo di un vettore generico modifica

#include <cstdlib>
#include <iostream>

using namespace std;
void mia(int v[],int n,int *m,int *p);

int main(int argc, char *argv[])
{ int i;
  int vett[3]={3,8,9};
  cout<<"il vettore1 contiene ";
  for(i=0;i<3;i++) cout<<vett[i]<<",";
  cout<<endl;
  int max,posmax;
  mia(vett,3,&max,&posmax);
  cout<<" Il valore max e':"<<max<<endl;
  cout<<" La posizione del max e':"<<posmax<<endl;

  int vett2[7]={7,3,6,1,2,8,0} ;
  cout<<"il vettore2 contiene ";
  for(i=0;i<7;i++) cout<<vett2[i]<<",";
  cout<<endl;
  int max2,posmax2;
  mia(vett2,7,&max2,&posmax2);
  cout<<" Il valore max e':"<<max2<<endl;
  cout<<" La posizione del max e':"<<posmax2<<endl;
  system("PAUSE");
  
  return 0;
}
void mia(int v[],int n,int *m,int *p)
{
 int a;
 int b;
 int i;
 a=v[0];
 b=0;
 for(i=1;i<n;i++)
 if(v[i]>a)
  {
   a=v[i];
   b=i;
  }
  *m=a;
  *p=b;
}

Esercizio n.4 Calcolo del

max di un vettore generico passato tramite puntatore modifica

#include <cstdlib>
#include <iostream>

using namespace std;
/*  trovare il max di un vettore 
    il vettore è passato per indirizzo con sintassi dei puntatori   int *vett
    invece   di passarlo per indirizzo con sintassi dei vettori     int vett[]

*/


void maxvettore (int *vett, int n, int *massimo);


int main(int argc, char *argv[])
{
 int ne ;
 cout<<"inserisci numero elementi vettore? ";
 cin>>ne;
 int altezze[ne];
 int i;
 for(i=0;i<ne;i++)
  { cout<<"inserisci l'elemento di posizione "<< i <<" ?";
   cin>>altezze[i];
  } 
 int soluzione;
 
 maxvettore(altezze,ne,&soluzione);
 cout<<"il max vale "<<soluzione <<endl;

  system ("PAUSE");
  return 0;
  
}
void maxvettore (int *vett, int n, int *massimo)
 { int i;
   *massimo= *(vett+0);
   for(i=0;i<n;i++)
    if ( *(vett+i) > *massimo )
       *massimo = *(vett+i);
   
 }

Esercizio n.5 calcolo del

doppio di un numero tramite funzione void e tramite funzione non void modifica

include <cstdlib>
#include <iostream>

using namespace std;

/*scrivi due funzioni che calcolino il doppio di un numero 
la prima funzione e' void la seconda non void
obiettivo: sottolineare differenza fra void e non void
*/
void doppio(int a, int *c);
int doppio2(int a);

int main(int argc, char *argv[])
{
  int z,k;
  z=3;
  doppio(z,&k);
  cout<<k<<endl;//stampa il doppio di z
  doppio(7,&k);
  cout<<k<<endl;//stampa il doppio di 7
  doppio(2+z*3,&k);
  cout<<k<<endl;//stampa il doppio del valore 2+z*3
  
  k=doppio2(z);
  cout<<k<<endl;//stampa il doppio di z
  k=doppio2(3);
  cout<<k<<endl;//stampa il doppio di 3
  k=doppio2(2+z*3);
  cout<<k<<endl;//stampa il doppio del valore 2+z*3
  
  k=doppio2(4)*7;
  cout<<k<<endl; //56
  k=doppio2(4)*doppio2(6)+7-4;
  cout<<k<<endl;  //99
  k=doppio2(doppio2(6)+7)-4; 
  cout<<k<<endl;  //34
  
  
  system("PAUSE");
  return 0;
}

void doppio(int a, int *c)
{*c = 2*a;
}

int doppio2(int a)
{ return 2*a;
}

Esercizio n.6 Risolvere una

equazione di 2^ grado modifica

tramite una funzione
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;



void soleq2grado(float a,float b,float c,float &x1,float &x2,bool &sol)
{ float delta;
  delta = b*b-4*a*c;
  if(delta <0) 
   { sol=false;
   }
  else
   { x1= (-b-sqrt(delta))/(2*a);
     x2= (-b+sqrt(delta))/(2*a);
     sol=true;
   } 
}  

int main(int argc, char *argv[])
{   
    float s1,s2;
    bool sece;
    
    soleq2grado(5,7,2, s1,s2,sece);// par attuali
    
    if(sece)
     cout<<"x1="<< s1<<" x2= "<< s2<< endl;
    else
     cout<<"nessuna soluzione";
     
    
    float b1,b2,b3, k1,k2;
    cout<<" inserisci a=";
    cin>>b1;
    cout<<" inserisci b=";
    cin>>b2;
    cout<<" inserisci c=";
    cin>>b3;
    
    soleq2grado(b1,b2,b3, k1,k2,sece);// par attuali
    if(sece)
     cout<<"x1="<< k1<<" x2= "<< k2<< endl;
    else
     cout<<"nessuna soluzione";
    
     
    system("PAUSE");
    return EXIT_SUCCESS;
}