Vous êtes sur la page 1sur 34

Correction Des Séries de TD Informatique S5

Filière Ingénieur SICoM 2017/2018


Série 1
Exercice 1 :
#include<stdio.h>

#include<stdlib.h>

main(){

int a;

printf("entrez l'annee :\n");

scanf("%d",&a);

if((a%4==0&&a%100!=0)||a%400==0)

printf("l'annee est bissextile . \n");

else

printf("l'annee n'est pas bissextile . \n");

system("pause");

Exercice 2 :
#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#define PI 3.14

main(){

float r,t,x,y;

printf("Entrez x et y : \n");

scanf("%f%f",&x,&y);

r=sqrt(pow(x,2)+pow(y,2));

if(x>0 && y >=0) t=atan(y/x);

if(x>0 && y<0) t=(2*PI)+atan(y/x);

if(x<0) t=PI+atan(y/x);
if(x==0 && y>0) t=PI/2;

if(x==0 && y<0) t=(3*PI)/2;

if(x==0 && y==0) t=0;

printf("r=%f \nt=%f\n",r,t);

system("pause");

Exercice 3 :
#include<stdio.h>

#include<stdlib.h>

main(){

int code;

float prix,commission;

printf("Choisir L\'activite que vous avez effectue :\n1- vente de voitures neuves.\n2- vente de voitures
d\'occasion .\n3- vente des pieces de rechange .\n4- Reparation des voitures . \n\n ");

ac : scanf("%d",&code);

switch (code){

case 1 : {

printf("entrez le prix de cette acivite\n");

scanf("%f",&prix);

commission=0.02*prix;

if(commission>5000) printf("votre commission est 5000Dhs \n");

else printf("votre commission est %fDhs \n",commission);

break;}

case 2 : {

printf("entrez le prix de cette acivite\n");

scanf("%f",&prix);

commission=0.05*prix;
if(commission<500) printf("votre commission est 500Dhs \n");

else printf("votre commission est %fDhs \n",commission);

break;}

case 3 : {

printf("entrez le prix de cette acivite\n");

scanf("%f",&prix);

commission=0.06*prix;

printf("votre commission est %fDhs \n",commission);

break;}

case 4 : {

printf("entrez le prix de cette acivite\n");

scanf("%f",&prix);

commission=0.1*prix;

printf("votre commission est %fDhs \n",commission);

break;}

default : {

printf("Entrez un code d\'activite valide \n ");

goto ac;

break;

system("pause");

Exercice 4 :
#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int V(int n){

if(n==0) return 2;

if(n%2==0) return V(n-1)+2;


if(n%2!=0) return V(n-1)+4;

float Un(int n){

if(n==0) return 1;

else if(n==1) return 2;

else return Un(n-2)+(pow((-1),n)/n);

float Vn(int n){

if(n==0) return 0;

else if(n==1) return 1;

else return 5*Vn(n-1)+Vn(n-2)+1;

main(){

int n,s=0;

printf("entrez le nombre n\n");

scanf("%d",&n);

for(int i=0;i<n;i++) s+=V(i);

printf("la somme des N premiers termes de la premiere fonction est %d\n\n",s);

printf("le nieme terme de la suite Un est %.2f\n\n",Un(n));

printf("le nieme terme de la suite Vn est %.2f\n\n",Vn(n));

system("pause");

Exercice 5 :
#include<stdio.h>

#include<stdlib.h>
main()

int n,i,k=0;

printf("\nEntrez un entier : \n");

scanf("%d",&n);

for(i=2;i<n;i++){

if(n%i==0) k++;

if(k==0) printf("premier \n");

else printf("non premier \n");

system("pause");

Exercice 6 :
#include<stdio.h>

#include<stdlib.h>

int pgcd(int a,int b){

while(a!=b){

if(a>b) a-=b;

else b-=a;

return a;

int ppcm(int a,int b){

int x,y;

x=a;

y=b;
while(a!=b){

if(a<b) a+=x;

else b+=y;

return a;

main(){

int a,b;

printf("entrez les deux nombres : \n");

scanf("%d%d",&a,&b);

printf("Pour %d et %d on a comme :\npgcd= %d\nppcm= %d\n",a,b,pgcd(a,b),ppcm(a,b));

system("pause");

Exercice 7 :
#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int puissance(int n){

int p=1;

for(int i=1;i<=n;i++){

p*=n;

return p;

int factor(int n){

int i;

if(n==0) return 1;

if(n==1) return 1;

else return n*factor(n-1);

}
main(){

int n,i;

double s=0,s1=0;

printf("entrez le nombre n\n");

scanf("%d",&n);

for(i=1;i<=n;i++){

s+=factor(puissance(i));

for(int j=1;j<=n;j++){

s1+=(puissance(j)/factor(j));

printf("\n1-le %d-ieme terme de la suite U est %f\n",n,s);

printf("\n2-le %d-ieme terme de la suite Un est %f\n",n,s1);

system("pause");

}
Série 2
Exercice 1 :
C’est déjà fait dans l’énoncé.

Exercice 2 :
#include<stdio.h>

void avancer1 (int x){

x+=1;

int avancer2 (int *x){

*x+=2;

return *x;

void reculer2(int x){

x-=2;

int reculer3(int *x){

*x-=3;

return *x;

main(){

int x=6,y=1;

avancer1(x);

printf("\n x=%d",x);

x=avancer2(&y);

printf("\n y=%d",y);

printf("\n x=%d",x);

reculer2(y);

printf("\n y=%d",y);

y=avancer2(&x);

printf("\n y=%d",y);

printf("\n x=%d",x);

y=reculer3(&x);

printf("\n y=%d",y);
printf("\n x=%d",x);

x=reculer3(&y);

printf("\n y=%d",y);

printf("\n x=%d",x);

Exercice 3 :
#include<stdio.h>

#include<stdlib.h>

void echanger(int a , int b ){

int c;

c=a;

a=b;

b=c;

printf("a= %d \nb=%d\n",a,b);

main(){

int a=10,b=22;

echanger(a,b);

system("pause");

Questionne 2 :

#include<stdio.h>

#include<stdlib.h>

void echanger(int *a , int *b ){


int c;

c=*a;

*a=*b;

*b=c;

void permuter(int *a,int *b,int *c){

int x,y,z;

x=*a;

y=*b;

z=*c;

echanger(a,c);

echanger(&y,&z);

main(){

int *a,*b,*c;

a=(int *)malloc(sizeof(int));

b=(int *)malloc(sizeof(int));

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

printf("entrez a et b\n");

scanf("%d%d%d",a,b,c);

echanger(a,b);

printf("a= %d \nb= %d\n",*a,*b);

permuter(a,b,c);

printf("\npermutation 3:\na= %d \nb= %d\nc= %d\n",*a,*b,*c);

system("pause");

Exercice 4 :
#include<stdio.h>

#include<stdlib.h>
void divint (int n,int d,int *q,int *r){

*q=n/d;

*r=n%d;

main(){

int n,d,q,r;

printf("donner n et d\n");

scanf("%d%d",&n,&d);

divint(n,d,&q,&r);

printf("q=%d\nr=%d\n",q,r);

system ("pause");

Exercice 5 :
#include<stdio.h>

#include<stdlib.h>

int fact(int n){

if(n==0) return 1;

else return n*fact(n-1);

float comb(int i,int a){

if(a==0||i==0||i==a) return 1;

else

return (float)(fact(a))/(fact(i)*fact(a-i));

void tri(int n){

int i,j;

printf("\n\nLe triangle de pascale\n\n");

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

printf("%.2f\t",comb(j,i));

printf("\n\n");

main(){

int x;

printf("Entrez le nombre n : \n");

scanf("%d",&x);

tri(x);

system("pause");

Exercice 6 :
#include<stdio.h>

#include<stdlib.h>

int premier(int n){

int k=0,i;

for(i=2;i<n;i++){

if(n%i==0) k++;

if(k==0) return 1;

else return 0;

int parfait(int n){

int i,s=0;

for(i=1;i<n;i++){
if(n%i==0) s+=i;

if(s==n) return 1;

else return 0;

main(){

int n,code;

printf("Entrez le nombre n : \n");

scanf("%d",&n);

ac : {

printf("entrez le code de la fonction que vous voulez effectuer sur %d :\n1-Tester si il est premier.\n2-Tester
si il est parfait. \n",n);

scanf("%d",&code);

switch(code){

case 1 : if(premier(n)) printf("le nombre est %d est premier.\n",n);

else printf("le nombre %d n\'est pas premier.\n",n);

break;

case 2 : if(parfait(n)) printf("le nombre est %d est parfait.\n",n);

else printf("le nombre %d n\'est pas parfait.\n",n);

break;

default : goto ac;

system("pause");

Exercice 7 :
#include<stdio.h>

#include<stdlib.h>

/*int produit(int a, int b){

if(b%2!=0) return a*(b-1)+a;


if(b%2==0 && b!=0) return 2*a*b/2;

}*/

/*pour la fonction récursive */

int produit(int a, int b){

if(b%2!=0) return produit(a,(b-1))+a;

if(b%2==0 && b!=0) return produit(2*a,b/2);

main(){

int a,b;

printf("entrez a et b\n");

scanf("%d%d",&a,&b);

printf("le produit est %d \n",produit(a,b));

system("pause");

}
Série 3
Exercice 1 :
#include<stdio.h>

#include<stdlib.h>

int sousequence(int *t,int n){

int i,k=0;

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

if(t[i+1]<t[i]) k++;

return k;

void saisit(int *t,int n){

int i;

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

printf("entrez le %dieme element : ",i+1);

scanf("%d",&t[i]);

main(){

int n,i,*t;

printf("entrez n\n");

scanf("%d",&n);

t=(int*)malloc(n*sizeof(int));

saisit(t,n);

printf("le nombre de sousequence est %d .\n",sousequence(t,n));

system("pause");

Exercice 2 :
#include<stdio.h>

#include<stdlib.h>
void saisit(int *t,int n){

int i;

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

printf("entrez le %dieme element : ",i+1);

scanf("%d",&t[i]);

void afficher(int *t,int n){

int i;

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

printf("le %dieme element : %d \n",i+1,t[i]);

void nbrdiv(int *t,int n){

int i,s,d;

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

s=1;

d=2;

while (d<=t[i]){

if(t[i]%d==0) s+=d;

d++;

t[i]=s;

main(){

int *t,n;

printf("entrez n\n");

scanf("%d",&n);
t=(int*)malloc(n*sizeof(int));

saisit(t,n);

afficher(t,n);

nbrdiv(t,n);

printf("\nle nouveau tableau :\n");

afficher(t,n);

system("pause");

Exercice 3 :
#include<stdio.h>

#include<stdlib.h>

void existance(int *t,int n,int v){

int i,k=0;

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

if(t[i]==v) k++;

if(k==0) printf("la valeur V=%d n\'existe pas dans ce tableau\n",v);

else printf("la valeur V=%d existe dans ce tableau\n",v);

int dicho(int *t,int d,int f,int v){

int m=(f+d)/2;

if(d>f) return -1;

if(t[m]==v) return m;

if(t[m]<v) return (dicho(t,m+1,f,v));

else return (dicho(t,d,m-1,v));

void saisit(int *t,int n){

int i;

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

printf("entrez le %dieme element : ",i+1);


scanf("%d",&t[i]);

void afficher(int *t,int n){

int i;

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

printf("\nle %dieme element : %d ",i+1,t[i]);

main(){

int *t,n,v;

printf("entrez n\n");

scanf("%d",&n);

t=(int*)malloc(n*sizeof(int));

saisit(t,n);

afficher(t,n);

printf("\nentrez la valeur a chercher : ");

scanf("%d",&v);

printf("\nResultat de la recherche SIMPLE : \n");

existance(t,n,v);

printf("\nResultat de la recherche par la dichotomie : \n");

if(dicho(t,0,n,v)==-1) printf("la valeur %d n\'existe .\n",v);

else printf("la valeur %d existe .\n",v);

system("pause");

Exercice 4 :
#include<stdio.h>

#include<stdlib.h>
void saisit(int *t,int n){

int i;

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

printf("T[%d]= ",i);

scanf("%d",&t[i]);

void afficher(int *t,int n){

int i;

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

printf("T[%d]=%d\n",i,t[i]);

int min(int *t,int n){

int min,i;

min=t[0];

for(i=1;i<n;i++){

if(t[i]<min) min=t[i];

return min;

int max(int *t,int n){

int max,i;

max=t[0];

for(i=1;i<n;i++){

if(t[i]>max) max=t[i];

return max;

}
int Max(int n,int m){

if(n>m) return m;

else return n;

void tableaufinal(int *t,int *r,int n1,int n2){

int i,*c,n;

n=Max(n1,n2);

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

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

for(int j=0;j<n;j++){

if(t[i]==r[j])

c[i]=r[j];

afficher(t,n);

main(){

int *A,*B,*D,n1,n2,n3;

printf("entrez n pour A :\n");

scanf("%d",&n1);

printf("entrez n pour B :\n");

scanf("%d",&n2);

A=(int*)malloc(n1*sizeof(int));

B=(int*)malloc(n2*sizeof(int));

saisit(A,n1);

saisit(B,n2);

printf("le tableau D :\n");

if(min(A,n1)<=min(B,n2) && max(B,n2)>=max(A,n1))

tableaufinal(A,B,n1,n2);

system("pause");

}
Exercice 5 :
#include<stdio.h>

#include<stdlib.h>

#include<math.h>

float U(int n){

int i;

float s=0;

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

s+=(i*(pow((-1),i+1)))/(i+1);

return s;

void tab(float *t){

int i;

for(i=0;i<30;i++){

t[i]=U(i);

void tritab(float *t){

int i,max;

float aide;

for(i=0;i<29;i++){

max=i;

for(int j=i+1;j<30;j++){

if(t[j]>t[max]) max=j;

if(i!=max){

aide=t[max];

t[max]=t[i];

t[i]=aide;
}

void afficher(float *t){

int i;

for(i=0;i<30;i++){

printf("T[%d]=%f\n",i,t[i]);

main(){

float *t;

t=(float*)malloc(30*sizeof(float));

tab(t);

afficher(t);

tritab(t);

printf("\nles valeurs triees : \n");

afficher(t);

system("pause");

Exercice 6 :
#include<stdio.h>

#include<stdlib.h>

int existance(float *t,int n,float v){

int i,k=0;

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

if(t[i]==v) k++;

return k;

}
void saisit(float *t,int n){

int i,j;

printf("T[0]= ");

scanf("%f",&t[0]);

for(i=1;i<n;i++){

printf("T[%d]= ",i);

scanf("%f",&t[i]);

for(j=0;j<i;j++){

if(t[j]==t[i]){

i--;

break;

void afficher(float *t,int n){

int i;

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

printf("T[%d]=%f\n",i,t[i]);

int test(float *t,int n){

int i,k=0,m;

m=t[0];

for(i=1;i<n;i++){

if(m>t[i]){

k++;

break;

}
}

return k;

void tritab1(float *t,int n){

int i,min;

float aide;

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

min=i;

for(int j=i+1;j<30;j++){

if(t[j]>t[min]) min=j;

if(i!=min){

aide=t[min];

t[min]=t[i];

t[i]=aide;

main(){

float *t,*TT;

int n;

printf("entrez le nombre n :\n");

scanf("%d",&n);

t=(float*)malloc(n*sizeof(float));

TT=(float*)malloc(n*sizeof(float));

saisit(t,n);

afficher(t,n);
if(test(t,n)==0) printf("le tableau est trie.\n");

if(test(t,n)!=0) printf("le tableau non trie.\n");

tritab1(t,n);

afficher(t,n);

//for(int i=0;i<n;i++) TT[i]=t[i];

//afficher(TT,n);

system("pause");

}
Série 4
Exercice 1 :
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

main(){

int i,n;

char m[20];

scanf("%s",&m);

n=strlen(m);

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

if(m[i]!=m[n-i-1]) break;

if(i==n) printf("\n%s est palindrome\n",m);

else printf("\n%s n\'est pas palindrome\n",m);

system("pause");

Exercice 2 :
1- Comparaison des chaines de caractères :

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

main(){

int i,l,l1,l2;

char c1[100],c2[100];

printf("\nSaisir les deux chaines de caracteres :\n");

gets(c1);

gets(c2);

if(strcmp(c1,c2)==1){

printf("\n%s > %s\n",c1,c2);

if(strcmp(c1,c2)==0){
printf("\n%s = %s\n",c1,c2);

if(strcmp(c1,c2)==-1){

printf("\n%s < %s\n",c1,c2);

system("pause");

2- Tri par nom :

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct Etudiant{

char nom[200];

char prenom[200];

}Etudiant;

main(){

int i,j,n,min;

Etudiant T[200],q;

printf("entrez le nombre des etudiants : \n");

scanf("%d",&n);

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

printf("Entrez le Nom : ");

scanf("%s",&T[i].nom);

printf("Entrez le Prenom : ");

scanf("%s",&T[i].prenom);

for(i=0;i<n-1;i++){

min=i;

for(j=i+1;j<n;j++)

if(strcmp(T[j].nom,T[min].nom)==-1) min=j;

q=T[i];
T[i]=T[min];

T[min]=q;

printf("le tableau trie : \n");

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

printf("%s ",T[i].nom);

printf("%s\n",T[i].prenom);

system("pause");

Exercice 3 :
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

main(){

char c1[20],c2[20];

int l1,i,j,l2;

printf("entrez le premier mot :\n");

gets(c1);

printf("entrez le deuxieme mot :\n");

gets(c2);

l1=strlen(c1);

l2=strlen(c2);

for(i=0;i<l1;i++){

for(j=0;j<l2;j++)

if(c1[i]==c2[j])

printf("la lettre %c est commune entre %s et %s \n",c1[i],c1,c2);

system("pause");

}
Exercice 4 :
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct Date{

int j;

int m;

int a;

}Date;

typedef struct personne{

char nom[20];

char prenom[20];

}personne;

typedef struct oeuvre{

int code;

char no;

Date d;

personne art;

}oeuvre;

typedef struct art_oeuvre{

personne art;

int nbr_o;

}art_oeuvre;

main(){

oeuvre t[200];

int i,j,n,nbr_omax,comp,ind,nbr_a;

personne art_re;

//saisit
printf("entrez le nombre d oeuvre du musee \n");

scanf("%d",&n);

//les informations

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

printf("Code :");

scanf("%d",&t[i].code);

printf("Nom de l oeuvre :");

scanf("%s",&t[i].no);

printf("entrez la date jj/mm/aa.\n");

scanf("%d",&t[i].d.j);

scanf("%d",&t[i].d.m);

scanf("%d",&t[i].d.a);

printf("Nom d artiste :");

scanf("%s",t[i].art.nom);

printf("Prenom d artiste :");

scanf("%s",t[i].art.prenom);

printf("\n");

//nombre d oevre d'un artiste donne

printf("entrez le nom d artiste et prenom:\n");

scanf("%s %s",&art_re.nom,&art_re.prenom);

comp=0;

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

if(strcmp(art_re.nom,t[i].art.nom)==0 && strcmp(art_re.prenom,t[i].art.prenom)==0 )

comp++;

printf("%s %s a %d oeuvres dans ce musee .\n",art_re.nom,art_re.prenom,comp);

//la plus ancienne ouvre dans le musee

int D[200];

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

D[i]=t[i].d.a*10000+t[i].d.m*100+t[i].d.j;

int min;
ind=0;

min=D[0];

for(i=1;i<n;i++){

if(min>D[i]) ind=i;

printf("la plus ancienne oeuvre dans ce musee est : %s\n",t[ind].no);

system("pause");

Exercice 5 :
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct Date{

int j;

int m;

int a;

}Date;

typedef struct Composant{

int code;

char nom[20];

char classe[20];

char fabr[20];

Date d;

}Composant;

main(){

Composant t[1000];

char fab[20],c1[20],c2[20];

int i,j,n,c;

printf("entrez le nombre des composants : \n");


scanf("%d",&n);

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

printf("Entrez le code :");

scanf("%d",&t[i].code);

printf("Entrez le nom :");

scanf("%s",&t[i].nom);

printf("Entrez la classe :");

scanf("%s",&t[i].classe);

printf("Entrez le fabricant :");

scanf("%s",&t[i].fabr);

printf("entrez la date sous la forme jj/mm/aa \n");

scanf("%d%d%d",&t[i].d.j,&t[i].d.m,&t[i].d.a);

//nombre de composant d'un fabricant donne

printf("\nEntrez le fabricant a chercher : ");

scanf("%s",&fab);

c=0;

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

if(strcmp(t[i].fabr,fab)==0) c++;

printf("%s a %d composant dans l usine . \n",fab,c);

//cherceh les classes

printf("\nEntrez les classes a chercher : ");

scanf("%s et %s",&c1,&c2);

c=0;

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

if(strcmp(t[i].classe,c1)==0 || strcmp(t[i].classe,c2)==0) c++;

printf("il y a %d composants de classe %s et %s dans l usine . \n",c,c1,c2);

//affichage des composants fabriqués entre les deux dates

Date d1,d2;

printf("entrez la premiere date :");

scanf("%d%d%d",&d1.j,&d1.m,&d1.a);
printf("entrez la deuxieme date :");

scanf("%d%d%d",&d2.j,&d2.m,&d2.a);

int D,D1,D2,aide;

D1=d1.a*10000+d1.m*100+d1.j;

D2=d2.a*10000+d2.m*100+d2.j;

if(D1>D2){

aide=D1;

D1=D2;

D2=aide;

printf("les composants fabriques entrez ces deux dates sont :\n");

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

D=t[i].d.a*10000+t[i].d.m*100+t[i].d.j;

if(D1<=D && D2>=D){

printf("%s\n",t[i].nom);

system("pause");

Remarque : Il y a plusieurs façons et méthodes pour résoudre ces programmes, et dans cette
correction, il est possible que vous trouvez des petites fautes ( on est des êtres humains xD). Je vous
souhaite un très bon courage <3 .

Ibrahim TAABANE

Vous aimerez peut-être aussi