Accueil > Forum > > > > un ti pb sur les tableaux
un ti pb sur les tableaux
mardi 30 octobre 2001 à 17:30:17 |
un ti pb sur les tableaux

Julius Caesar
|
On range dans un tableau 8 entiers générés aléatoirement par l'ordi. coment faire pour être sur que chaque nombre généré soit uniquen c'est à dire qu'il n'y a pas 2 nbrs identiques générés.
|
|
dimanche 4 novembre 2001 à 00:25:32 |
Re : un ti pb sur les tableaux

Lu
|
Il faut comparer chacun des nombres aux autres.
Le plus simple (et légèrement mieux que comparer chaque nombre à tous les autres) : bool tous_differents = true; static const unsigned int TAILLE = 8; int tableau[TAILLE]; for(unsigned int i = 0; tous_differents && i != TAILLE-1; ++i) { for(unsigned int j = i+1; tous_differents && j != TAILLE; ++j) { tous_differents = (tableau[i] != tableau[j]); } }
(attention : je n'ai pas testé ce programme, c'est juste une idée qui me passe par la tête)
------------------------------- Réponse au message : -------------------------------
On range dans un tableau 8 entiers générés aléatoirement par l'ordi. coment faire pour être sur que chaque nombre généré soit uniquen c'est à dire qu'il n'y a pas 2 nbrs identiques générés.
|
|
dimanche 4 novembre 2001 à 12:22:42 |
Re : un ti pb sur les tableaux

Kaid
|
Pour moi la meilleure solution est d'utiliser une collection permettant la recherche d'éléments.
Tu peux par exemple utiliser l'objet MFC CMap, ou std::map avec la STL.
------------------------------- Réponse au message : -------------------------------
Il faut comparer chacun des nombres aux autres.
Le plus simple (et légèrement mieux que comparer chaque nombre à tous les autres) : bool tous_differents = true; static const unsigned int TAILLE = 8; int tableau[TAILLE]; for(unsigned int i = 0; tous_differents && i != TAILLE-1; ++i) { for(unsigned int j = i+1; tous_differents && j != TAILLE; ++j) { tous_differents = (tableau[i] != tableau[j]); } }
(attention : je n'ai pas testé ce programme, c'est juste une idée qui me passe par la tête)
------------------------------- Réponse au message : -------------------------------
On range dans un tableau 8 entiers générés aléatoirement par l'ordi. coment faire pour être sur que chaque nombre généré soit uniquen c'est à dire qu'il n'y a pas 2 nbrs identiques générés.
|
|
dimanche 4 novembre 2001 à 13:37:16 |
Re : un ti pb sur les tableaux

Lu
|
Effectivement, mieux vaut utiliser la STL. Cependant, je ne vois pas pourquoi tu proposes une map, puisque l'on gère des valeurs simples et non pas des paires clé/valeur. En plus, un std::map ne permet pas de multiples valeurs pour une même clé (il faudrait alors un std::multimap). Pour répondre spécifiquement au problème, sans doute vaudrait-il mieux un std::multiset.
Par ailleurs, le choix ne dépend pas de la recherche que l'on veut faire (qui n'est apparemment qu'une validation de données) mais de l'utilisation de ces données. En effet, si std::multiset semble adapté au problème de validation, il risque fort de ne pas l'être pour l'utilisation ultérieur du fait que l'on perd ici l'ordonnancement des données.
Voyons ainsi comment tranposer l'algorithme (avec une petite différence pour les pointilleux observateurs) en utilisant un std::vector. Cet exemple permet de voir l'utilisation d'une fonction d'<algorithm> plutôt que les méthodes spécifiques à std::multiset, comme std::multiset::equal_range qui semblerait assez adaptée si on avait choisit ce type collection. De plus, ce code a l'avantage d'être assez indépendant de la collection choisie (comptons donc le nombre de retouches à faire si on change le std::vector en une autre collection à éléments simples, comme std::list ou std::deque...)
#include <algorithm> #include <vector> typedef std::vector<int> notre_collection; bool tous_differents(const notre_collection & donnees) { for(notre_collection::const_iterator i = donnees.begin(); i != donnees.end(); ++i) { notre_collection::const_iterator j = i; ++j; if(std::find(j,donnees.end(),*i) != donnees.end()) return false; } return true; }
(attention : une fois de plus je n'ai pas testé ce programme)
------------------------------- Réponse au message : -------------------------------
Pour moi la meilleure solution est d'utiliser une collection permettant la recherche d'éléments.
Tu peux par exemple utiliser l'objet MFC CMap, ou std::map avec la STL.
------------------------------- Réponse au message : -------------------------------
Il faut comparer chacun des nombres aux autres.
Le plus simple (et légèrement mieux que comparer chaque nombre à tous les autres) : bool tous_differents = true; static const unsigned int TAILLE = 8; int tableau[TAILLE]; for(unsigned int i = 0; tous_differents && i != TAILLE-1; ++i) { for(unsigned int j = i+1; tous_differents && j != TAILLE; ++j) { tous_differents = (tableau[i] != tableau[j]); } }
(attention : je n'ai pas testé ce programme, c'est juste une idée qui me passe par la tête)
------------------------------- Réponse au message : -------------------------------
On range dans un tableau 8 entiers générés aléatoirement par l'ordi. coment faire pour être sur que chaque nombre généré soit uniquen c'est à dire qu'il n'y a pas 2 nbrs identiques générés.
|
|
dimanche 4 novembre 2001 à 16:33:48 |
Re : un ti pb sur les tableaux

Kaid
|
J'ai dit std::map pour le principe car j'utilise très rarement la STL.
------------------------------- Réponse au message : -------------------------------
Effectivement, mieux vaut utiliser la STL. Cependant, je ne vois pas pourquoi tu proposes une map, puisque l'on gère des valeurs simples et non pas des paires clé/valeur. En plus, un std::map ne permet pas de multiples valeurs pour une même clé (il faudrait alors un std::multimap). Pour répondre spécifiquement au problème, sans doute vaudrait-il mieux un std::multiset.
Par ailleurs, le choix ne dépend pas de la recherche que l'on veut faire (qui n'est apparemment qu'une validation de données) mais de l'utilisation de ces données. En effet, si std::multiset semble adapté au problème de validation, il risque fort de ne pas l'être pour l'utilisation ultérieur du fait que l'on perd ici l'ordonnancement des données.
Voyons ainsi comment tranposer l'algorithme (avec une petite différence pour les pointilleux observateurs) en utilisant un std::vector. Cet exemple permet de voir l'utilisation d'une fonction d'<algorithm> plutôt que les méthodes spécifiques à std::multiset, comme std::multiset::equal_range qui semblerait assez adaptée si on avait choisit ce type collection. De plus, ce code a l'avantage d'être assez indépendant de la collection choisie (comptons donc le nombre de retouches à faire si on change le std::vector en une autre collection à éléments simples, comme std::list ou std::deque...)
#include <algorithm> #include <vector> typedef std::vector<int> notre_collection; bool tous_differents(const notre_collection & donnees) { for(notre_collection::const_iterator i = donnees.begin(); i != donnees.end(); ++i) { notre_collection::const_iterator j = i; ++j; if(std::find(j,donnees.end(),*i) != donnees.end()) return false; } return true; }
(attention : une fois de plus je n'ai pas testé ce programme)
------------------------------- Réponse au message : -------------------------------
Pour moi la meilleure solution est d'utiliser une collection permettant la recherche d'éléments.
Tu peux par exemple utiliser l'objet MFC CMap, ou std::map avec la STL.
------------------------------- Réponse au message : -------------------------------
Il faut comparer chacun des nombres aux autres.
Le plus simple (et légèrement mieux que comparer chaque nombre à tous les autres) : bool tous_differents = true; static const unsigned int TAILLE = 8; int tableau[TAILLE]; for(unsigned int i = 0; tous_differents && i != TAILLE-1; ++i) { for(unsigned int j = i+1; tous_differents && j != TAILLE; ++j) { tous_differents = (tableau[i] != tableau[j]); } }
(attention : je n'ai pas testé ce programme, c'est juste une idée qui me passe par la tête)
------------------------------- Réponse au message : -------------------------------
On range dans un tableau 8 entiers générés aléatoirement par l'ordi. coment faire pour être sur que chaque nombre généré soit uniquen c'est à dire qu'il n'y a pas 2 nbrs identiques générés.
|
|
Cette discussion est classée dans : pb, tableaux, ti, générés
Répondre à ce message
Sujets en rapport avec ce message
Pb Tableaux et initialisation. [ par AstraDeon ]
Bonjour,Voila je tentais une simple initinitialisation d'un tableau bidimensionnel, mais j'ai pas le resultat escomptsS, voici le code :#include int m
Pb tableaux langage C (Borland) [ par SniPi ]
Comment on fait pr faire un tableau avec 10 valeurs, mais que les 10 valeurs ce soit l'utilisateur qui les rentre...??Amicalement...SniPi
Pb de tri et taille de tableaux [ par daarkon666 ]
Salut !!Je viens de terminer le tri/fusion itératif (et d'autres algos de tri, pr un projet info de fac) en C, et je suis soumis à un pb auss ibien so
Pb de sécurité... [ par wanny ]
Bonjour.Je travaille sur une nouvelle version d'un logiciel commercial.Actuellement, la licence de ce logiciel est généré en fonction du nom de la mac
Pb Multilanguage [ par crocejf2000 ]
J'ai appliqué la methode de mettre les ressources dans des dlls partagé, tout fonctionne bien sauf quand je veut faire un apercu avant impression ou u
pb avec string-VC++ [ par didrocks ]
Tout content d'essayer la class string, j'ai fait cela:#include string Chaine = "test";et là, le compilateur me donne ce message:C:\ff7tss\Filer.cpp(4
pb affichage de polygone [ par dbtm ]
J'essaie d'afficher un polygone. Quand je fait tourner le polygone, il disparaît par moment.Si j'aligne le polygone sur les axes et que je le tourne,
pb avec variable [ par jeffise57 ]
Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai
Pb de passage de parametres en C++ [ par hergestridgefr ]
Bonjour,J'ai un souci avec un appli que j'ai développée en C++, et qui recoit des arguments d'une autre appli (faite en Flash), avant de les traiter.S
pb avec nMaxFile dans CFileDialog vc++ [ par pichu ]
Dans une CFileDialog on est limité dans le nombre de selection si on en selectionne plusieursle pb est que je veux etre illimite dans le nombreComment
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|