C++

Statut
N'est pas ouverte pour d'autres réponses.

Liquid Sn@ke

Touriste
bonjour,
simple petite question ( très basique mais qui me bloque ), en c++ lorsque par exemple on lit au clavier une suite de chiffre et que l'on vx rechercher le maximun : on compare chaque chiffre au précedent. Mais comment faire pour savoir en quentieme position se trouve le maximun?
ex: on tape : 2 7 5 6 3 9 4 6 3
Le maximun est 9 mais comment trouver qu'il a été introduit en 6ieme position?
Merçi à vous
 

null

ose();
En fait, ça dépend comment les chiffres sont donnés.

Si on tape un chiffre et puis Enter

Tu fais une variable "max" par exemple. A chaque entrée, tu compares le nouveau chiffre à la variable "max". Si c'est plus grand, tu la remplace par ce nouveau chiffre.

Si c'est ça la méthode utilisée, je comprends pas bien ta question de "place" o_O

Si on tape tout les chiffres séparés par un espace

Là, le programme va dévoir découper la chaîne en utilisant l'espace comme séparateur.

On créé trois variables :

i à 1;
max à 0;
maxPos;

Ensuite, on fait une boucle qui va tester chaque chiffre de la chaîne (qui a été découpée) avec la valeur de "max". Si ce chiffre est plus grand, on remplace le contenu de "max" par ce chiffre et on met le contenu de la variable "i" dans "maxPos". A chaque passage de la boucle, on incrémente "i" pour connaître la position.

Ensuite, tu affiches "maxPos" pour connaître la position du plus grand chiffre.
 

Tr0lls

Martine <3
null a dit:
En fait, ça dépend comment les chiffres sont donnés.

Si on tape un chiffre et puis Enter

Tu fais une variable "max" par exemple. A chaque entrée, tu compares le nouveau chiffre à la variable "max". Si c'est plus grand, tu la remplace par ce nouveau chiffre.

Si c'est ça la méthode utilisée, je comprends pas bien ta question de "place" o_O

Si on tape tout les chiffres séparés par un espace

Là, le programme va dévoir découper la chaîne en utilisant l'espace comme séparateur.

On créé trois variables :

i à 1;
max à 0;
maxPos;

Ensuite, on fait une boucle qui va tester chaque chiffre de la chaîne (qui a été découpée) avec la valeur de "max". Si ce chiffre est plus grand, on remplace le contenu de "max" par ce chiffre et on met le contenu de la variable "i" dans "maxPos". A chaque passage de la boucle, on incrémente "i" pour connaître la position.


Ensuite, tu affiches "maxPos" pour connaître la position du plus grand chiffre.

Simple question (personnel) : C'est pas le principe du "Tri par sélection" sa ???

exemple:


Pour J allant de 1 à N-1 faire
Pour I allant de J+1 à N faire
Si (T < T[Imin]) alors
Imin := I
 

marcellino

Touriste
si c le tri pas selection ! suffit juste d incrementer un compteur dans ta boucle et tu trouvera la position et ton chiffre !
 
1er
OP
L

Liquid Sn@ke

Touriste
En fait ma question etait plus compliqué et j'ai voulu la simplifier.mon programme est un tableaux à 2 dimensions ( par ex : nb_cours et nb_etudiants ) et je voudrais par exemple connaitre le numero de l'étudiant qui a eu le a maximun dans le cours ... Je sais pas si je m'exprime bien ...Sinon merci d'avoir repondu si vite
pour repondre a ta question je valide chaque fois par enter
 

Vinchy

Touriste
Tr0lls a dit:
C'est pas le principe du "Tri par sélection" sa ???

exemple:


Pour J allant de 1 à N-1 faire
Pour I allant de J+1 à N faire
Si (T < T[Imin]) alors
Imin := I

La chaine n'est nullement triée au final dans l'algo de null ;)
Le principe est semblable au tri par sélection, mais sans plus.

Voici le tri par sélection :
Code:
tri_selection(tableau T)
    debut
        entier longueur, maxi, i
        longueur<-taille(T)

        tantque(longueur>0) faire
            //recherche de la position du plus grand élément dans le tableau non encore trié
            maxi<-0;

            pour i=1 à (longueur-1) faire
                si T(i)>T(maxi) alors
                    maxi<-i
                fin si
            fin pour

            //echange du plus grand élément avec le dernier
            echanger(T,maxi,longueur-1)

            //traitement du reste du tableau
            longueur<-longueur-1
        fin tantque
    fin
 

Tr0lls

Martine <3
Vinchy a dit:
La chaine n'est nullement triée au final dans l'algo de null ;)
Le principe est semblable au tri par sélection, mais sans plus.
ok ok autant pour moi :-D (Enfin s'il procède par ce système la, il ne lui reste plus qu'a isoler Imax mais il est vrai que se serait beaucoup trop long)
 

null

ose();
Tr0lls a dit:
Simple question (personnel) : C'est pas le principe du "Tri par sélection" sa ???
Aucune idée, j'ai jamais eu de cours donc je sais pas comment ça se nomme :oops: (j'ai appris un truk :p)

Liquid Sn@ke a dit:
En fait ma question etait plus compliqué et j'ai voulu la simplifier.mon programme est un tableaux à 2 dimensions ( par ex : nb_cours et nb_etudiants ) et je voudrais par exemple connaitre le numero de l'étudiant qui a eu le a maximun dans le cours ... Je sais pas si je m'exprime bien ...Sinon merci d'avoir repondu si vite


Tu pourrais développer pour tes tableaux à deux dimensions car je vois pas bien comment ils sont structurés.
 
1er
OP
L

Liquid Sn@ke

Touriste
voila une partie du programme :


printf("\n\n *LES MAXIMUNS\n");
for(i=0;i<nb_cours;i++)
{
printf("\n");
max=cotes[0][0];

for(j=0;j<nb_etu;j++)
{
if (cotes[j] > cotes [0][0])
max=cotes[j];
?????

}

printf("l etudiant %f a eu le maximun dans le cours %f",???, 1+1);
printf("\n le maximun dans le cours %d est : %.2f",i+1,max);
}




}
 

null

ose();
Code:
printf("\n\n *LES MAXIMUNS\n");

int max;
int maxPos;

for(i=0; i < nb_cours; i++)
{
    max = 0;
    maxPos = 0;

    for(j=0; j < nb_etu; j++)
   {
        if (cotes[i][j] > max)
        {
             max = cotes[i][j];
             maxPos = j;
        }
    }

   /* 
   ** max : côte maximale
   ** maxPos : numéro de l'étudiant
   */
}
 
1er
OP
L

Liquid Sn@ke

Touriste
hey, merçi bcp. vais aller tester cela.
Merçi d'avoir répondu si gentillement :-D
 

null

ose();
Avec plaisir !
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut