Vous êtes sur la page 1sur 32

Université Ibn Tofail

Ecole Nationale des Sciences Appliquées, Kénitra.

Manuel des travaux dirigés & pratiques


de langage de programmation C

Filière :Licence ISI (S5)


Module : Langage de programmation C

Responsable : Tarik Boujiha

Ecole Nationale des Sciences Appliquées, Campus Universitaire, B.P 242, Kénitra-Maroc
Tél : (+212) 5 37 32 92 46 Fax : (+212) 5 37 32 92 47
Série N° 1
Module : langage de programmation C

Exercice 1 :

Ecrire un programme qui permet de saisir 3 notes d'un étudiant dans 3 matières, étant donnés
les coefficients respectifs 3, 2 et 1, et de calculer sa moyenne générale.

Exercice 2 :

Ecrire un programme qui permet de permuter les valeurs de A et B sans utiliser de variable
auxiliaire.

Exercice 3 :

Ecrire un programme qui permet de saisir un nombre réel puis de déterminer s'il appartient à
un intervalle donné, sachant que les extrémités de l'intervalle sont fixées par l'utilisateur.

Exercice 4 :

Ecrire un programme qui permet de saisir un numéro de couleur de l'arc-en-ciel et d'afficher


la couleur correspondante:

1: Rouge, 2: Orangé, 3: Jaune, 4: Vert, 5: Bleu, 6: Indigo et 7: Violet

Exercice 5 :

Ecrire un programme qui permet de saisir les trois paramètres d'une équation de second degré,
et de discuter les solutions selon les valeurs de a, b et c.

Exercice 6 :

Ecrire un programme qui lit un nombre N entier et qui affiche la somme et le produit de 1 à
N:

1. En utilisant while,

2. En utilisant do… while,

3. En utilisant for.
//********* Solution exercice 1 série 1************
//un programme qui calcule la moyenne générale d'un étudiant
// déclaration des préprocesseurs

#include<stdio.h>
#include<conio.h>
#define C_math 3
#define C_physique 2
#define C_francais 1

// programme principal

main()
{
float math,physique,francais, moyenne;
printf("donner la note de l'etudiant en Math:\n");
scanf("%f",&math);
printf("donner la note de l'etudiant en Physique:\n");
scanf("%f",&physique);
printf("donner la note de l'etudiant en Francais:\n");
scanf("%f",&francais);

// calcul de la moyenne
moyenne=
(math*C_math+physique*C_physique+francais*C_francais)/(C_math+C_physique+C_franca
is);
printf("la moyenne de l'etudiant est %f",moyenne);
getch();
}

//*********Solution exercice 2 série 1************


/*un programme qui permet de permuter les valeurs de A et B
sans utiliser une variable auxiliaire*/

// déclaration des préprocesseurs

#include<stdio.h>
#include<conio.h>

// programme principal

main()
{
int A,B;
printf(" donnez la valeur de A:\n");
scanf("%d",&A);
printf(" donnez la valeur de B:\n");
scanf("%d",&B);
printf(" Avant permutation A=%d et B=%d\n",A,B);

// traitement de permutation
A=A+B;
B=A-B;
A=A-B;
printf(" apres permutation A=%d et B=%d\n",A,B);
getch();
}

//*********Solution exercice 3 série 1************


/*un programme qui permet de saisir un nombre réel
puis de determiner s'il appartient à un intervalle
donné*/

// déclaration des préprocesseurs

#include<stdio.h>
#include<conio.h>

// programme principal

main()
{
float A,max,min;
printf(" donnez la borne superieure de votre intervalle:\n");
scanf("%f",&max);
printf(" donnez la borne inferieure de votre intervalle :\n");
scanf("%f",&min);
printf(" l'intervalle choisi est: [%f,%f]\n",min,max);
printf("donnez un nombre reel:\n");
scanf("%f",&A);
if(A>=min && A<=max)
printf(" le nombre reel %f appartient a l'intervalle [%f,%f]\n",A,min,max);
else
printf(" le nombre reel %f n'appartient pas a l'intervalle [%f,%f]\n",A,min,max);
getch();
}

//********* Solution exercice 4 série 1************


/*un programme qui permet de saisir un nombre réel
un numéro de couleur de l'arc-en-ciel et d'afficher
la couleur correspondante*/

// déclaration des préprocesseurs


#include<stdio.h>
#include<conio.h>

// programme principal

main()
{
int x;
printf(" donnez le numéro de la couleur de l'arc-en-ciel que vous voulez afficher:\n");
scanf("%d",&x);
switch(x)
{
case 1 : printf("\n le numero saisi correspond a la couleur Rouge.");break;
case 2 : printf("\n le numero saisi correspond a la couleur Orange.");break;
case 3 : printf("\n le numero saisi correspond a la couleur Jaune.");//break;
case 4 : printf("\n le numero saisi correspond a la couleur Vert.");//break;
case 5 : printf("\n le numero saisi correspond a la couleur Bleu.");//break;
case 6 : printf("\n le numero saisi correspond a la couleur Indigo.");//break;
case 7 : printf("\n le numero saisi correspond a la couleur Violet.");//break;
default:printf("\n le numero saisi ne correspond a aucune couleur.");
}

getch();
}

//********* Solution exercice 5 série 1************


/*un programme qui permet de saisir les 3 parametres d'une
équation de second degré, et de discuter les solution
selon les valeur de a, b et c*/

// déclaration des préprocesseurs

#include<stdio.h>
#include<conio.h>
#include<math.h>

// programme principal

main()
{
int a,b,c;
float sol,sol1,sol2,delta,rac_delta;
printf(" ce programme va vous permettre de discuter les solution d'une equation de second
degre\n");
printf(" \n a*x^2+b*x+c \n");
printf("\n donnez la valeur de a:");
scanf("%d",&a);
printf("\n donnez la valeur de b:");
scanf("%d",&b);
printf("\n donnez la valeur de c:");
scanf("%d",&c);
printf(" \n l'equation a resoudre est: %d*x^2+%d*x+%d\n",a,b,c);

// on calcul tout d'abord le déterminant


delta=b*b-4*a*c;
rac_delta=sqrt(delta);
// discution des solutions selon les valeur de a,b et c
if( delta>0)
{
sol1=(-b-rac_delta)/(2*a);
sol2=(-b+rac_delta)/(2*a);
printf("l' equation admet deux solution:\n");
printf(" sol1=%f et sol2=%f\n", sol1,sol2);
}
else
if(delta==0)
{
sol=(-b)/(2*a);
printf("l' equation admet une seule solution:\n");
printf(" sol=%f\n", sol);
}
else
printf(" l'equation n'admet pas de solution réelle\n");
getch();
}
Série N° 2
Module : langage de programmation C
Exercice 1 :

Ecrire un programme qui lit la dimension N d'un tableau T du type entier, remplit le tableau
par des valeurs entrées au clavier. Copiez ensuite toutes les valeurs strictement positives dans
un deuxième tableau et toutes les valeurs négatives dans un troisième tableau. Afficher les
trois tableaux.

Exercice 2 :

Ecrire un programme qui transforme un nombre décimal saisi au clavier en binaire. Exemple
(10)10= (1010)2.

Exercice 3 :

Ecrire un programme qui lit la dimension N d'un tableau T du type entier, remplit le tableau
par des valeurs entrées au clavier.

1. Trier le tableau par la méthode de tri à bulle.

2. Rechercher dans le tableau T une valeur X entrée au clavier. Afficher la position de X


si elle se trouve dans le tableau.

Exercice 4 :

Ecrire un programme qui met à zéro les éléments de la diagonale principale d'une matrice
carrée A.

Exercice 5 :

Ecrire un programme qui réalise l'addition et la multiplication de deux matrices A et B.

Exercice 6 :

Ecrire un programme qui transforme une matrice de dimension (N,M) en un vecteur de


dimension N*M.
//********* Solution exercice 1 série 2************
#include<stdio.h>
#include<conio.h>
main()
{
int T[100],Tneg[100],Tpos[100],i,k,j,N;
printf("donnez le nombre des elements du tableau:");
scanf("%d",&N);
printf("saisis les elements du tableau:\n");
for(i=0;i<N;i++)
scanf("%d",&T[i]);
printf("le tableau que vous avez saisi est:\n");
for(i=0;i<N;i++)
printf("%d\t",T[i]);
// la copie des valeurs positive et negative
for(i=0,j=0,k=0;i<N;i++)
{
if( T[i]>0)
{
Tpos[j]=T[i];
j++;
}
else
if(T[i]<0)
{
Tneg[k]=T[i];
k++;
}
}
printf("le tableau des valeurs positive est:\n");
for(i=0;i<j;i++)
printf("%d\t",Tpos[i]);
printf("\n le tableau des valeurs negative est:\n");
for(i=0;i<k;i++)
printf("%d\t",Tneg[i]);
getch();
}

//********* Solution exercice 2 série 2************


#include"stdio.h"
#include"conio.h"

main()
{
int i=0, T[100],N,j;
printf("donnez le nombre a transformer en binaire:\n");
scanf("%d",&N);
while (N!=0)
{
T[i]=N%2;
N=N/2;
i++;
}
printf("la transformation de %d en binaire est:\n",N);
for(j=i-1;j>=0;j--)
printf("%d\t",T[j]);
getch();
}
//********* Solution exercice 3 série 2************
#include"stdio.h"
#include"conio.h"

main()
{
int T[100],N,X,i,j,P;
char C;
printf("donnez le nombre des elements du tableau:\n");
scanf("%d",&N);
printf("saisis les elements du tableau:\n");
for(j=0;j<N;j++)
scanf("%d",&T[j]);
printf("affichage des elements du tableau avant le tri:\n");
for(j=0;j<N;j++)
printf("%d\t",T[j]);
printf("\n");
// tri a bulle
i=N;
while (i>=0)
{
for(j=0;j<i;j++)
{
if (T[j]>T[j+1])
{
P=T[j];
T[j]=T[j+1];
T[j+1]=P;
}
}
i--;
}
printf("affichage des elements du tableau apres le tri:\n");
for(j=0;j<N;j++)
printf("%d\t",T[j]);
// recherche d'une valeur dans le tableau
printf("\n voulez-vous rechercher une valeur dans le tableau:\n");
printf("oui: tapez O\t non:tapez N \n");
getchar();
scanf("%C",&C);
//C=getch();
printf("C=%c",C);
if( C=='O')
{
printf("\n donnez la valeur rechercher:");
scanf("%d",&X);
i=0;
while(X!=T[i] && i<N)
{
i++;
}
if(i>=N)
printf("la valeur de %d ne se trouve pas dans ce tableau\n",X);
else
printf("la valeur de %d se trouve a la position %d\n",X,i+1);
}
else
printf(" au revoir\n");

getch();
}
//********* Solution exercice 4 série 2************
#include<stdio.h>
#include<conio.h>
main()
{
int A[10][10],i,j,L,C;
printf("donnez le nombre de ligne:");
scanf("%d",&L);
printf("donnez le nombre de colonne:");
scanf("%d",&C);
printf("saisis les elements de la matrice A:\n");
for(i=0;i<L;i++)
for(j=0;j<C;j++)
scanf("%d",&A[i][j]);
printf(" avant traitement la matrice A est:\n");
for(i=0;i<L;i++)
{
for(j=0;j<C;j++)
printf("%d\t",A[i][j]);
printf("\n");
}
// Le programme qui met a zero les elements de la diagonale
for(i=0;i<L;i++)
for(j=0;j<C;j++)
if(i==j)
A[i][j]=0;
printf(" apres traitement la matrice A est:\n");
for(i=0;i<L;i++)
{
for(j=0;j<C;j++)
printf("%d\t",A[i][j]);
printf("\n");
}
getch();
}
//********* Solution exercice 5 série 2************
#include<stdio.h>
#include<conio.h>
main()
{
int A[10][10],B[10][10],R[10][10];
int i,j,L,C,N,P,k;
printf("donnez le nombre de ligne de la matrice A:");
scanf("%d",&L);
printf("donnez le nombre de colonne de la matrice A:");
scanf("%d",&C);
printf("saisis les elements de la matrice A:\n");
for(i=0;i<L;i++)
for(j=0;j<C;j++)
scanf("%d",&A[i][j]);
printf(" avant traitement la matrice A est:\n");
for(i=0;i<L;i++)
{
for(j=0;j<C;j++)
printf("%d\t",A[i][j]);
printf("\n");
}
//______________________________________
printf("donnez le nombre de ligne de la matrice B:");
scanf("%d",&N);
printf("donnez le nombre de colonne de la matrice B:");
scanf("%d",&P);
printf("saisis les elements de la matrice B:\n");
for(i=0;i<N;i++)
for(j=0;j<P;j++)
scanf("%d",&B[i][j]);
printf(" avant traitement la matrice B est:\n");
for(i=0;i<N;i++)
{
for(j=0;j<P;j++)
printf("%d\t",B[i][j]);
printf("\n");
}
// Le programme qui calcule le produit de deux matrice
if(C==N)
{
for(i=0;i<L;i++)
for(j=0;j<C;j++)
{
R[i][j]=0;
for(k=0;k<C;k++)
R[i][j]+=A[i][k]*B[k][j] ;
}

printf("la matrice R est:\n");


for(i=0;i<N;i++)
{
for(j=0;j<P;j++)
printf("%d\t",R[i][j]);
printf("\n");
}
}
else
printf("il faut que le nbre le colonne de A soit egale au nobre de ligne de B");
getch();
}
//********* Solution exercice 6 série 2************
#include<conio.h>
#include<stdio.h>
main()
{
int A[10][10],L,C,i,j;
int T[100];
printf("donnez le nombre de ligne de la matrice A:");
scanf("%d",&L);
printf("donnez le nombre de colonne de la matrice A:");
scanf("%d",&C);
printf("saisis les elements de la matrice A:\n");
for(i=0;i<L;i++)
for(j=0;j<C;j++)
scanf("%d",&A[i][j]);
printf(" avant traitement la matrice A est:\n");
for(i=0;i<L;i++)
{
for(j=0;j<C;j++)
printf("%d\t",A[i][j]);
printf("\n");
}
// transformation de la matrice A a un vecteur T
int k=0;
for(i=0;i<L;i++)
for(j=0;j<C;j++)
{
T[k]=A[i][j];
k++;
}
printf(" le vecteur est:\n");
for(i=0;i<k;i++)
printf("%d\t",T[i]);
getch();}
Série N° 3
Module : langage de programmation C

Exercice 1 :
Ecrire un programme qui lit la dimension N d'un tableau T du type entier, remplit le tableau
par des valeurs entières triées par ordre croissant entrées au clavier. Ensuite, insérer une
valeur donnée au clavier dans le tableau T de manière à obtenir un tableau de valeurs triées.
Utiliser le formalisme pointeur.

Exercice 2 :

Ecrire un programme qui lit la dimension N d'un tableau T du type entier, remplit le tableau
par des valeurs entrées au clavier. Ensuite, effacer une valeur donnée au clavier dans le
tableau T et tasser les éléments restants. Utiliser le formalisme pointeur.

Exercice 3 :

Ecrire un programme qui lit Les notes de N élèves d'une classe dans un devoir et les
mémorise dans un tableau. Puis, en utilisant le formalisme pointeur, rechercher et afficher:

 La note maximale,

 La note minimale,

 La moyenne des notes.

Exercice 4 :

Ecrire un programme qui construit et affiche une matrice carrée unitaire de dimensions
entrées au clavier. Utiliser le formalisme pointeur.

Exercice 5 :

Ecrire un programme qui réalise la multiplication d'une matrice de dimensions (N,M) et un


vecteur de dimension M. utiliser le formalisme pointeur.
//********* Solution exercice 1 série 3************
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
int *T,i,N,X;
printf("donnez le nombre des elements du tableau:");
scanf("%d",&N);
// allocation dynamique de la mémoire
T=(int*)malloc(N*sizeof(int));
// gestion d'erreur
if(T==0)
printf("pas d'espace mémoire\n");
printf("saisis les elements du tableau:\n");
for(i=0;i<N;i++)
scanf("%d",T+i);
printf("le tableau que vous avez saisi est:\n");
for(i=0;i<N;i++)
printf("%d\t",*(T+i));
// insertion de valeur X
printf("donnez la valeur de X:\n");
scanf("%d",&X);
for(i=N;i>=0 && *(T+i-1)> X;i--)
*(T+i)= *(T+i-1);
*(T+i)=X;
printf("les valeurs du nouveau tableau apres insertion est:\n");
for(i=0;i<=N;i++)
printf("%d\t",*(T+i));
getch();
}
//********* Solution exercice 2 série 3************
#include<stdio.h>
#include<conio.h>
main()
{
int T[100],i,j,N,X;
printf("donnez le nombre des elements du tableau:");
scanf("%d",&N);
printf("saisis les elements du tableau:\n");
for(i=0;i<N;i++)
scanf("%d",T+i);
printf("le tableau que vous avez saisi est:\n");
for(i=0;i<N;i++)
printf("%d\t",*(T+i));
// effacement des occurrence de valeur X
printf("donnez la valeur de X:\n");
scanf("%d",&X);
for(i=0,j=0;i<N;i++)
if( *(T+i)!=X)
{
*(T+j)=*(T+i);
j++;
}
printf("les valeurs du nouveau tableau apres insertion est:\n");
for(i=0;i<j;i++)
printf("%d\t",*(T+i));
getch();
}
//********* Solution exercice 3 série 3************
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
int *T,i,N,max,min,moy;
printf("donnez le nombre des elements du tableau:");
scanf("%d",&N);
// allocation dynamique de la mémoire
T=(int*)malloc(N*sizeof(int));
// gestion d'erreur
if(T==0)
printf("pas d'espace mémoire\n");
printf("saisis les elements du tableau:\n");
for(i=0;i<N;i++)
scanf("%d",T+i);
printf("affichage des elements du tableau avant libération de la memoire:\n");
for(i=0;i<N;i++)
printf("%d\t",*(T+i));
// affichage de la note maximale et minimale
for(i=1, max=*T,min=*T;i<N;i++)
{
{
if( *(T+i)>max)
max=*(T+i);
}
{
if( *(T+i)<min)
min=*(T+i);
}
}
printf(" \n la valeur max=%d et min=%d",max,min);
free(T);

getch();
}
//********* Solution exercice 4 série 3************
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
int **T,i,j,N,M;
printf("donnez le nombre de ligne:\n");
scanf("%d",&N);
printf("donnez le nombre de colonne:\n");
scanf("%d",&M);
// allocation dynamique de la mémoire
T=(int**)malloc(N*sizeof(int*));
// gestion d'erreur
if(T==0)
printf("pas d'espace mémoire\n");
for(i=0;i<N;i++)
{
T[i]=(int*)malloc(M*sizeof(int));
if(T[i]==0)
printf("pas d'espace mémoire\n");
}
// construction de la matrice carre unitaire

for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
if(i==j)
*((int*)T+i*M+j)=1;
else
*((int*)T+i*M+j)=0;
}
// affichage de la matrice unitaire
printf("la matrice unitaire de dimensions %d et %d est:\n",N,M);
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)

printf("%d\t",*((int*)T+i*M+j));

printf("\n");

getch();
}
//********* Solution exercice 5 série 3************
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
int i,j,k,l,c;
int **a,*b,*v;

printf("donner le nombre de lignes de la matrice a\n");


scanf("%d",&l);
printf("donner le nombre de colonnes de la matrice a\n");
scanf("%d",&c);
a=(int**)malloc(l*sizeof(int*));
if(a==0)
printf("pas d'espaces memoires\n");
for(i=0;i<l;i++)
{
a[i]=(int*)malloc(c*sizeof(int));
if(a[i]==0)
printf("pas d'espace memoires\n");
}
printf("saisir les elements de la matrice a\n");
for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
scanf("%d",(int*)a+i*c+j);
}
printf("voici votre matrice\n");
for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
printf("%d\t",*((int*)a+i*c+j));
printf("\n");
}

printf("donner la taille du vecteur b\n");


scanf("%d",&c);
b=(int*)malloc(c*sizeof(int));
if(a==0)
printf("pas d'espaces memoires\n");
printf("saisir les elements du vecteur b\n");
for(i=0;i<c;i++)
scanf("%d",b+i);
printf("voici votre vecteur\n");
for(i=0;i<c;i++)
printf("%d\t",*(b+i));

v=(int*)malloc(c*sizeof(int));

for(i=0;i<l;i++)
{
*(v+i)=0;
for(j=0;j<c;j++)

*(v+i)+=(*(int*)a+i*c+j)*(*(b+j));
}
printf("les elements du vecteur v sont:\n");
for(i=0;i<c;i++)
printf("%d\t",*(v+i));
getch();
}
Série N° 4
Module : langage de programmation C

Exercice 1 :

Ecrire un programme qui lit une chaîne de caractères CH et qui convertit toutes les majuscules
dans des minuscules et vice-versa. Le résultat sera mémorisé dans la même variable CH et
affiché après la conversion.
1. Utiliser le formalisme tableau de caractères.
2. Utiliser le formalisme pointeur.

Exercice 2 :

Ecrire un programme qui lit un texte TXT et qui enlève toutes les apparitions d'un caractère
entré au clavier en tassant les éléments restants. Les modifications se feront dans la même
variable TXT.
1. Utiliser le formalisme tableau de caractères.
2. Utiliser le formalisme pointeur.

Exercice 3 :

Ecrire un programme qui lit un verbe régulier en "er" au clavier et qui en affiche la
conjugaison au présent de l'indicatif de ce verbe. Contrôlez s'il s'agit bien d'un verbe en "er"
avant de conjuguer.
1. Utiliser le formalisme tableau de caractères.
2. Utiliser le formalisme pointeur.
3. Utiliser les fonctions strcpy, strlen.

Exercice 4 :

Ecrire un programme qui lit 10 mots et les mémorise dans un tableau de chaînes de caractères.
Trier les 10 mots lexicographiquement en utilisant les fonctions strcmp et strcpy. Afficher le
tableau trié. Utilisez la méthode de tri par sélection.
//********* Solution exercice 1 série 4************

#include"conio.h"
#include"stdio.h"
#include"stdlib.h"
main()
{
char *ch;
int i,n,cpt;
printf("donnez le nombre de caractere maximal:\n");
scanf("%d",&n);
printf("saisis une chaine de caractere:\n");
ch=(char*)malloc(n*sizeof(char));
if(ch==0)
printf("pas d espace \n");
getchar();
gets(ch);
printf("la chaine saisie avant conversion est:\n");
puts(ch);
for(i=0,cpt=0;*(ch+i)!='\0';i++)
cpt++;
printf("cpt=%d",cpt);
// conversion
for(i=0;i<=cpt;i++)
{
if(*(ch+i)>='a' && *(ch+i)<='z')
*(ch+i)=*(ch+i)-'a'+'A';
else
if(*(ch+i)>='A' && *(ch+i)<='Z')
*(ch+i)=*(ch+i)-'A'+'a';
}

printf("la chaine saisie apres conversion est:\n");


puts(ch);
getch();
}
//********* Solution exercice 2 série 4************
#include"conio.h"
#include"stdio.h"
#include"stdlib.h"
main()
{
char *TXT,car_sup;
int i,j,n;
printf("saisis le nombre de caractere:\n");
scanf("%d",&n);
TXT=(char*)malloc((n+1)*sizeof(char));
printf("saisis une chaine de caractere:\n");
getchar();
gets(TXT);
printf("la chaine saisie avant la supression d un caractere est:\n");
puts(TXT);
printf("donnez le caractere a suprimer:\n");
scanf("%c",&car_sup);

// supression d'un caractere


for(i=0,j=0;*(TXT+i)!='\0';i++)
if( *(TXT+i)!= car_sup)
{
*(TXT+j)=*(TXT+i);
j++;
}
*(TXT+j)='\0';
printf("la chaine saisie avant la supression d un caractere est:\n");
puts(TXT);
getch();
}
//********* Solution exercice 3 série 4************
#include"conio.h"
#include"stdio.h"
#include"string.h"

main()
{
char *ch1[6]={"je","tu","il","nous","vous","ils"};
char *ch2[6]={"e","es","e","ons","ez","ent"};
char ch[10];
int i,cpt;
printf("saisis le verbe a conjuger:\n");
gets(ch);
for(i=0,cpt=0;ch[i]!='\0';i++)
cpt++;
printf("cpt=%d\n",cpt);
// conjugaison
if(ch[cpt-1]=='r' && ch[cpt-2]=='e')
{
*(ch+cpt-2)='\0';
for(i=0;i<6;i++)
printf("%s\t%s%s\n",ch1[i],ch,ch2[i]);
}
else
printf("saisis svp un verbre du 1er groupe\n");
getch();
}
//********* Solution exercice 4 série 4************

#include"conio.h"
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
main()
{
char **mots;
char ch[20];
int i,k,N;
printf("donnez le nombre de nom:\n");
scanf("%d",&N);
getchar();
// allocation dynamique
mots=(char**)malloc(N*sizeof(char*));
for(i=0;i<N;i++)
{
printf("saisis le %d mot\n",i+1);
gets(ch);
mots[i]=(char*)malloc((strlen(ch)+1)*sizeof(char));
strcpy(mots[i],ch);
}
printf("la liste des mots saisient est:\n");
for(i=0;i<N;i++)
puts(mots[i]);
// le tri par insertion
i=N-1;
while(i>=0)
{
for(k=0;k<i;k++)
if(strcmp(mots[k],mots[k+1])>0)
{
strcpy(ch,mots[k]);
strcpy(mots[k],mots[k+1]);
strcpy(mots[k+1],ch);
}
i--;
}

printf("la liste des mots saisient apres le tri:\n");


for(i=0;i<N;i++)
puts(mots[i]);
getch();
}
Série N° 5
Module : langage de programmation C

Exercice 1 :

Ecrire un programme qui permet d'effectuer les opérations suivantes : (On n'utilisera que les
fonctions)
 Saisir les éléments d'un tableau T d'entiers
 Trier le tableau
 Afficher le tableau trié.
 Afficher la position dans le tableau, d'une valeur saisie au clavier si elle appartient au
tableau T, sinon afficher que l'élément n'existe pas.

N.B. :

Le programme doit définir au moins les fonctions citées ci-dessous. Vous les définissez
dans un fichier appelés "malib.h" . Dans votre programme principal "prog.c", inclure le
fichier "malib.h"

Exercice 2 :

Ecrire un programme qui permet d'effectuer le produit de deux matrices carées :(On n'utilisera
que les fonctions)
 Saisir les éléments de la matrice A et B d'entiers
 Afficher les trois matrices A et B et C.

Exercice 3 :

Ecrire un programme qui lit 10 mots et les mémorise dans un tableau de chaînes de caractères:
on n’utilisera que les fonctions)
 Saisir les mots dans un tableau de chaînes de caractères
 Afficher les mots avant le tri
 Trier les mots lexicographiquement.
 Afficher le tableau trié.
//********* Solution exercice 1 série 5************
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include"malib.h"

// programme parincipal
main()
{
int *Tab,n,i,x;
printf("donnez le nombre des elements du tableau:\n");
scanf("%d",&n);
Tab=allocation(Tab,n);
printf("saisis les elements du tableau:\n");
saisie(Tab,n);
printf("affichage des elements du tableau avant le tri:\n");
affich(Tab,n);
tri(Tab,n);
printf("affichage des elements du tableau apres le tri:\n");
affich(Tab,n);
printf("donnez la valeur de x:\n");
scanf("%d",&x);
recherche(Tab,n,x);
getch();
}

// prototypes des fonctions utilisées


int * allocation(int *T,int N);
void saisie(int *T,int N);
void affich(int *T,int N);
void tri(int *T,int N);
void recherche(int *T,int N,int X);

// definition des fonctions


int * allocation(int *T,int N)
{
T=(int *)malloc(N*sizeof(int));
return(T);
}
//_____________________________
void saisie(int *T,int N)
{int i;
for(i=0;i<N;i++)
scanf("%d",T+i);
}
//______________________________
void affich(int *T,int N)
{int i;
for(i=0;i<N;i++)
printf("%d\t",*(T+i));
}
//________________________________
void tri(int *T,int N)
{
int i,j,c;
i=N-1;
while(i>=0)
{
for(j=0;j<i;j++)
if( *(T+j)>*(T+j+1))
{
c=*(T+j);
*(T+j)=*(T+j+1);
*(T+j+1)=c;
}
i--;
}
}
//________________________________
void recherche(int *T,int N, int X)
{
int i=0;
while(*(T+i)!=X && i<N)
i++;
if(i>=N)
printf("la valeur de %d n'existe pas dans le tableau\n",X);
else
printf("la valeur de %d a la position %d\n",X,i+1);
}

//********* Solution exercice 2 série 5************


#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
// prototypes des fonctions utilisées
int ** allocation(int **T,int L,int C );
void saisie(int **T,int L,int C );
void affich(int **T,int L,int C );
int** produit(int **T,int ** S,int **R, int L,int C );
int i,j;
// programme parincipal
main()
{
int **A,**B,**C,Nl,Nc;
printf("donnez le nombre de ligne de la matrice A et B:\n");
scanf("%d",&Nl);
printf("donnez le nombre de colonne de la matrice A et B:\n");
scanf("%d",&Nc);
A=allocation(A,Nl,Nc);
printf("saisis les elements de la matrice A:\n");
saisie(A,Nl,Nc);
printf("affichage des elements de la matrice A:\n");
affich(A,Nl,Nc);
//------------------------------------------------------
B=allocation(B,Nl,Nc);
printf("saisis les elements de la matrice B:\n");
saisie(B,Nl,Nc);
printf("affichage des elements de la matrice B:\n");
affich(B,Nl,Nc);
//------------------------------------------------------
C=allocation(B,Nl,Nc);
C=produit(A,B,C,Nl,Nc);
printf("le produuit de A et B est:\n");
affich(C,Nl,Nc);
getch();
}

// definition des fonctions


int ** allocation(int **T,int L,int C )
{
T=(int **)malloc(L*sizeof(int*));
for(i=0;i<L;i++)
T[i]=(int *)malloc(C*sizeof(int));
return(T);
}
//_____________________________
void saisie(int **T,int L,int C )
{
for(i=0;i<L;i++)
for(j=0;j<C;j++)
scanf("%d",T[i]+j);
}
//______________________________
void affich(int **T,int L,int C )

{
for(i=0;i<L;i++)
{
for(j=0;j<C;j++)
printf("%d\t",*(T[i]+j));
printf("\n");
}
}
//________________________________
int** produit(int **T,int ** S, int **R,int L,int C )
{
int k;
for(i=0;i<L;i++)
for(j=0;j<C;j++)
{
*(R[i]+j)=0;
for(k=0;k<C;k++)
*(R[i]+j)+=*(T[i]+k)*(*(S[k]+j)) ;
}
return(R);
}
Série N° 6
Module : langage de programmation C

Exercice 1 :

La liste des étudiants est représentée par un tableau de structures qu'on va allouer
dynamiquement.
Un étudiant est représenté par un enregistrement composé des champs suivant :
 Nom : chaîne de caractères représentant le nom de l'étudiant,
 NI : entier représentant le numéro de l'étudiant,
 Groupe : caractère représentant le groupe auquel appartient cet étudiant.

Donnez un programme pour (On n'utilisera que les fonctions) :


 Saisir la liste des étudiants,
 Afficher cette liste,
 Trier, dans l'ordre croissant des noms, ce tableau de structures
 Afficher le tableau trié,
 Un étudiant veut rechercher son numéro d'inscription, pour cela, il tape au clavier son
nom et votre programme doit afficher son nom, son numéro d'inscription et le groupe
auquel il appartient.
//********* Solution exercice 1 série 6************
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// déclaration des fonction
struct etudiant* allocation(struct etudiant *T,int N);
void saisie(struct etudiant *T,int N);
void affich(struct etudiant *T,int N);
void tri(struct etudiant *T,int N);
void recherche(struct etudiant *T,int N,char ch[30]);

// déclaration de la sturucture
struct etudiant
{
char nom[30];
char groupe;
int NI;
};

// programme principal

main()
{
struct etudiant *liste;
int n;
char ch[30];
printf("donnez le nombre des etudiants:\n");
scanf("%d",&n);
liste=allocation(liste,n);
getchar();
printf("saisis la liste des etudiants:\n");
saisie(liste,n);
printf("voici la liste des etudiants avant le tri:\n");
affich(liste,n);
tri(liste,n);
printf("voici la liste des etudiants apres le tri:\n");
affich(liste,n);
printf("saisis le nom rechercher:\n");
gets(ch);
recherche(liste,n,ch);
getch();
}

// définition des fonction

struct etudiant* allocation(struct etudiant *T,int N)


{
T=(struct etudiant*)malloc(N*sizeof(struct etudiant));
if(T==0)
printf("pas d'espace memoire:\n");
return(T);

}
//------------------------------------------------------
void saisie(struct etudiant *T,int N)
{
int i;
for(i=0;i<N;i++)
{
printf("saisis le nom de l'etudiant %d:\n",i+1);
gets(T[i].nom);
printf("saisis le numumero d'inscription:\n");
scanf("%d",&T[i].NI);
getchar();
printf("saisis le groupe de l'etudaint:\n");
scanf("%c",&T[i].groupe);
getchar();
}
}
//-------------------------------------------------------
void affich(struct etudiant *T,int N)
{
int i;
printf(" Nom Num_Iscr groupe\n");
for(i=0;i<N;i++)
printf("%s %d %c\n",T[i].nom,T[i].NI,T[i].groupe);
}
//--------------------------------------------------------
void tri(struct etudiant *T,int N)
{
int i,j;
struct etudiant temp;
i=N-1;
while(i>=0)
{
for(j=0;j<i;j++)
{
if(strcmp(T[j].nom,T[j+1].nom)>0)
{
temp=*(T+j);
*(T+j)=*(T+j+1);
*(T+j+1)=temp;
}
}
i--;
}
}
//----------------------------------------------------------
void recherche(struct etudiant *T,int N,char ch[30])
{
int i;
i=0;
while( strcmp(ch,T[i].nom)!=0 && i<N)
i++;
if(i>=N)
printf("ce nom n existe pas dans la liste:\n");
else
printf(" le nom rechercher est %s %d %c\n",T[i].nom,T[i].NI,T[i].groupe);
}

//********* Solution exercice 2 série 6************


#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
main()
{
FILE * mat;
FILE *matr;
float **T;
int i,j, nl,nc;
mat=fopen("matrice.txt","r");
if(mat==0)
printf("impossible d'ouvrir le fichier:\n");
fscanf(mat,"%d%d",&nl,&nc);
T=(float **)malloc(nl*sizeof(float));
for(i=0;i<nl;i++)
T[i]=(float*)malloc(nc*sizeof(float));
for(i=0;i<nl;i++)
for(j=0;j<nc;j++)
fscanf(mat,"%f",T[i]+j);
printf("voici votre matrice:\n");
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
printf("%.2f\t",*(T[i]+j));
printf("\n");
}
for(i=0;i<nl;i++)
for(j=0;j<nc;j++)
if(i==j)
T[i][j]=0;
matr=fopen("matriceR.txt","w");
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
fprintf(matr,"%.2f\t",*(T[i]+j));
fprintf(matr,"\n");
}
printf("va voir ton fichier:\n");
getch();
}

Vous aimerez peut-être aussi