Informatica 2 Liceo Scientifico Scienze Applicate/esercizi1 funzioni: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuova pagina: Esercizio n.1 Scrivi una funzione void per il calcolo dell'area di un trapezio #include <cstdlib> #include <iostream> using namespace std; //questo e' il prototipo della funzione...
(Nessuna differenza)

Versione delle 18:32, 4 mar 2015

Esercizio n.1 Scrivi una funzione void per il calcolo dell'area di un trapezio

  1. include <cstdlib>
  2. 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

  1. include <cstdlib>
  2. 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 d un vettore generico


  1. include <cstdlib>
  2. 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

  1. include <cstdlib>
  2. 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

include <cstdlib>

  1. 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 tramite una funzione


  1. include <cstdlib>
  2. include <iostream>
  3. 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;

}