IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

�l�ments de tableaux


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre habitu�
    Inscrit en
    Janvier 2003
    Messages
    9
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 9
    Par d�faut �l�ments de tableaux
    Existe t'il une fonction qui me donnerait le nombre de valeurs diff�rentes contenues dans un tableau (� 1 seul dimension) ?

  2. #2
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Salut
    Je ne crois pas, mais comme ce n'est pas tr�s difficile � �crire 8)
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  3. #3
    Membre habitu�
    Inscrit en
    Janvier 2003
    Messages
    9
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 9
    Par d�faut
    alors peut �tre quel qu'un pourrait me dire ce qui cloche dans ma fonction ? c'est probablement une erreur toute b�t mais je ne vois pas laquelle :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	int k=0; // mon compteur du nombre de valeurs distinctes
    	int tmp[10]; // le tableau où stocker les différentes valeurs trouvées (pas plus de 10)
    	for(int j=0;j<10;j++) // initialisé à 0
    		tmp[j]=0;
    	for (i=0;i<nombre;i++) // je parcours le tableau
    		for(int j=0;j<10;j++) // et ma "table de stockage"
    			if (tmp[j]!=gph.niveau[i]) // est ce que la nouvelle valeur est déjà dans le tableau ? 
    			{
    				tmp[k]=gph.niveau[i]; // sinon je l'ajoute au tableau
    				k++; // et je compte un de plus
    			}

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    k ne deviendrait pas plus grand que 9 � un moment ou un autre ? ==> d�bordement

  5. #5
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Il faut regarder plut�t si la valeur est d�j� dans la table de stockage et pas le contraire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
      int k=0; // mon compteur du nombre de valeurs distinctes
       int tmp[10]; // le tableau où stocker les différentes valeurs trouvées (pas plus de 10)
       for(int j=0;j<10;j++) // initialisé à 0
          tmp[j]=0;
       for (i=0;i<nombre;i++) // je parcours le tableau
       {
           trouve = 0;
          for(int j=0;j<10;j++) // et ma "table de stockage"
             if (tmp[j]==gph.niveau[i]) // est ce que la nouvelle valeur est déjà dans le tableau ?
             {
                 trouve = 1;
                 break;
             }
     
          if (trouve == 0) // on n'a rien trouve, on ajoute
          {      
                tmp[k]=gph.niveau[i]; // sinon je l'ajoute au tableau
                k++; // et je compte un de plus
          }    
       }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  6. #6
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Oui, il y aussi le probl�me de la taille du tableau de stockage et dnas la boucle, tu peux simplement faire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
          for(int j=0;j<k;j++) // et ma "table de stockage"
             if (tmp[j]==gph.niveau[i]) // est ce que la nouvelle valeur est déjà dans le tableau ?
             {
                 trouve = 1;
                 break;
             }
    Puis
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
          if (trouve == 0) // on n'a rien trouve, on ajoute
          {     
                if (k < 10)
                {
                  tmp[k]=gph.niveau[i]; // sinon je l'ajoute au tableau
                  k++; // et je compte un de plus
                }
                else
                {
                    puts("tableau tmp trop pettit");
                     return <code_erreur>:
                }
          }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  7. #7
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    et un truc comme �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    // mon tableau ici des chaines ma ca peut etre autre chose
    char *aszressai[]={"11","12","11","13","14","13","20" };
     
    // un map key -> nb d'elements
        std::map<CString,int> MapItem;
        for(int i=0;i<sizeof(aszressai)/sizeof(char *);i++)    
            MapItem[aszressai[i]]++;        
     
        // comptage valeur unique.    
        i=0;
        std::map<CString,int>::iterator itpos;
        for(itpos=MapItem.begin();itpos!=MapItem.end();itpos++)
        {
            if(itpos->second==1) i++;
        }
        TRACE("\n unique : %d",i);
        TRACE("\n nb sans doublons : %d",MapItem.size());

  8. #8
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Encore mieux :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    #include <set>
     
    std::set<MonType> Set(tmp, tmp + 10);
    std::size_t NombreDeDifferents = Set.size();
    Avec comme seule restriction que les instances de MonType soient comparables.

  9. #9
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    S'il n'y a pas besoin de l'histogramme, j'utiliserai directement un std::set.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    std::set<type_des_elements> ens;
    std::copy(tab, tab+taille_tab, std::inserter(ens, ens.begin()));
    std::cout << "il y a " << ens.size() << " éléments différents.\n";
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  10. #10
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Le nombre de lignes de code serait-il inversement proportionnel au nombre d'�toiles ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  11. #11
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    On peut encore �purer un peu et epargner quelques octets � la pile 8)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int NbDifferents = std::set<MonType>(Tab, Tab + 10).size();

  12. #12
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut

    Tiens je n'avais pas fait attention qu'il y a avait eu une r�ponse pendant que je tapais la mienne.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  13. #13
    Membre habitu�
    Inscrit en
    Janvier 2003
    Messages
    9
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 9
    Par d�faut
    merci pour vos r�ponses

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. op�ration sur les �l�ments de tableaux
    Par pingouin84k dans le forum D�buter
    R�ponses: 17
    Dernier message: 30/09/2014, 18h28
  2. [D�butant] combinaison �l�ments de tableaux
    Par Hamza_Am dans le forum MATLAB
    R�ponses: 8
    Dernier message: 21/05/2012, 16h52
  3. cr�ation de tableaux avec Array() et �l�ment 'fantome'
    Par Talieth dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 22/11/2005, 09h49
  4. R�ponses: 4
    Dernier message: 27/10/2005, 10h09
  5. R�ponses: 2
    Dernier message: 14/09/2005, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo