0% ont trouvé ce document utile (0 vote)
44 vues8 pages

TP 3 Correction

Les exercices présentent des programmes C qui manipulent des tableaux à l'aide de pointeurs. Les programmes affichent et modifient le contenu des tableaux, vérifient leur symétrie, et trouvent les valeurs minimale et maximale.

Transféré par

rebaiahmed244
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)
44 vues8 pages

TP 3 Correction

Les exercices présentent des programmes C qui manipulent des tableaux à l'aide de pointeurs. Les programmes affichent et modifient le contenu des tableaux, vérifient leur symétrie, et trouvent les valeurs minimale et maximale.

Transféré par

rebaiahmed244
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

Exercice 1

#include <stdio.h>
main()
{
int tab[10] = {1, 2, 11, 4, 19, 12, 10, 13, 1,10};
int *p;
p = tab;
printf("tab[10] = {1, 2, 11, 4, 19, 12, 10, 13, 1,10} \n");
printf("%d\n", *p*2 ); //2
printf("%d\n", *tab*2 );//2
printf("%d\n",*(p+4)-3);//16
printf("%d\n",*(tab+4)-3);//16
printf("%d\n",*(p+7)+*(p+5));//25
printf("%d\n",*(tab+7)+*(tab+5));//25
printf("%d\n",*p*(tab[1]+*tab));//3
printf("%d\n",*tab*(tab[1]+*tab));//3
printf("%d\n",*p++-1);//0
printf("%d\n",*(&*p)*4);//8
printf("%d\n",*(&*tab)*4);//4
}

Exercice 2
#include <stdio.h>
#define N 50
#define M 50
main()
{
/* Déclarations */
int A[N], B[M], C[N+M]; /* tableaux */
int i; /* indice courant */
int n,m;
do{
printf("donner la dim du tableau A \n");
scanf("%d",&n);
}while(n<1 || n>50);
do{
printf("donner la dim du tableau B \n");
scanf("%d",&m);
}while(m<1 || m>50);
/* Saisie des tableaux */
for (i=0; i<n; i++)
{
printf("A[%d]= \n ", i);
scanf("%d", A+i);
}
for (i=0; i<m; i++)
{printf("B[%d]= \n ", i);
scanf("%d", B+i);
}
/* Affichage des tableaux */
printf("Tableau A :\n");
for (i=0; i<n; i++)
{printf("%d \t", *(A+i));}
printf("\n");
printf("Tableau B :\n");
for (i=0; i<m; i++)
{printf("%d \t", *(B+i));}
printf("\n");
/* Copie de A dans C */
for (i=0; i<n; i++)
*(C+i)=*(A+i);
/* Copie de B Dans C */
for (i=0; i<m; i++)
*(C+n+i) = *(B+i);
/* Edition du résultat */
printf("Tableau résultat A :\n");
for (i=0; i<n+m; i++)
printf("%d ", *(C+i));
printf("\n");
}

Exercice 3
#include<stdio.h>
#define N 50
main()
{int t[N],*p1,*p2,X,i;
int n;
do{
printf("donner la dim du tableau t \n");
scanf("%d",&n);
}while(n<1 || n>50);

for(i=0;i<n;i++)
{
printf("t[%d]= \n",i);
scanf("%d",t+i);
}
p1=t;
p2=t+n-1;
while (p1<p2)
{
X=*p1;
*p1=*p2;
*p2=X;
p1++;
p2--;
}
for(i=0;i<n;i++)
printf("t[%d]=%d ",i,t[i]);
}

Exercice 4
//version 1
#include<stdio.h>
#define N 50
main()
{
int t[N],*p1,*p2,i;
int n;
do{
printf("donner la dim du tableau t \n");
scanf("%d",&n);
}while(n<1 || n>50);

for(i=0;i<n;i++)
{
printf("t[%d]= \n",i);
scanf("%d",t+i);
}
p1=t;
p2=t+n-1;
while (p1<p2)
{
if(*p1!=*p2)
break;
p1++;
p2--;
}
if(p2>p1)
printf("tableau non symetrique \n");
else
printf("tableau symetrique \n");
}

//version 2
#include<stdio.h>
#include<stdlib.h>
main()
{
int *t=NULL,*p1,*p2,i;
int n;
do{
printf("donner la dim du tableau t \n");
scanf("%d",&n);
}while(n<1);

t=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
printf("t[%d]= \n",i);
scanf("%d",t+i);
}
p1=t;
p2=t+n-1;
while (p1<p2)
{
if(*p1!=*p2)
break;
p1++;
p2--;
}
if(p2>p1)
printf("tableau non symetrique \n");
else
printf("tableau symetrique \n");
free(t) ;
}

Exercice 5
//version 1
#include<stdio.h>
#define N 100
main()
{
int t[N];
int n,i,max,min;
do{
printf("donner le nombre des entiers à saisir");
scanf("%d",&n);
}while(n>100||n<1);
for(i=0;i<n;i++)
{
do{
printf("donnez la valeur %d= \n",i);
scanf("%d",t+i);
}while(*(t+i)<=0);
}
max=*t;
min=*t;
for(i=1;i<n;i++)
{
if (*(t+i)>max)
max=*(t+i);
else if (*(t+i)<min)
min=*(t+i);
}
printf("min= %d max= %d",min,max);
}

//version 2
#include<stdio.h>
#include <stdlib.h>
main()
{
int* t = NULL; // Ce pointeur va servir de tableau après l'appel du malloc
int n,i,max,min;
do{
printf("donner le nombre des entiers à saisir");
scanf("%d",&n);
}while(n<1);
//allocation dynamique
t= (int*)malloc(n * sizeof(int));
for(i=0;i<n;i++)
{
do{
printf("donnez la valeur %d= \n",i);
scanf("%d",t+i);
}while(*(t+i)<=0);
}
max=*t;
min=*t;
for(i=1;i<n;i++)
{
if (*(t+i)>max)
max=*(t+i);
else if (*(t+i)<min)
min=*(t+i);
}
printf("min= %d max= %d",min,max);
free(t);
}

Vous aimerez peut-être aussi