Exercices en langage C++/Les fonctions
Exercices en langage C++ |
---|
Sommaire |
|
Liens |
Modifier ce modèle |
Les fonctions
[modifier | modifier le wikicode]EXERCICE 1
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Création de fonction simple.
- Passage de paramètres par valeur.
- Utilisation de
return
. - Appel d'une fonction.
- Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Création de fonction simple.
- Passage de paramètres par valeur et par référence.
- Utilisation de return.
- Paramètres en entrées et en sorties d'une fonction.
- Appel d'une fonction.
- Jeu de tests d'une fonction.
Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Création de fonction simple.
- Appel d'une fonction.
- Validation des données avant l'appel d'une fonction.
- Fonction renvoyant un booléen.
- Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Création de fonctions simples.
- Appel de fonction.
- Fonction qui appelle une autre fonction.
- Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire une fonction swap ayant en paramètres 2 entiers a et b et qui échange les contenus de a et de b. Tester cette fonction.
Cet exercice a pour but de vérifier les points techniques suivants :
- Création de fonction simple.
- Appel d'une fonction.
- Passage de paramètres par références.
- Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Écriture d'une fonction ayant comme paramètre un tableau de taille quelconque.
- Recherche d'un élément dans un tableau vérifiant une propriété.
- Utilisation de
return
. - Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Écriture d'une fonction ayant comme paramètre un tableau de taille quelconque.
- Compter le nombre d'éléments dans un tableau vérifiant une propriété.
- Utilisation de
return
. - Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire 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 booléen 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Écriture d'une fonction ayant comme paramètre un tableau de taille quelconque.
- Recherche d'un élément dans un tableau.
- Utilisation de
return
. - Voici le fichier source :
#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
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Écriture d'une fonction ayant comme paramètre un tableau de taille quelconque.
- Extraction d'un sous-liste d'éléments.
- Utilisation de
return
. - Voici le fichier source :
#include<iostream>
using namespace std;
void saisir(int t[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<"Tapez la valeur numéro "<<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
[modifier | modifier le wikicode]Écrire 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.
Cet exercice a pour but de vérifier les points techniques suivants :
- Écriture d'une fonction ayant comme paramètre un tableau de taille quelconque.
- Recherche d'un élément dans un tableau.
- Utilisation de
return
. - Voici le fichier source :
#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;
}