0% ont trouvé ce document utile (0 vote)
40 vues29 pages

Correction Des Exercices de Toutes Les Séances Du TP de Programmation 1 (Informatique 3) Série #1

Le document contient des exercices de programmation en C pour les étudiants de la faculté des sciences de l'Université Mohammed Premier. Chaque exercice aborde différents concepts tels que les opérations arithmétiques, les tableaux, les matrices et la gestion de la mémoire. Les solutions sont présentées sous forme de code source avec des commentaires explicatifs.

Transféré par

Marwane Chennouf
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
40 vues29 pages

Correction Des Exercices de Toutes Les Séances Du TP de Programmation 1 (Informatique 3) Série #1

Le document contient des exercices de programmation en C pour les étudiants de la faculté des sciences de l'Université Mohammed Premier. Chaque exercice aborde différents concepts tels que les opérations arithmétiques, les tableaux, les matrices et la gestion de la mémoire. Les solutions sont présentées sous forme de code source avec des commentaires explicatifs.

Transféré par

Marwane Chennouf
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Mohammed Premier Année universitaire 2020-2021

Faculté des Sciences Oujda Filière SMI et SMA S3


Département d’Informatique TP de Programmation 1

Correction des exercices de toutes les séances du


TP de Programmation 1 (Informatique 3)
Série N° 1

Séance 1

Exercice 1
#include<stdio.h>

main() {

int n , m , k1, k2 ;

printf(" donnez la valeur de n : \n ") ;

scanf("%d",&n) ;

printf("donnez la valeur de m : \n") ;

scanf("%d",&m) ;

k1=n/m ;

printf("la division de %d par %d est %d \n ", n , m , k1);

k2=n%m ;

printf("le rest de la division de %d par %d est %d \n ", n , m , k2);

printf(" Le premier entier est : %d le deuxieme entier est : %d \n ", n , m) ;

printf(" La division entiere est : %d le reste de la division est : %d ", k1 , k2 ) ;

getch() ; }
Exercice 2
#include<stdio.h>

#include<math.h>

main() {

float x , y , z ;

float x1 , x2 , y1 , y2 , N ;

float d1 , d2 , D , R;

printf(" donnez la valeur de x : \n ") ;

scanf("%f",&x) ;

printf("donnez la valeur de y : \n") ;

scanf("%f",&y);

printf("donnez la valeur de z : \n") ;

scanf("%f",&z);

if ((z+8)>= 0) x1 = x*x*sqrt(z+8);

x2 = (y*y - 9)*(y*y-9);

if ( (x-3)> 0 ) y1 = log(x-3);

y2 = sin(x+4*z) ;

d1= z-4 ;

d2 = x-y+6 ;

N =x1+x2+y1+y2 ;

D=d1*d2 ;

if (D!= 0) R=N/D ;

printf("la valeur de l expression est %f ", R) ;

getch();}

Exercice 3
La solution est dans le cours
Séance 2
Exercice 1
#include<stdio.h>

main()

{ int n , m , i , S ;

S=1;

printf(" donnez n et m \n ");

scanf("%d",&n);

scanf("%d",&m);

i=1 ;

while(i<=m)

{ S=S*n ;

i++; } ;

printf(" %d a la puiss %d est %d", n , m , S ) ;

getch(); }

Exercice 2
#include<stdio.h>

main()

{ int n , i ;

float S=0;

printf(" donnez n \n ");

scanf("%d",&n);

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

S=S + 1/( (float)i ) ;

printf(" le resultat est %f", S ) ;


getch(); }

Exercice 3
#include<stdio.h>

main()

{ int n , p , pf=1 ;

float S=0;

printf(" donnez n \n ");

scanf("%d",&n);

for(p=1;p<=n;p++)

{ pf=pf*p;

S=S + 1/( (float)pf ) ;

} ;

printf(" le resultat est %f", S ) ;

getch(); }
Série N° 2
Séance 3
Exercice 1

#include<stdio.h>

#define N 10

main() {

float T1[N]={1,2,3,4,5,6,7,8,9,10};

float T2[N];

float T3[N];

int i;

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

T2[i]=i*i-2;

printf(" donnez les element du tableau T3 \n");

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

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

printf(" affichage tableau T1 \n");

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

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

printf(" affichage tableau T2 \n");

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

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

printf(" affichage tableau T3 \n");

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

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

getch();

}
Exercice 2
#include<stdio.h>

main() {

int n;

printf("donnez n la taille du tableau \n");

scanf("%d",&n);

float T[n], max, min, temp;

int i, posMax,posMin;

printf(" donnez les element du tableau T \n");

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

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

printf(" affichage tableau T \n");

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

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

max=min=T[0];

posMax=posMin=0;

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

if(max<T[i]) {max=T[i];

posMax=i;}

if(min>T[i]) {min=T[i];

posMin=i;} }

printf("la max est %f a l indice %d \n", max,posMax);

printf("la min est %f a l indice %d \n", min,posMin);

temp=T[posMax];

T[posMax]=T[posMin];

T[posMin]=temp ;

printf(" nouveau affichage tableau T \n");


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

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

getch();}

Exercice 3
la solution est dans le cours

Séance 4
Exercice 1
#include<stdio.h>

main() {

int n , m;

printf("donnez n et m la taille de matrice \n");

scanf("%d",&n);

scanf("%d",&m);

double T[n][m];

int i , j ;

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

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

T[i][j]=i+j;

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

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

printf("%f \t", T[i][j]);}

printf("\n");

} ;

getch();}
Exercice 2
#include<stdio.h>

main() {

int n , m;

printf("donnez n et m la taille de matrice \n");

scanf("%d",&n);

scanf("%d",&m);

int T[n][m] , X[m] , Y[n] ,s;

int i , j ;

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

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

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

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

scanf("%d",&X[j]);

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

{s=0;

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

s=T[i][j]*X[j];

Y[i]=s;}

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

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

printf("%d \t", T[i][j]);}

printf("\n");

} ;
printf("\n");

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

printf("%d \t", X[j]);

printf("\n");

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

printf("%d \t", Y[i]);

getch();}

Exercice 3
#include<stdio.h>

main() {

int n , m;

printf("donnez n et m la taille de matrice \n");

scanf("%d",&n);

scanf("%d",&m);

double T[n][m], max , min ;

int i , j ;

int imax, jmax, imin, jmin ;

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

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

scanf("%lf",&T[i][j]);

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

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

printf("%f \t", T[i][j]);}

printf("\n");

} ;
max=min=T[0][0];

imax=jmax=imin=jmin=0 ;

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

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

if( max<T[i][j] )

{ max=T[i][j] ;

imax= i;

jmax=j ;

};

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

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

if( min>T[i][j] )

{ min=T[i][j] ;

imin= i;

jmin=j ;

};

printf("le max est %f sur ligne %d et colonne %d \n", max,imax,jmax);

printf("le min est %f sur ligne %d et colonne %d", min,imin,jmin);

getch();}
Série N° 3
Séance 5
Exercice 2
#include<stdio.h>

main(){

int n , m , *p , *q ;

p=&n ;

q=&m ;

printf(" donnez n m \n ") ;

scanf("%d",p); // on lit la valeur de n

scanf("%d",q); // on lit la valeur de m

printf(" avant operataion n= est %d et m= %d\n",n,m );

(*p)++ ; // les parentheses sont important ici

(*q)--;

printf(" apres operataion n= est %d et m= %d\n",n,m );

getch();}

Exercice 3
#include <stdio.h>

#include <stdlib.h>

main() {

int n;

scanf("%d",&n);

float T[n], *Deb, *Fin, *Ind, *PosMax, *PosMin, Som=0;

// PosMax et Ind sont des pointeurs sur des reels ,

// leurs contenus c est l adresse voulu


Deb=T;

Fin=T+(n-1); // Fin =&T[n-1] ;

for(Ind=Deb; Ind<= Fin; Ind++)

{printf ("Entrez T[%d] ",Ind-T);

scanf("%f",Ind);

for(Ind=Deb; Ind<= Fin; Ind++)

printf(" T[%d] =%f \n ",Ind-T, *Ind);

PosMax=T;

PosMin=T;

for(Ind=Deb; Ind<= Fin; Ind++)

if(*Ind>=*PosMax)

PosMax=Ind;

for(Ind=Deb; Ind<= Fin; Ind++)

if(*Ind<=*PosMin)

PosMin=Ind;

printf(" Position du Max %d et sa valeur %f \n", PosMax-Deb, *PosMax);

printf(" Position du Min %d et sa valeur %f \n", PosMin-Deb, *PosMin);

*Ind=*PosMax;

*PosMax=*PosMin;

*PosMin=*Ind;

for(Ind=Deb; Ind<= Fin; Ind++)

printf(" T[%d] =%f \n ",Ind-T, *Ind);


for(Ind=Deb; Ind<= Fin; Ind++)

Som+=*Ind;

printf(" Som des elements de T est %f \n",Som);

getch(); }

Séance 6
Exercice 1
#include <stdio.h>

#include <stdlib.h>

main() {

int n, m, i, j, k;

scanf("%d",&n);

scanf("%d",&m);

float T[n][m], *Deb, *Fin, *Ind, *PosMax, *PosMin;

// PosMax PosMin et Ind sont des pointeurs sur des reels ,

// leurs contenus c est l adresse voulu

Deb=&T[0][0] ;

Fin=&T[n-1][m-1];

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

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

{ printf ("Entrez T[%d][%d]\n ",i,j ) ; scanf("%d", Deb+(i*m)+j ) ; }

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

{ for(j=0;j<m;j++) printf (" %d \t", *( Deb+(i*m)+j) ) ;

printf ("\n");}

// cette façons est dans le cours

*/
for(Ind=Deb; Ind<= Fin; Ind++)

{k=Ind-Deb; // methode pour retrouver les indices

j=k%m;

i=k/m;

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

scanf("%f",Ind);

for(Ind=Deb; Ind<= Fin; Ind++)

k=Ind-Deb;

j=k%m;

i=k/m;

printf("T[%d][%d]=%f ",i,j,*Ind);

if(j==(m-1)) {printf(" \n ") ;}

};

PosMax=Deb;

PosMin=Deb;

for(Ind=Deb; Ind<= Fin; Ind++)

if(*Ind>=*PosMax)

PosMax=Ind;

for(Ind=Deb; Ind<= Fin; Ind++)

if(*Ind<=*PosMin)

PosMin=Ind;

}
k=PosMax-Deb;

j=k%m;

i=k/m;

printf(" Position du Max dans ligne %d et colonne %d, sa valeur %f \n", i,j, *PosMax);

k=PosMin-Deb;

j=k%m;

i=k/m;

printf(" Position du Min dans ligne %d et colonne %d, sa valeur %f \n", i,j, *PosMin);

getch(); }

Exercice 2
#include<stdio.h>

#include <stdlib.h>

main() {

int i ;

int *p;

p=(int*)malloc(8*sizeof(int));

if (p==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " );

exit(0) ; }

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

scanf("%d",p+i);

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

printf(" p[%d]=%d \n",i,*(p+i));

free(p);

getch(); }
Exercice 3
#include <stdio.h>

#include <stdlib.h>

main() {

int i, j ;

float **q;

q=(float**)malloc(4*sizeof(float*));

if (q==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " );

exit(0) ; }

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

{ q[i]=(float*)calloc(5,sizeof(float)); // pour initialiser à zero

if (q[i]==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " ) ;

exit(0) ; }

printf(" donnez les 20 valeurs \n" );

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

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

scanf("%f", (q[i]+j));} }

printf(" Affichage des 20 valeurs \n" );

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

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

printf("%f \t", *(q[i]+j));}

printf("\n");

}
for (i=0;i<4;i++){

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

*(q[i]+j)= *(q[i]+j)**(q[i]+j) +3 ;}

printf(" Affichage des 20 valeurs apres modification \n " );

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

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

printf("%f \t", *(q[i]+j));}

printf("\n");

} ;

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

free(q[i]); // SVP insistez sur l'odre de free pour un tableau

free(q); // Pour free, il faut faire l'inverse qu'avec malloc :

getch(); }

Séance 7
Exercice 1
#include <stdio.h>

#include <stdlib.h>

main() {

int i, j ;

int n, m;

int Imax, Imin,Jmax,Jmin;


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

float T[n][m], Max, Min;

float **q, *p;

printf(" Lecture de la matrice \n " );

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

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

scanf("%f",T[i]+j);}

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

if (q==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " );

exit(0) ; }

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

{ q[i]=(float*)malloc(m*sizeof(float));

if (q[i]==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " ) ;

exit(0) ; }

else

q[i]=&T[i][0] ;

printf(" Affichage de la matrice \n " );

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

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

printf(" %f ", *(q[i]+j));}

printf("\n");

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

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

*(q[i]+j)= 2**(q[i]+j)*2**(q[i]+j) +2 ;}

printf(" Affichage de la matrice apres modif \n " );

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

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

printf(" %f ", *(q[i]+j));}

printf("\n");

};

Max=Min=*q[0];

Imax=Jmax=Imin=Jmin=0;

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

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

{ if (Max<=*(q[i]+j))

{Max=*(q[i]+j);

Imax=i;

Jmax=j;

};

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

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

{ if (Min>=*(q[i]+j))

{Min=*(q[i]+j);

Imin=i;

Jmin=j;
}

};

printf(" la max se trouve au ligne %d et colonne %d sa valeur %f \n", Imax,Jmax,Max);

printf(" la min se trouve au ligne %d et colonne %d sa valeur %f \n", Imin,Jmin,Min);

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

free(q[i]); // SVP insistez sur l'odre de free pour un tableau

free(q); // Pour free, il faut faire l'inverse qu'avec malloc :

getch(); }

Exercice 2
#include <stdio.h>

#include <stdlib.h>

main() {

int i, j ;

int n, m;

printf(" valuer de n et de m \n " );

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

float **A, *X,*Y, s;

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

if (A==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " );

exit(0) ; }

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

{ A[i]=(float*)malloc(m*sizeof(float));

if (A[i]==NULL)
{ printf(" On n'a pas pu allouer de la mémoire " ) ;

exit(0) ; }

printf(" Lecture de la matrice \n " );

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

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

scanf("%f",A[i]+j);}

printf(" \n " );

printf(" Lecture de X \n " );

X=(float*)malloc(m*sizeof(float));

if (X==NULL) exit(0);

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

scanf("%f",X+j);}

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

if (Y==NULL) exit(0);

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

{s=0;

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

{s=s+*(A[i]+j)**(X+j);

Y[i]=s;}

printf(" \n " );

printf(" Affichage de la matrice \n " );


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

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

printf(" %f ", *(A[i]+j));}

printf("\n");

};

printf(" \n " );

printf(" \n " );

printf(" Affichage du vecteur X \n " );

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

printf(" %f ", *(X+j));}

printf(" \n " );

printf(" \n " );

printf(" \n " );

printf(" Affichage du vecteur resultat Y \n " );

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

printf(" %f ", *(Y+j));}

printf(" \n " );

printf(" \n " );

printf(" Redimentionnement \n " );

float **tempA , *tempX, *tempY;

int h, k;
printf(" \n " );

printf(" valuer de h et de k \n " );

scanf("%d",&h); scanf("%d",&k);

printf(" \n " );

printf(" on redim la matrice A \n " );

printf(" \n " );

tempA=(float**)realloc(A,(n+h)*sizeof(float*));

if (tempA==NULL)

printf(" On n'a pas pu allouer de la mémoire A" );

exit(0) ;

};

A=tempA;

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

tempA[i]=(float*)realloc(A[i],(m+k)*sizeof(float));

if (tempA[i]==NULL)

printf(" On n'a pas pu allouer de la mémoire AI %d", i ) ;

exit(0) ;

else

A[i]=tempA[i];

}
for (i=n;i<n+h;i++)

A[i]=(float*)malloc((m+k)*sizeof(float));

if (A[i]==NULL)

{ printf(" On n'a pas pu allouer de la mémoire AI %d", i ) ;

exit(0) ;

printf(" \n " );

printf(" \n " );

printf(" on complte la matrice A \n " );

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

for (j=m;j<m+k;j++) {

scanf("%f",A[i]+j);}

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

for (j=0;j<m+k;j++) {

scanf("%f",A[i]+j);}

printf(" \n " );

printf(" \n " );

printf(" on redim le vecteur X \n " );

tempX=(float*)realloc(X,(m+k)*sizeof(float));

if (tempX==NULL)

exit(0);
else

X=tempX;

printf(" \n " );

printf(" \n " );

printf(" on complte le vecteur X \n " );

for (j=m;j<m+k;j++) {

scanf("%f",X+j);}

printf(" \n " );

printf(" \n " );

printf(" on redim le vecteur Y \n " );

tempY=(float*)realloc(Y,(n+h)*sizeof(float));

if (tempY==NULL)

exit(0);

else

Y=tempY;

printf(" \n " );

for(i=0;i<n;i++) // ici on complete les lignes existantes

for(j=m;j<m+k;j++)

{Y[i]=Y[i]+*(A[i]+j)**(X+j);}

}
for(i=n;i<n+h;i++) // ici on calcule pour les nouvelles lignes

{s=0;

for(j=0;j<m+k;j++)

{s=s+*(A[i]+j)**(X+j);

Y[i]=s;}

printf(" Affichage de la matrice A apres \n " );

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

for (j=0;j<m+k;j++) {

printf(" %f ", *(A[i]+j));}

printf("\n");

};

printf(" \n " );

printf(" Affichage du vecteur X apres \n " );

for (j=0;j<m+k;j++) {

printf(" %f ", *(X+j));}

printf(" \n " ); printf(" \n " );

printf(" Affichage du vecteur resultat Y apres \n " );

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

printf(" %f ", *(Y+j));}

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

free(A[i]); // SVP insistez sur l'odre de free pour un tableau

free(A); // Pour free, il faut faire l'inverse qu'avec malloc :


free(X);

free(Y);

getch(); }

Exercice 3
#include <stdio.h>

#include <stdlib.h>

main() {

int i, j ;

int n, m, k, x;

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

float **A, **B,**P, s;

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

if (A==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " );

exit(0) ; }

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

{ A[i]=(float*)malloc(m*sizeof(float));

if (A[i]==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " ) ;

exit(0) ; }

B=(float**)malloc(m*sizeof(float*));

if (B==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " );

exit(0) ;

}
for (i=0;i<m;i++)

{ B[i]=(float*)malloc(k*sizeof(float));

if (B[i]==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " ) ;

exit(0) ; }

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

if (P==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " );

exit(0) ;

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

{ P[i]=(float*)malloc(k*sizeof(float));

if (P[i]==NULL)

{ printf(" On n'a pas pu allouer de la mémoire " ) ;

exit(0) ; }

printf(" Lecture de la matrice A \n " );

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

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

scanf("%f",A[i]+j);}

printf(" Lecture de la matrice B \n " );

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

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

scanf("%f",B[i]+j);}

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

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

{ s=0;

for (x=0;x<m;x++)

{s=s+*(A[i]+x)**(B[x]+j);}

*(P[i]+j)=s;};

printf(" Affichage de la matrice A \n " );

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

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

printf(" %f ", *(A[i]+j));}

printf("\n");

};

printf(" Affichage de la matrice B \n " );

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

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

printf(" %f ", *(B[i]+j));}

printf("\n");

};

printf(" Affichage de la matrice P \n " );

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

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

printf(" %f ", *(P[i]+j));}

printf("\n");

};

getch(); }

Vous aimerez peut-être aussi