Informatica 2 Liceo Scientifico Scienze Applicate/esercizi1 funzioni: differenze tra le versioni
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
- 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
- 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 d un vettore generico
- 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
- 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
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 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;
}