mardi 22 avril 2014

TP3 ; Exercices corrigés en Langage C

Exercices corrigés en Langage C

Exercice 1 :

Ecrire un programme qui saisit la dimension N d’un tableau de int (le tableau est initialement
définit avec une taille maximum MAX que N ne doit pas excéder) remplit le tableau par des valeurs
entrées au clavier et l’affiche.

Le programme doit ensuite effacer toutes les occurrences de la valeur 0 dans le tableau, tasser les
éléments restants et afficher le tableau ainsi modifier.

Pour cela écrire les fonctions suivantes :

void SaisirTableau (int *Tab, int N) ;
void AfficherTableau(int *Tab, int N) ;
int TasserTableau(int *Tab , int N) ;

Correction exercice 1 :

#include <stdio.h> 
#define MAX 50 
void SaisirTableau(int *, int ) ; 
void AfficherTableau(int *, int) ; 
int TasserTableau(int *, int) ; 
main() 

 /* Déclarations */ 
int T[MAX]; /* tableau donné */ 
int N,M; /* dimension */ 

/* Saisie de la dimension */ 

do 

printf("Dimension du tableau (max.%d) : ",MAX); 
scanf("%d", &N ); 
}while(N>MAX) ; 

/* Saisie des données */ 

SaisirTableau(T,N) ; 

 /* Affichage du tableau */ 

AfficherTableau(T,N) ; 

/*Tasser les elements du tableau */ 

M = TasserTableau(T,N) ; 

/* Edition des résultats */ 


AfficherTableau(T ,M) ; 



void SaisirTableau(int *Tab, int N) 


int i ; 

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


printf("Elément %d : ", i); 
scanf("%d", &Tab[i]); 



void AfficherTableau(int *Tab, int N) 



int i ; 
printf("Tableau donné : \n"); 
for (i=0; i<N; i++)

 printf("%d ", Tab[i]); 

printf("\n"); 


int TasserTableau(int * Tab, int N) 


int i,j ; 

/* Effacer les zéros et comprimer : */ 

/* Copier tous les éléments de i vers j et */ 
/* augmenter j pour les éléments non nuls. */ 

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


Tab[j] = Tab[i] ; 
if (Tab[i]) 
j++ ; 

 /* La nouvelle dimension du tableau est retournée */ 
return j ; 


Exercice 2 :

Ecrire un programme qui saisit la dimension N d’un tableau de int remplit le tableau par des
valeurs entrées au clavier et l’affiche.

Copier ensuite toutes les composantes strictement positives dans un deuxième tableau Tpos et
toutes les valeurs strictement négatives dans un tableau Tneg. Afficher Tpos et Tneg.

Ecrire la fonction suivante :

int TrierTableau(int *, int *, int *,int)

Correction exercice 2 :

#include <stdio.h> 
#define MAX 50 
main() 

 /* Déclarations */

 /* Les tableaux et leurs dimensions */ 

int T[MAX], TPOS[MAX], TNEG[MAX]; 
int N,M, Npos, NNEG; 
int I; /* indice courant */ 

/* Saisie de la dimension */ 

do 

printf("Dimension du tableau (max.%d) : ",MAX); 
scanf("%d", &N ); 

}while(N>MAX) ; 


/* Saisie des données */ 


SaisirTableau(T,N) ; 


 /* Affichage du tableau */ 

AfficherTableau(T,N) ; 

/*Tasser les elements du tableau */ 

M = TasserTableau(T,N) ; 

/* Trier le tableau */ 

Npos = TrierTableau(T,TPOS,TNEG,M) ; 

/* Edition des resultats */ 

printf(”Elements positifs : \n”) ; 
AfficherTableau(TPOS,Npos) ; 
printf(”Elements négatifs : \n”) ; 
AfficherTableau(TNEG,N-Npos) ; 


int TrierTableau(int *T, int *TPOS, int *TNEG, int N) 


 int npos=0, nneg=0; 

int i ; 


 /* Transfert des données */ 


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


if (T[i]>0) 

TPOS[npos]=T[i]; 
npos++; 

if (T[i]<0) 

TNEG[nneg]=T[i]; 
nneg++; 


return npos ; 


Exercice 3 :

Ecrire un programme qui calcul le produit scalaire de deux vecteurs d’entiers U et V de même
dimension.

Ecrire la fonction suivante :

long ProduitScalaire(int *U,int *V, int dimension)

Correction exercice 3 :

#include <stdio.h> 
#define MAX 50 
long ProduitScalaire(int *,int *, int) ; 
main() 

 /* Déclarations */ 
int U[MAX], V[MAX]; /* tableaux donnés */ 
int N; /* dimension */ 
int I; /* indice courant */ 
long PS; /* produit scalaire */ 

/* Saisie des données */ 

do 

printf("Dimension du tableau (max.%d) : ",MAX); 
scanf("%d", &N ); 
}while(N>MAX) ; 
printf("** Premier tableau **\n"); 
for (I=0; I<N; I++) 

 printf("Elément %d : ", I); 

 scanf("%d", &U[I]); 


printf("** Deuxième tableau **\n"); 
for (I=0; I<N; I++) 

 printf("Elément %d : ", I); 
 scanf("%d", &V[I]); 


 /* Calcul du produit scalaire */ 


PS = ProduitScalaire(U,V,N) ; 


/* Edition du résultat */ 

printf("Produit scalaire : %ld\n", PS); 


long ProduitScalaire(int *U, int *V,int N) 



long ps ; 
int i ; 

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

ps += (long)U[i]*V[i]; 
Return ps ; 

0 commentaires:

Enregistrer un commentaire

Twitter Delicious Facebook Digg Stumbleupon Favorites More