Vous êtes sur la page 1sur 7

Cours programmation : langage C Annexe2 : Correction TDs

Correction TD N°6 : Les Fonctions

Exercice 1 :

/* Définition de la fonction PERMUT */


void PERMUT(int * N1, int * N2)
{ int aux ;
aux = *N1 ;
*N1=*N2 ;
*N2=aux ;
}

/* Définition de la fonction LIRE_TAB */


void LIRE_TAB(int TAB[], int NMAX, int * N)
{
/* Variables locales */
int I;
/* Saisie de la dimension du tableau */
do
{
printf("Dimension du tableau (max.%d) : ", NMAX);
scanf("%d", N); /* Attention: écrire N et non &N ! */
}
while (*N<0 || *N>NMAX);
/* Saisie des composantes du tableau */
for (I=0; I<*N; I++)
{
printf("Elément[%d] : ", I);
scanf("%d", TAB+I);
}
}

/* Définition de la fonction ECRIRE_TAB */


void ECRIRE_TAB(int TAB[], int N)
{
int I;
for (I=0; I<N; I++)
printf("\n TAB[%d] = %d ", I, TAB[I]);
}

Exercice 2 :

/* Définition de la fonction DIV2 */


int DIV2(int N)
{
int I, Nb ;
Nb =0 ;
while( N%2==0)
{
Nb++ ;
N=N/2 ;
}
return Nb ;
Cours programmation : langage C Annexe2 : Correction TDs

}
/* Définition de la fonction main() */
main()
{
int X, Nb =0;
printf("\n donner un entier : ") ;
scanf("%d",&X) ;
Nb = DIV2(X) ;
printf("\n le nombre de fois de division par 2 est %d ",Nb) ;
}

Exercice 3 :

/* Définition de la fonction LIRE_TAB */


void LIRE_TAB(int TAB[], int NMAX, int * N)
{
/* Variables locales */
int I;
/* Saisie de la dimension du tableau */
do
{
printf("Dimension du tableau (max.%d) : ", NMAX);
scanf("%d", N); /* Attention: écrire N et non &N ! */
}
while (*N<0 || *N>NMAX);
/* Saisie des composantes du tableau */
for (I=0; I<*N; I++)
{
printf("Elément[%d] : ", I);
scanf("%d", TAB+I);
}
}

/* Définition de la fonction VERIF_TRIE */


int VERIF_TRIE(int TAB[], int N)
{
/* Variables locales */
int I=0 ;
while (i<N && TAB[I] < TAB[I+1])
I++ ;
if(I==N)
return 1 ;
else
return 0 ;

}
/* Définition de la fonction main() */
main()
{
int N, X ;
int T[50] ;
LIRE_TAB(T,&N,50) ;
X=VERIF_TRIE(T,N) ;
if(X == 1)
printf("\n Le tableau est trié.") ;
else
Cours programmation : langage C Annexe2 : Correction TDs

printf("\n Le tableau n’est pas trié.") ;


}

Exercice 4 :

/* Définition de la fonction MIN */


int MIN(int X, int Y)
{
/* Variables locales */
int min=0 ;
if((X-Y)>0)
min = X+Y-(X-Y)/2 ;
else if((X-Y)<0)
min = X+Y-(-X+Y)/2 ;
return min ;

}
/* Définition de la fonction main() */
main()
{
int N1, N2, MN ;
printf("\n Donner 2 entiers :") ;
scanf("%d%d",&N1,&N2) ;
MN=MIN(N1,N2) ;
printf("\n Le minimum est %d .",MN) ;
}

Exercice 5 :

int Apparition(char CH[], char c)


{
int Nb =0, i ;
for (i=0; CH[i] != '\0'; i++)
{
If(CH[i]==c)
Nb++;
}
return Nb;
}

Exercice 6 :

/* Définition de la fonction COUT_KM */


float COUT_KM(int NbKm)
{
float cout ; ;
if(NbKm < 100)
cout = (float)NbKm * 0.120 ;
else if(NbKm >100 && NbKm <=1000)
cout = (100 * 0.120)+ ((float)NbKm-100)*0.150 ;
else if(NbKm >1000)
cout = (100 * 0.120)+ (900 * 0.150)+ ((float)NbKm-1000)*170 ;

return cout ;
}
Cours programmation : langage C Annexe2 : Correction TDs

/* Définition de la fonction COUT_JOURNALIER */


float COUT_JOURNALIER(int NbJour)
{
float cout ; ;
cout = (float) NbJour * 75 ;
return cout ;
}

/* Définition de la fonction main() */


main()
{
int km, nj ;
float c1, c2 ;
printf("\n Donner le nombre de jour :") ;
scanf("%d",&nj) ;
printf("\n Donner le nombre de kilomètres :") ;
scanf("%d",&km) ;
c1 = COUT_KM(km) ;
c2 = COUT_JOURNALIER(nj) ;
if(c1>c2 )
printf("\n La tarification par kilomètres est meilleure.") ;
else
printf("\n La tarification journalière est meilleure.") ;

Exercice 7 :

/* Définition de la fonction LIRE_TAB */


void LIRE_TAB(int TAB[], int NMAX, int * N)
{
/* Variables locales */
int I;
/* Saisie de la dimension du tableau */
do
{
printf("Dimension du tableau (max.%d) : ", NMAX);
scanf("%d", N); /* Attention: écrire N et non &N ! */
}
while (*N<0 || *N>NMAX);
/* Saisie des composantes du tableau */
for (I=0; I<*N; I++)
{
printf("Elément[%d] : ", I);
scanf("%d", TAB+I);
}
}
/* Définition de la fonction SYMETRIQUE */
int SYMETRIQUE(int TAB[], int N)
{ int I , J , Sm ;
I=0 ;
J=N-1 ;
Sm=1 ;
while(I<N/2 && Sm ==1)
{ if(TAB[I] !=TAB[J])
Cours programmation : langage C Annexe2 : Correction TDs

Sm=0 ;
I++ ;
J-- ;
}
return Sm ;
}

Exercice 9 :

/* Définition de la fonction LIRE_MATRICE */


void LIRE_MATRICE (int *MAT, int L, int C, int CMAX)
{
/* Variables locales */
int I,J;
/* Saisie des composantes de la matrice */
for (I=0; I<L; I++)
for (J=0; J<C; J++)
{
printf("Elément[%d][%d] : ", I, J);
scanf("%d", MAT + I*CMAX + J);
}
}

/* Définition de la fonction TRANSPO_MATRICE*/


int TRANSPO_MATRICE (int *MAT, int *L, int LMAX, int *C, int CMAX)
{
/* Prototypes des fonctions appelées */
void PERMUTER(int *A, int *B);
/* Variables locales */
int I,J;
int DMAX; /* la plus grande des deux dimensions */
/* Transposition de la matrice */
if (*L>CMAX || *C>LMAX)
return 0;
else
{
DMAX = (*L>*C) ? *L : *C;
for (I=0; I<DMAX; I++)
for (J=0; J<I; J++)
PERMUTER (MAT+I*CMAX+J, MAT+J*CMAX+I);
PERMUTER(L,C); /* échanger les dimensions */
return 1;
}
}

/* Définition de la fonction ECRIRE_MATRICE*/


void ECRIRE_MATRICE (int *MAT, int L, int C, int CMAX)
{
/* Variables locales */
int I,J;
/* Affichage des composantes de la matrice */
for (I=0; I<L; I++)
{
for (J=0; J<C; J++)
printf("%7d", *(MAT + I*CMAX + J));
Cours programmation : langage C Annexe2 : Correction TDs

printf("\n");
}
}
Cours programmation : langage C Annexe2 : Correction TDs

Correction TD N°7 : Les Structures

Exercice 1 :
#include <stdio.h>
main()
{
struct Article
{ int Ref ;
char NOM[10] ;
int Prix ;
} ;
struct Article T[100] ;
int i, n, p1, p2 , px;
int r ;
printf("\n donner le nombre des articles :") ;
scanf("%d",&n) ;

for(i=0 ;i<n ;i++)


{ printf("\n donner la référence de l’article :") ;
scanf("%d",&T[i].Ref) ;
printf("\n donner e nom de l’article :") ;
gets(T[i].Nom) ;
printf("\n donner le prix de l’article :") ;
scanf("%d",&T[i].Prix) ;
}
printf("\n donner 2 prix :") ;
scanf("%d%d",&p1,&p2) ;
printf("\n les articles sont :") ;
for(i=0 ;i<n ;i++)
{ if(p1<T[i].Prix && T[i].Prix>p2)
printf("\n %d",T[i].Ref) ;
}
printf("\n donner la référence d’un article :") ;
scanf("%d",&r) ;
for(i=0 ;i<n ;i++)
{ if(T[i].Ref==r)
printf("\n le prix de l’article ref %d est %d",r,T[i].Prix) ;
}
}

Vous aimerez peut-être aussi