Exercices corrigés en langage C++ : Les fonctions
Exercice 1 :
Ecrire une fonction distance ayant comme paramètres 4 doubles xa,ya et xb,yb qui représentent les coordonnées de deux points A et B et qui renvoie la distance AB. Tester cette fonction.
Correction exercice 1 :
Exercice 2 :
Ecrire une fonction f ayant comme paramètres un double x et un booléen ok et qui renvoie un double par un return. La fonction renvoie par un return la racine carrée de (x-1)*(2-x). La fonction renvoie par l'intermédiaire de la variable ok la valeur true si la fonction est définie au point x, false sinon. Tester cette fonction.
Correction exercice 2 :
Exercice 3 :
Ecrire une fonction f ayant en paramètre un entier et qui renvoie par un return un booléen : true si l'entier est premier false sinon. Tester cette fonction.
Correction exercice 3 :
Exercice 4 :
Ecrire une fonction f ayant comme paramètre un entier n et qui renvoie le n-ième nombre premier : cette fonction utilisera la fonction du 3). Tester cette fonction.
Correction exercice 4 :
Exercice 5 :
Ecrire une fonction swap ayant en paramètres 2 entiers a et b et qui echange les contenus de a et de b. Tester cette fonction.
Correction exercice 5 :
Exercice 6 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f doit renvoyer par un return un booléen b indiquant s'il existe une valeur comprise entre 0 et 10 dans les n premières cases du tableau t. Tester cette fonction.
Correction exercice 6 :
Exercice 7 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f doit renvoyer par un return le nombre de valeurs comprises entre 0 et 10 dans les n premières cases du tableau t.Tester cette fonction.
Correction exercice 7 :
Exercice 8 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f possède un autre paramètre v , entier passé par référence. f doit renvoyer par un return un booleén b indiquant s'il existe une valeur comprise entre 1 et 10 dans les n premières cases du tableau t. Si f renvoie true, v est égal à la valeur de la première case du tableau comprise entre 0 et 10. Tester cette fonction.
Correction exercice 8 :
Exercice 9 :
Ecrire une fonction f ayant en paramètres un tableau t1 de taille quelconque et un entier n indiquant la taille du tableau, ainsi qu'un tableau t2 de la même taille que t1. f doit renvoyer par un return un entier nb indiquant le nombre de valeurs comprises entre 0 et 10 dans le tableau t1. f doit mettre dans le tableau t2 les différentes valeurs comprise entre 0 et 10 qu'il a rencontrées dans le tableau t1.
Correction exercice 9 :
Exercice 10 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f doit renvoyer par un return un entier égal à l'indice de la première case du tableau (parmi les n premières) comprise entre 0 et 10. S'il n'existe pas de telle valeur, la fonction renvoie -1. Tester cette fonction.
Correction exercice 10 :
Exercice 1 :
Ecrire une fonction distance ayant comme paramètres 4 doubles xa,ya et xb,yb qui représentent les coordonnées de deux points A et B et qui renvoie la distance AB. Tester cette fonction.
Correction exercice 1 :
#include<iostream> using namespace std; #include<cmath> double distance(double xa, double ya, double xb, double yb) { double dx,dy; dx=xa-xb; dy=ya-yb; return sqrt(dx*dx+dy*dy); } int main() { double x1,y1,x2,y2,d; cout<<"Tapez l'abscisse de A : ";cin>>x1; cout<<"Tapez l'ordonnée de A : ";cin>>y1; cout<<"Tapez l'abscisse de B : ";cin>>x2; cout<<"Tapez l'ordonnée de B : ";cin>>y2; d=distance(x1,y1,x2,y2); cout<<"La distance AB vaut : "<<d<<endl; return 0; }
Exercice 2 :
Ecrire une fonction f ayant comme paramètres un double x et un booléen ok et qui renvoie un double par un return. La fonction renvoie par un return la racine carrée de (x-1)*(2-x). La fonction renvoie par l'intermédiaire de la variable ok la valeur true si la fonction est définie au point x, false sinon. Tester cette fonction.
Correction exercice 2 :
#include<iostream> using namespace std; #include<cmath> double f(double x, bool &ok) { double r=0; if(x>=1 && x<=2){r=sqrt((x-1)*(2-x));ok=true;} else ok=false; return r; } int main() { double x,y; bool ok; cout<<"Tapez x :";cin>>x; y=f(x,ok); if(ok)cout<<"f(x) vaut :"<<y<<endl; else cout<<"x n'est pas correct"<<endl; return 0; }
Exercice 3 :
Ecrire une fonction f ayant en paramètre un entier et qui renvoie par un return un booléen : true si l'entier est premier false sinon. Tester cette fonction.
Correction exercice 3 :
#include<iostream> using namespace std; #include<cmath> bool f(int x) { bool r=true; int d=2; while(r && d*d<=x)if(x%d==0)r=false; else d++; return r; } int main() { int x; bool premier; do{ cout<<"Tapez x :";cin>>x; }while(x<=0); premier=f(x); if(premier)cout<<"x est premier"<<endl; else cout<<"x n'est pas premier"<<endl; return 0; }
Exercice 4 :
Ecrire une fonction f ayant comme paramètre un entier n et qui renvoie le n-ième nombre premier : cette fonction utilisera la fonction du 3). Tester cette fonction.
Correction exercice 4 :
#include<iostream> using namespace std; bool premier(int x) { bool r=true; int d=2; while(r && d*d<=x)if(x%d==0)r=false; else d++; return r; } int Npremier(int N) { int nb=0; int i=2; while(nb!=N) { if(premier(i))nb++; i++; } return i-1; } int main() { int N,p; cout<<"Tapez la valeur de N : ";cin>>N; p=Npremier(N); cout<<"Le N-ième nombre premier est : "<<p<<endl; return 0; }
Exercice 5 :
Ecrire une fonction swap ayant en paramètres 2 entiers a et b et qui echange les contenus de a et de b. Tester cette fonction.
Correction exercice 5 :
#include<iostream> using namespace std; void swap(int &x, int &y) { int temp; temp=x; x=y; y=temp; } int main() { int a,b; cout<<"Tapez a :";cin>>a; cout<<"Tapez b :";cin>>b; swap(a,b); cout<<"a vaut : "<<a<<endl; cout<<"b vaut : "<<b<<endl; return 0; }
Exercice 6 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f doit renvoyer par un return un booléen b indiquant s'il existe une valeur comprise entre 0 et 10 dans les n premières cases du tableau t. Tester cette fonction.
Correction exercice 6 :
#include<iostream> using namespace std; void saisir(int t[],int n) { int i; for(i=0;i<n;i++) { cout<<"Tapez la valeur numero "<<i<<" : "; cin>> t[i]; } } bool f(int t[], int n) { bool trouve=false; int i=0; while(!trouve && i<n) if(t[i]>=0 && t[i]<=10)trouve=true; else i++; return trouve; } int main() { int a[10]; saisir(a,10); bool b; b=f(a,10); if(b)cout<<"Il existe une valeur entre 0 et 10"<<endl; else cout<<"Il n'existe pas de valeurs entre 0 et 10"<<endl; return 0; }
Exercice 7 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f doit renvoyer par un return le nombre de valeurs comprises entre 0 et 10 dans les n premières cases du tableau t.Tester cette fonction.
Correction exercice 7 :
#include<iostream> using namespace std; void saisir(int t[],int n) { int i; for(i=0;i<n;i++) { cout<<"Tapez la valeur numero "<<i<<" : "; cin>> t[i]; } } int f(int t[], int n) { int nb=0; int i; for(i=0;i<n;i++) if(t[i]>=0 && t[i]<=10)nb++; return nb; } int main() { int a[10]; saisir(a,10); int x; x=f(a,10); cout<<"Il y a "<<x<<" valeur(s) entre 0 et 10"<<endl; return 0; }
Exercice 8 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f possède un autre paramètre v , entier passé par référence. f doit renvoyer par un return un booleén b indiquant s'il existe une valeur comprise entre 1 et 10 dans les n premières cases du tableau t. Si f renvoie true, v est égal à la valeur de la première case du tableau comprise entre 0 et 10. Tester cette fonction.
Correction exercice 8 :
#include<iostream> using namespace std; void saisir(int t[],int n) { int i; for(i=0;i<n;i++) { cout<<"Tapez la valeur numero "<<i<<" : "; cin>> t[i]; } } bool f(int t[], int n, int &v) { bool trouve=false; int i=0; while(!trouve && i<n) if(t[i]>=0 && t[i]<=10){trouve=true; v=t[i];}else i++; return trouve; } int main() { int a[10]; bool b; int w; saisir(a,10); b=f(a,10,w); if(b)cout<<"Il existe une valeur entre 0 et 10 : "<<w<<" est la première de ces valeurs."<<endl; else cout<<"Il n'existe pas de valeurs entre 0 et 10"<<endl; return 0; }
Exercice 9 :
Ecrire une fonction f ayant en paramètres un tableau t1 de taille quelconque et un entier n indiquant la taille du tableau, ainsi qu'un tableau t2 de la même taille que t1. f doit renvoyer par un return un entier nb indiquant le nombre de valeurs comprises entre 0 et 10 dans le tableau t1. f doit mettre dans le tableau t2 les différentes valeurs comprise entre 0 et 10 qu'il a rencontrées dans le tableau t1.
Correction exercice 9 :
#include<iostream> using namespace std; void saisir(int t[],int n) { int i; for(i=0;i<n;i++) { cout<<"Tapez la valeur numero "<<i<<" : "; cin>> t[i]; } } void afficher(int t[],int n) { int i; for(i=0;i<n;i++) cout<<t[i]<<" "; cout<<endl; } int f(int t1[], int n,int t2[]) { int i=0,nb=0; for(i=0;i<n;i++)if(t1[i]>=0 && t1[i]<=10){t2[nb]=t1[i];nb++;} return nb; } int main() { int a[10],b[10]; int nb; saisir(a,10); nb=f(a,10,b); cout<<"VOICI LES VALEURS ENTRE 0 ET 10 : "<<endl; afficher(b,nb); return 0; }
Exercice 10 :
Ecrire une fonction f ayant en paramètres un tableau t de taille quelconque et un entier n indiquant la taille du tableau. f doit renvoyer par un return un entier égal à l'indice de la première case du tableau (parmi les n premières) comprise entre 0 et 10. S'il n'existe pas de telle valeur, la fonction renvoie -1. Tester cette fonction.
Correction exercice 10 :
#include<iostream> using namespace std; void saisir(int t[],int n) { int i; for(i=0;i<n;i++) { cout<<"Tapez la valeur numero "<<i<<" : "; cin>> t[i]; } } int f(int t[], int n) { int i=0,ind=-1; while(ind==-1 && i<n) if(t[i]>=0 && t[i]<=10)ind=i;else i++; return ind; } int main() { int a[10]; int w; saisir(a,10); w=f(a,10); if(w!=-1)cout<<"Il existe une valeur entre 0 et 10. " <<"l'indice de la première case est "<<w<<endl; else cout<<"Il n'existe pas de valeurs entre 0 et 10"<<endl; return 0; }
Aucun commentaire:
Enregistrer un commentaire