Exercice d'algorithme

Gugu -  
 john -
Bonjour,
Pouvez vous m'aider s'il vous plait à résoudre ce problème en algorithme?

Ecrire un algorithme permettant la lecture et la recherche du Max et du Min d'un tableau à une dimension de 10 entier et afficher en plus le nombre d'occurence(d'apparition) de Max et le nombre d'occurence de Min.

et

Ecrire l'algotihme permettant d'inverser les éléments dans un tableau à une dimension d'entiers de 10 éléments.

Je vous remercie d'avance j'ai commencé mais je n'arrive pas à terminer l'algo... C'est trop compliqué :s

4 réponses

Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Voyons déjà le premier problème.
Je pense que pour un tableau de 10 éléments, on peut se permettre de le parcourir deux fois ^^
L'idée : on prend 4 entiers : iMin, iMax, iCompteurMin, iCompteurMax.
On parcourt chaque cellule : si le nombre dans la cellule est supérieur au max, on change le iMax. Si il est inférieur au min, on change le min. Sinon on ne fait rien.
Ensuite on reparcourt, pour incrémenter les compteurs.
Voila mon algorithme :

iMax = tableau[0] : entier
iMin = tableau[0] : entier
iCompteurMax = 0 : entier
iCompteurMin = 0 : entier

pour i allant de 1 à 9
    si (tableau[i] > iMax) alors iMax = tableau[i]
    si (tableau[i] < iMin) alors iMin = tableau[i]
fin pour

// ici on connait donc notre min et notre max !

pour j allant de 0 à 9
   si (tableau[i] = iMax) alors iCompteurMax++
   si (tablau[i] = iMin) alors iCompteurMin++
fin pour


// on a tout ! a toi de rentrer les 4 valeurs dans un tableau de 4 cases s'il le faut
0
gugu
 
Merci beaucoup!!!!
0
john
 
Bonjour,

Le comptage des occurences peut se faire dans la première boucle, ce qui réduit significativement la compléxité en temps, les ordinateurs actuels sont puissants mais arrêtons de programmer comme des boeufs.

J.
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Je serais curieux de savoir comment tu fais.
Ne connaissant pas les valeurs finales des minimums et maximums...
Cela impliquerait de faire une liste comptant les occurences pour chaque valeurs... Ce qui au final serait plus lourd que te refaire un for.

Programmer comme un boeuf... Merci du compliment, en attendant j'attends de voir ta solution, john
0
john
 
Voici ma solution (avec du retard...), en C, je pense que ça marche comme ça :

#include<stdio.h>

int main(){

int tab[8];
int max, min, cmin, cmax;
int i;

tab[0] = 2;
tab[1] = 1;
tab[2] = 5;
tab[3] = 4;
tab[4] = 5;
tab[5] = 6;
tab[6] = 2;
tab[7] = 1;

cmin = 1;
cmax=1;
min = tab[0];
max = tab[0];

for(i=1; i < 8;++i){

if(tab[i] > max){
cmax = 0;
max = tab[i];

}

if(tab[i] == max){
++cmax;
}

if(tab[i] < min){
cmin = 0;
min = tab[i];
}


if(tab[i] == min){
++cmin;
}
}

printf("min %d max %d cmin %d cmax %d\n", min, max, cmin, cmax);
return 0;

Après je voulais pas que tu prennes ça méchamment, c'était juste pour dire qu'une boucle suffit...

Bonne journée.
0