Exercice 36
Énoncé
Soient deux tableaux t1 et t2 déclarés ainsi :
float t1[10], t2[10] ;
Écrire les instructions permettant de recopier, dans t1, tous les éléments positifs de
t2, en complétant éventuellement t1 par des zéros. Ici, on ne cherchera pas à fournir
un programme complet et on utilisera systématiquement le formalisme tableau.
On peut commencer par remplir t1 de zéros, avant d’y recopier les éléments positifs de
t2 :
int i, j ;
for (i=0 ; i<10 ; i++) t1[i] = 0 ;
/* i sert à pointer dans t1 et j dans t2 */
for (i=0, j=0 ; j<10 ; j++)
if (t2[j] > 0) t1[i++] = t2[j] ;
Mais on peut recopier d’abord dans t1 les éléments positifs de t2, avant de compléter
éventuellement par des zéros. Cette seconde formulation, moins simple que la
précédente, se révélerait toutefois plus efficace sur de grands tableaux :
int i, j ;
for (i=0, j=0 ; j<10 ; j++)
if (t2[j] > 0) t1[i++] = t2[j] ;
for (j=i ; j<10 ; j++) t1[j] = 0 ;
81
Précédent

- 82/398

Suivant