C++

Discussion dans 'Web, design' créé par Liquid Sn@ke, 28 Août 2006.

Statut de la discussion:
Fermée.
  1. Offline
    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
    Liquid Sn@ke, 28 Août 2006
    #1
  2. Offline
    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.
    null, 28 Août 2006
    #2
  3. Offline
    Tr0lls Martine <3

    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
    Tr0lls, 28 Août 2006
    #3
  4. Offline
    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 !
    marcellino, 28 Août 2006
    #4
  5. Offline
    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
    Liquid Sn@ke, 28 Août 2006
    #5
  6. Offline
    Vinchy Touriste

    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
    Vinchy, 28 Août 2006
    #6
  7. Offline
    Tr0lls Martine <3
    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)
    Tr0lls, 28 Août 2006
    #7
  8. Offline
    null ose();
    Aucune idée, j'ai jamais eu de cours donc je sais pas comment ça se nomme :oops: (j'ai appris un truk :p)



    Tu pourrais développer pour tes tableaux à deux dimensions car je vois pas bien comment ils sont structurés.
    null, 28 Août 2006
    #8
  9. Offline
    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);
    }




    }
    Liquid Sn@ke, 28 Août 2006
    #9
  10. Offline
    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
       */
    }
    
    null, 28 Août 2006
    #10
  11. Offline
    Liquid Sn@ke Touriste
    hey, merçi bcp. vais aller tester cela.
    Merçi d'avoir répondu si gentillement :-D
    Liquid Sn@ke, 28 Août 2006
    #11
  12. Offline
    null ose();
    Avec plaisir !
    null, 29 Août 2006
    #12
Statut de la discussion:
Fermée.