Académique Documents
Professionnel Documents
Culture Documents
Les fonctions
Exercice 1
Ecrire une fonction MIN et une fonction MAX qui déterminent le minimum et le maximum de deux nombres réels.
Ecrire un programme se servant des fonctions MIN et MAX pour déterminer le minimum et le maximum de quatre
nombres réels entrés au clavier.
#include <stdio.h>
#include <stdlib.h>
main()
{
float X1,X2,X3,X4,Min,Max;
float MIN(float A, float B);
float MAX(float A, float B);
// saisie des 4 nombres
printf("\nSaisi un premier nombre: ");
scanf("%f",&X1);
Min=X1; Max=X1;
printf("\nSaisi le second nombre: ");
scanf("%f",&X2);
Min=MIN(Min,X2); Max=MAX(Max,X2);
printf("\nSaisi le troisieme nombre: ");
scanf("%f",&X3);
Min=MIN(Min,X3); Max=MAX(Max,X3);
printf("\nSaisi le quatrieme nombre: ");
scanf("%f",&X4);
Min=MIN(Min,X4); Max=MAX(Max,X4);
printf("\nlaplus petite valeur est : %f",Min);
printf("\nlaplus grande valeur est : %f",Max);
}
Exercice 2
Ecrire un programme se servant d'une fonction F pour afficher la table de valeurs de la fonction définie par
f(x) = sin(x) + ln(x)
où x est un entier compris entre 1 et 10.
#include <stdio.h>
#include <math.h>
float F(int A)
{
return(sin(A)+log(A));
}
Exercice 3
Ecrire la fonction NCHIFFRES du type int qui obtient une valeur entière N (positive ou négative) du type long comme
paramètre et qui fournit le nombre de chiffres de N comme résultat.
Ecrire un petit programme qui teste la fonction NCHIFFRES:
Exemple:
Introduire un nombre entier : 6457392
Le nombre 6457392 a 7 chiffres.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int NCHIFFRES(long A);
main()
{
int n;
long L;
int NCHIFFRES(long A)
{
char T[20];
ltoa(A,T,10);
return(strlen(T));
}
Université Mohammed V SMP4 : Module programmation
Faculté des Sciences de Rabat Pr A.RiadSolh
Printemps 2023
Exercice 4
#include <stdio.h>
#include <stdlib.h>
main()
{
int n;
long L;
long FACT(int n);
// saisie d'un nombre
printf("\nIntroduire un nombre entier ");
scanf("%d",&n);
L=FACT(n);
printf("le factoriel de %d = %ld",n,L);
}
long FACT(int n)
{
if(n==0)
return(1);
else
return(n*FACT(n-1));
}
Exercice 5
Déterminer le maximum de N éléments d'un tableau TAB d'entiers de trois façons différentes:
a) la fonction MAX1 retourne la valeur maximale
b) la fonction MAX2 retourne l'indice de l'élément maximal
Ecrire un programme pour tester les trois fonctions.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int i,N=100,*Pmax;
int TAB[100]={0},*P=TAB;
int Max=99,Min=1;
int MAX1(int T[100]);
int MAX2(int T[100]);
srand(time(NULL));
Université Mohammed V SMP4 : Module programmation
Faculté des Sciences de Rabat Pr A.RiadSolh
Printemps 2023
for(i=0;i<N;i++)
TAB[i]=(rand() % (Max - Min + 1)) + Min;
// affichage Tableau TAB
printf("\n- Tableau : ");
for(i=0;i<N;i++)
printf(" %2d",TAB[i]);
// première mŽthode
printf("\n- Methode 1 : MAX1 = %d",MAX1(TAB));
// Deuxieme mŽthode
printf("\n- Methode 2 : MAX2 = %d",TAB[MAX2(TAB)]);
Exercice 6
Ecrire la fonction INSERER qui place un élément X à l'intérieur d'un tableau qui contient N éléments triés par ordre
croissant, de façon à obtenir un tableau à N+1 éléments triés par ordre croissant. La dimension du tableau est
incrémentée dans la fonction INSERER.
#include <stdio.h>
int main(){
int N,i,X,T[100];
/* Saisi de la dimension du tableau */
printf("Introduire la dimension du tableau qui doit être < 100 : ");
scanf("%d", &N);
// Remplissage du tableau avec des valeurs tries
for(i=0;i<N;i++)
T[i]=i+1;
// Affichage du tableau initiale
Université Mohammed V SMP4 : Module programmation
Faculté des Sciences de Rabat Pr A.RiadSolh
Printemps 2023
Exercice 7
Ecrire la fonction TRI_INSERTION qui utilise la fonction INSERER pour trier par ordre croissant les éléments d'un
tableau à N éléments.
Méthode: Trier le tableau de gauche à droite en insérant à chaque fois l'élément I+1 dans le tableau (déjà trié) des I
premiers éléments.
#include <stdio.h>
int main(){
int N,T[100];
/* Saisi de la dimension du tableau */
printf("Introduire la dimension du tableau qui doit être < 100 : ");
scanf("%d", &N);
// Remplissage du tableau
for(int i=0;i<N;i++){
printf("Saisir l'élément %d:",i);
scanf("%d", &T[i]);
}
printf("Tableau initial : \n");
for(int i=0;i<N;i++)
printf(" %2d",T[i]);
TRI_INSERTION(T, N);
printf("\nTableau final : \n");
for(int i=0;i<N;i++)
printf(" %2d",T[i]);
return 0;
}
void TRI_INSERTION(int *T, int N){
int i=1;
Université Mohammed V SMP4 : Module programmation
Faculté des Sciences de Rabat Pr A.RiadSolh
Printemps 2023
while (i<N)
INSERER(*(T+i), T, &i);
}
void INSERER(int X, int *T, int *N){
// Déplacer les éléments plus grands que X d'une position vers l'arrière.
int i=*N;
while(*(T+i-1)>X && i>0){
*(T+i) = *(T+i-1);
i--;
}
// Insertion de X
*(T+i)=X;
/* incrémentation de la dimension du tableau: */
(*N)++;
}
Exercice 8
Ecrire la fonction FUSION qui construit un tableau FUS trié par ordre croissant avec les éléments de deux tableaux A
et B triés par ordre croissant. Pour deux tableaux de dimensions N et M, le tableau FUS aura la dimension N+M.
#include <stdio.h>
#include <stdlib.h>
}
// Stocker les éléments restants du tableau B
while (j < n){
FUS[k] = B[j];
k++;
j++;
}
}
main()
{
int A[] = {1, 3, 5, 7};
int m = 4;
int FUS[m+n];