Question
Soit Tab un tableau de taille M et disposant de n(0lt nleqslant M) nombres réels. 1. Ecrire line fonction qui prend en parametre d'entrée les variables Tab et n et renvoie 1 sile tableau est trié et 0 sinon. 2. Fcrire une procedure qui prend en parametres entrées les variables Tab et n et en paramelres sorties les variables Pos . Nui et Neg. Les variables Pos . Nui et Neg doivent contenir respectivement le'nombre de réels strictement positifs,nuls et le nombre de réels strictement négatifs du tableau Tab.
Solution
Expert Verified
4.7(42 Voting)
FernandaElite · Tutor for 8 years
Answer
1. **Fonction pour vérifier si le tableau est trié:**<br /><br />```c<br />int estTrie(float Tab[], int n) {<br /> for (int i = 0; i < n - 1; i++) {<br /> if (Tab[i] > Tab[i+1]) {<br /> return 0; // Non trié<br /> }<br /> }<br /> return 1; // Trié<br />}<br />```<br /><br />**Explication:**<br /><br />La fonction `estTrie` parcourt le tableau `Tab` de taille `n`. Elle compare chaque élément avec l'élément suivant. Si un élément est supérieur à l'élément qui le suit, cela signifie que le tableau n'est pas trié dans l'ordre croissant, et la fonction renvoie 0. Si la boucle se termine sans trouver d'élément supérieur à son successeur, cela signifie que le tableau est trié, et la fonction renvoie 1.<br /><br /><br />2. **Procédure pour compter les positifs, nuls et négatifs:**<br /><br />```c<br />void compteNombres(float Tab[], int n, int *Pos, int *Nul, int *Neg) {<br /> *Pos = 0;<br /> *Nul = 0;<br /> *Neg = 0;<br /><br /> for (int i = 0; i < n; i++) {<br /> if (Tab[i] > 0) {<br /> (*Pos)++;<br /> } else if (Tab[i] == 0) {<br /> (*Nul)++;<br /> } else {<br /> (*Neg)++;<br /> }<br /> }<br />}<br />```<br /><br />**Explication:**<br /><br />La procédure `compteNombres` prend en entrée le tableau `Tab` et sa taille `n`. Elle utilise des pointeurs `Pos`, `Nul` et `Neg` pour stocker les résultats. Elle initialise ces compteurs à 0. Ensuite, elle parcourt le tableau `Tab`. Pour chaque élément, elle vérifie s'il est strictement positif, nul ou strictement négatif, et incrémente le compteur correspondant. L'utilisation de pointeurs permet de modifier directement les variables originales passées en argument à la procédure.<br /><br />**Exemple d'utilisation:**<br /><br />```c<br />#include <stdio.h><br /><br />// ... (fonctions estTrie et compteNombres définies ici) ...<br /><br />int main() {<br /> float tableau[] = { -2.5, 0, 1.7, 0, 5, -1 };<br /> int taille = 6;<br /> int positifs, nuls, negatifs;<br /><br /> if (estTrie(tableau, taille)) {<br /> printf("Le tableau est trié.\n");<br /> } else {<br /> printf("Le tableau n'est pas trié.\n");<br /> }<br /><br /> compteNombres(tableau, taille, &positifs, &nuls, &negatifs);<br /> printf("Positifs: %d, Nuls: %d, Négatifs: %d\n", positifs, nuls, negatifs);<br /><br /> return 0;<br />}<br />```<br />
Click to rate: