CorrectionTD5 C

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

LE-Informatique (S3) Programmation C

TD5 : Pointeurs et tableaux


Exercice 1
Version 1 Version 2
#include<stdio.h> #include<stdio.h>
int main() int main()
{ {
int t[50]; int t[50];
int i, n,*p,s=0; int i, n,*p,s=0;
printf("Donnez le nombre d'éléments: "); p=t;
scanf("%d",&n); printf("Donnez le nombre d'éléments: ");
for(p=t;p<t+n;p++) scanf("%d",p); scanf("%d",&n);
//affichage du tableau for(i=0; i<n; i++)
for(p=t;p<t+n;p++) printf("%d\t",*p); scanf("%d", p+i);
printf("\n"); for(i=0; i<n; i++)
//affichage de la somme printf("%d\t", *(p+i));
for(p=t;p<t+n;p++) s = s + *p; printf("\n");
printf("la somme est : %d\n",s); for(i=0; i<n; i++)
} s = s + *(p+i);
printf("la somme est : %d\n",s);
}
Exercice 2
Version 1 Version 2
#include <stdio.h> #include <stdio.h>
main() main()
{ int i, n, min, max ; { int i, n, min, max ;
int *p, t[50] ; int t[50] ;
printf("Donnez le nombre d'éléments: "); printf("Donnez le nombre d'éléments: ");
scanf("%d",&n); scanf("%d",&n);
printf ("donnez %d valeurs\n", n) ; printf ("donnez %d valeurs\n", n) ;
for ( p=t; p<n+t ; p++) scanf ("%d", p) ; for (i=0 ; i<n ; i++) scanf ("%d", t+i) ;
max = min = *t ; max = min = *t ;
for (p=t ; p<n+t ; p++) for (i=1 ; i<n ; i++)
{ if (*p > max) max = *p ; { if (*(t+i) > max)
if (*p < min) min = *p ; {max = *(t+i) ; imax=i}
} if (*(t+i) < min) min = *(t+i) ;
printf ("valeur max : %d\n", max) ; }
printf ("valeur min : %d\n", min) ; printf ("valeur max : %d\n", max) ;
} printf ("valeur min : %d\n", min) ;
}

1 Pr. Samir El Kaddouhi


LE-Informatique (S3) Programmation C

Exercice 3
Version 1 Version 2
#include <stdio.h> #include <stdio.h>
int main() { int main() {
int A[50]; int A[50];
int B[50]; int B[50];
int i, N, M; int i, N, M;
int *P; int *PA, *PB;
printf("Donner la taille du tableau A printf("Donner la taille du tableau A (Max:50):");
(Max: 50): "); scanf("%d",&N);
scanf("%d",&N); printf("Donner la taille du tableau B (Max:50):");
printf("Donner la taille du tableau B scanf("%d",&M);
(Max: 50): "); //La saisie du tableau A
scanf("%d",&M); printf("tableau A:\n");
//La saisie du tableau A for (PA=A;PA<N+A;PA++){
printf("tableau A:\n"); scanf("%d",PA);
for (i=0;i<N;i++){ }
scanf("%d",&A[i]); //La saisie du tableau B
} printf("tableau B:\n");
//La saisie du tableau B for (PB=B;PB<M+B;PB++){
printf("tableau B:\n"); scanf("%d",PB);
for (i=0;i<M;i++){ }
scanf("%d",&B[i]); for (PA=A+N,PB=B;PB<B+M;PB++,PA++){
} *PA=*PB;
P=A+N; }
for (i=0;i<M;i++) //L'affichage du tableau
*(P+i)=*(B+i); for (i=0;i<N+M;i++){
//L'affichage du tableau printf("%d \t",*(A+i));
for (i=0;i<N+M;i++){ }
printf("%d \t",*(A+i)); }
}
}
Exercice 4
#include <stdio.h>
main()
{
/* Déclarations */
int A[50];
int N;
int X;
int *P1, *P2;
/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (P1=A; P1<A+N; P1++)
{
printf("Elément %d : ", P1-A);
scanf("%d", P1);

2 Pr. Samir El Kaddouhi


LE-Informatique (S3) Programmation C

}
printf("Introduire l'élément X à éliminer du tableau : ");
scanf("%d", &X );
/* Affichage du tableau */
for (P1=A; P1<A+N; P1++)
printf("%d \t", *P1);
printf("\n");
/* Effacer toutes les occurrences de X et comprimer : */
for (P1=P2=A; P1<A+N; P1++)
{
*P2 = *P1;
if (*P2 != X)
P2++;
}
N = P2-A;
/* Affichage du nouveau tableau*/
for (P1=A; P1<A+N; P1++)
printf("%d \t", *P1);
printf("\n");
}
Exercice 5
#include <stdio.h>
int main() {
int A[50];
int *P1,*P2;
int i, N, AIDE;
printf("Donner la taille du tableau (Max: 50): ");
scanf("%d",&N);
//La saisie du tableau A
for (i=0;i<N;i++){
scanf("%d",&A[i]);
}
P1=A;
For(P1=A, P2=A+N-1 ; P1<P2 ; P1++,P2--){
AIDE=*P1;
*P1=*P2;
*P2=AIDE;
}
//L'affichage du tableau
for (i=0;i<N;i++){
printf("%d \n",A[i]); }
}
Exercice 6
Version 1 Version 2
#include <stdio.h> #include <stdio.h>
main() main()
{ {
/* Déclarations */ /* Déclarations */

3 Pr. Samir El Kaddouhi


LE-Informatique (S3) Programmation C

int A[50][50]; /* matrice */ int A[50][50]; /* matrice */


int N, M; /* dimensions de la matrice */ int N, M; /* dimensions de la matrice */
int I, J; /* indices courants */ int I, J; /* indices courants */
/* Saisie des données */ int *P=A[0];
printf("Nombre de lignes (max.50) : "); /* Saisie des données */
scanf("%d", &N ); printf("Nombre de lignes (max.50) : ");
printf("Nombre de colonnes (max.50) : "); scanf("%d", &N );
scanf("%d", &M ); printf("Nombre de colonnes (max.50) : ");
/* Lecture de la matrice au clavier */ scanf("%d", &M );
for (I=0; I<N; I++) /* Lecture de la matrice au clavier */
for (J=0; J<M; J++) for (I=0; I<N; I++)
{ for (J=0; J<M; J++)
printf("Elément[%d][%d] : ",I,J); {
scanf("%d", (int *)A+I*M+J); printf("Elément[%d][%d] : ",I,J);
} scanf("%d", P+I*M+J);
/* a) Affichage de la matrice */ }
printf("Matrice donnée :\n"); /* a) Affichage de la matrice */
for (I=0; I<N; I++) printf("Matrice donnée :\n");
{ for (I=0; I<N; I++)
for (J=0; J<M; J++) {
printf("%d\t", *((int *)A+I*M+J)); for (J=0; J<M; J++)
printf("\n"); printf("%d\t", *(P+I*M+J));
} printf("\n");
/* b) Affichage de la transposée de A */ }
printf("Matrice transposée :\n"); /* b) Affichage de la transposée de A */
for (J=0; J<M; J++) printf("Matrice transposée :\n");
{ for (J=0; J<M; J++)
for (I=0; I<N; I++) {
printf("%d\t ", *((int *)A+I*M+J)); for (I=0; I<N; I++)
printf("\n"); printf("%d\t", *(P+I*M+J));
} printf("\n");
} }
}
Exercice 7
#include <stdio.h>
main()
{
/* Déclarations */
int A[50][50]; /* matrice donnée */
int B[50][50]; /* matrice donnée */
int C[50][50]; /* matrice résultat */
int N, M, P; /* dimensions des matrices */
int I, J, K; /* indices courants */
/* Saisie des données */
printf("Nombre de lignes de A (max.50) : ");
scanf("%d", &N );
printf("Nombre de colonnes de A et de lignes de B(max.50) : ");
scanf("%d", &M );
printf("Nombre de colonnes de B (max.50) : ");

4 Pr. Samir El Kaddouhi


LE-Informatique (S3) Programmation C

scanf("%d", &P );
printf("*** Matrice A ***\n");
for (I=0; I<N; I++)
for (J=0; J<M; J++)
{
printf("Elément[%d][%d] : ",I,J);
scanf("%d", (int *)A+I*M+J);
}
printf("*** Matrice B ***\n");
for (I=0; I<M; I++)
for (J=0; J<P; J++)
{
printf("Elément[%d][%d] : ",I,J);
scanf("%d", (int *)B+I*P+J);
}
/* Affichage des matrices */
printf("Matrice donnée A :\n");
for (I=0; I<N; I++)
{
for (J=0; J<M; J++)
printf("%d\t", *((int *)A+I*M+J));
printf("\n");
}
printf("Matrice donnée B :\n");
for (I=0; I<M; I++)
{
for (J=0; J<P; J++)
printf("%d \t", *((int *)B+I*P+J));
printf("\n");
}
/* Affectation du résultat de la multiplication à C */
for (I=0; I<N; I++)
for (J=0; J<P; J++)
{
*((int *)C+I*P+J)=0;
for (K=0; K<M; K++)
*((int *)C+I*P+J) += *((int *)A+I*P+K) * *((int *)B+K*P+J);
}
/* Edition du résultat */
printf("Matrice résultat C :\n");
for (I=0; I<N; I++)
{
for (J=0; J<P; J++)
printf("%d\t", *((int *)C+I*P+J));
printf("\n");
}
}
Exercice 8
#include <stdio.h>

5 Pr. Samir El Kaddouhi


LE-Informatique (S3) Programmation C

main()
{
/* Déclarations */
char CH[101]; /* chaîne donnée */
char *P; /* pointeur d'aide */

/* Saisie des données */


printf("Entrez une ligne de texte (max.100 caractères) :\n");
gets(CH);
/* Placer P à la fin de la chaîne */
Int k=0 ;
for (P=CH; *P; P++)
k++;
/* Affichage du résultat */
printf("La chaîne %s est formée de %d caractères.\n", CH, P-CH);
}
Exercice 9
#include <stdio.h>
#include <string.h>
main()
{
/* Déclarations */
char CH[101]; /* chaîne donnée */
char C; /* lettre à éliminer */
char *P; /* pointeur d'aide dans CH */
/* Saisie des données */
printf("Entrez une ligne de texte (max.100 caractères) :\n");
gets(CH);
printf("Entrez le caractère à éliminer (suivi de Enter) : ");
C=getchar();
/* Comprimer la chaîne à l'aide de strcpy */
for (P=CH;*P;P++)
{
if (*P==C)
strcpy(P, P+1);
}

/* Affichage du résultat */
printf("Chaîne résultat : %s\n", CH);
}
Exercice 10
#include<stdio.h>
#include<stdlib.h>
main()
{ int *pt;
int i,n, min, max, imax, imin, s=0;
float m;
printf("Entrez la taille du tableau \n" );

6 Pr. Samir El Kaddouhi


LE-Informatique (S3) Programmation C

scanf(" %d" ,&n);


/* Allocation dynamique de la mémoire et saisie des éléments du tableau */
pt=(int*) malloc(n*sizeof(float));//pt=(int*) calloc(n, sizeof(float));
if (pt==NULL)
{
printf( " pas assez de mémoire \n" );
system(" pause " );
}
printf(" Saisie du tableau \n " );
for(i=0;i<n;i++)
{ printf ("Élément %d ? \n ",i+1);
scanf(" %d" , pt+i);
}
printf(" Affichage du tableau \n " );
for(i=0;i<n;i++)
printf(" %d \t" , *(pt+i));
printf("\n");
/*la somme*/
for(i=0; i<n; i++)
s = s + *(pt+i);
printf("la somme est : %d\n",s);
/*la moyenne*/
m=(float)s/n;
printf("la moyenne est : %.2f\n",m);
/*max et min*/
max = min = *pt ;
for (i=1 ; i<n ; i++)
{ if (*(pt+i) > max) {
max = *(pt+i) ;
imax=i;
}
if (*(pt+i) < min)
{min = *(pt+i) ;
imin=i;}
}
printf ("valeur max : %d\n", max) ;
printf ("valeur min : %d\n", min) ;
printf ("indice de max : %d\n", imax) ;
printf ("indice de min : %d\n", imin) ;
free(pt);
}

7 Pr. Samir El Kaddouhi

Vous aimerez peut-être aussi