Piocher aléatoirement dans un tableau
Fermé
RollK
-
23 nov. 2011 à 17:29
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 4 déc. 2011 à 21:05
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 4 déc. 2011 à 21:05
A voir également:
- Piocher aléatoirement dans un tableau
- Tableau croisé dynamique - Guide
- Code ascii tableau - Guide
- Comment faire un tableau - Guide
- Trier un tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
11 réponses
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
24 nov. 2011 à 18:35
24 nov. 2011 à 18:35
Je connais rien au c++, alors je t'aide comme je peux, et dans ce qui me parait flagrant, c'est que la boucle ne sers à rien et qu'il faut que tu accède à ton tableau avec pour indice le nombre aléatoire... ça doit donner un truc comme ça :
#include <iostream> #include <vector> #include <ctime> #include <cstdlib> using namespace std; int main() { int const Prenom(5); vector<string> listeNoms(Prenom); listeNoms[0] = 'Quentin'; listeNoms[1] = 'Charles'; listeNoms[2] = 'Jean'; listeNoms[3] = 'Mathieu'; listeNoms[4] = 'Theodule'; listeNoms[5] = 'Marc'; string nomAleatoire; srand(time(0)); nomAleatoire = listeNoms[rand() % 5]; cout << "Elève choisit " << nomAleatoire << endl; return 0; }
Salut, alors je ne sais pas ce que j'ai fait, mais j'ai mélangé C et C++ il me semble au niveau des includes...
En tout cas, je lance ton programme, puis après, j'ai message d'erreur qui me dit :" Programme a cessé de fonctionner..."
Alors, j'enlève #include <ctime> et #include <cstdlib>, mais là après mon programme ne se lance et affiche pleins d'erreur.
Merci de ton aide.
En tout cas, je lance ton programme, puis après, j'ai message d'erreur qui me dit :" Programme a cessé de fonctionner..."
Alors, j'enlève #include <ctime> et #include <cstdlib>, mais là après mon programme ne se lance et affiche pleins d'erreur.
Merci de ton aide.
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
29 nov. 2011 à 18:37
29 nov. 2011 à 18:37
Il faut peut-être que tu relances un sujet là, car au vu de mes notions en C, je ne peux t'aider d'avantage et ceux qui peuvent t'aider doivent penser que quelqu'un s'en occupe déjà !
Pense à préciser dans l'intitulé que c'est du C...
Pense à préciser dans l'intitulé que c'est du C...
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
4 déc. 2011 à 15:16
4 déc. 2011 à 15:16
1)
Pourquoi appeler ta variable Prenom alors que c'est un entier ?
2)
3)
De plus ta boucle ne sers à rien, tu ne fais que récupérer le dernier nom de la liste dont tu ne te sers pas ensuite.
4)
5)
Tu ne peux pas utiliser des string avec cout, il faut faire une conversion en char*
6)
int const Prenom(5);Tu as 6 valeurs dans ton tableau pas 5, alors autant mettre 6 non ?
Pourquoi appeler ta variable Prenom alors que c'est un entier ?
2)
listeNoms[0] = 'Quentin';Une chaîne de caractères ça se met entre guillemets pas avec des apostrophes.
3)
string nomAleatoire; for(int i=0; i<listeNoms; i++) { nomAleatoire = listeNoms[i]; }listeNoms est un vector, pas un entier, tu ne peux pas faire i<listeNoms.
De plus ta boucle ne sers à rien, tu ne fais que récupérer le dernier nom de la liste dont tu ne te sers pas ensuite.
4)
nomAleatoire = rand() % 5;Ce n'est toujours pas 5, mais 6. De plus comme l'a indiqué Nicocorico, rand%5 renvoit un entier pas une string.
5)
cout << "Elève choisit " << nomAleatoire << endl
Tu ne peux pas utiliser des string avec cout, il faut faire une conversion en char*
6)
#include <iostream> #include <vector> #include <ctime> using namespace std; int main() { srand(time(0)); vector<string> listeNoms; listeNoms.push_back("Quentin"); listeNoms.push_back("Charles"); listeNoms.push_back("Jean"); listeNoms.push_back("Mathieu"); listeNoms.push_back("Theodule"); listeNoms.push_back("Marc"); int nombreAleatoire = rand() % listeNoms.size(); string nomAleatoire = listeNoms.at(nombreAleatoire); cout << "Elève choisit " << nomAleatoire.c_str() << endl; return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Merci beaucoup, mais je rencontre une erreur à la ligne 9, rand(time(0)); "was not déclared in this scope"
Merci beaucoup, mais je rencontre une erreur à la ligne 9, rand(time(0)); "was not déclared in this scope"
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
4 déc. 2011 à 17:33
4 déc. 2011 à 17:33
C'est parce que tu as enlevé <ctime>, il faut le garder.
non, je l'ai laissé, j'ai entièrement copié le code que tu m'as transmis.
Et c'est quoi .c_str() ?
Et c'est quoi .c_str() ?
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
4 déc. 2011 à 17:47
4 déc. 2011 à 17:47
Moi je n'ai pas d'erreur.
c_str() c'est la conversion d'un string en char* pour l'affichage avec cout dont je parlais en 5)
c_str() c'est la conversion d'un string en char* pour l'affichage avec cout dont je parlais en 5)
d'accord, mais j'ai toujours cette erreur, je programme sus Code::block
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
4 déc. 2011 à 18:40
4 déc. 2011 à 18:40
Ce n'est pas rand(time(0)); mais srand(time(0));
D'ailleurs c'est ce que j'avais mis...
D'ailleurs c'est ce que j'avais mis...
Oui oui, mais en fait j'avais deux erreurs avec srand, alors j'ai mis rand pour voir,et ça m'a mis une seule erreur.
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
4 déc. 2011 à 18:43
4 déc. 2011 à 18:43
Et bien laisse le srand, et donne les deux messages d'erreurs que tu as...
Oui, voici :
C:\Users\RollK\Projets\ZIMZIM\main.cpp||In function 'int main()':|
C:\Users\RollK\Projets\ZIMZIM\main.cpp|9|error: 'srand' was not declared in this scope|
C:\Users\RollK\Projets\ZIMZIM\main.cpp|20|error: 'rand' was not declared in this scope|
||=== Build finished: 2 errors, 0 warnings ===|
C:\Users\RollK\Projets\ZIMZIM\main.cpp||In function 'int main()':|
C:\Users\RollK\Projets\ZIMZIM\main.cpp|9|error: 'srand' was not declared in this scope|
C:\Users\RollK\Projets\ZIMZIM\main.cpp|20|error: 'rand' was not declared in this scope|
||=== Build finished: 2 errors, 0 warnings ===|
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
4 déc. 2011 à 19:00
4 déc. 2011 à 19:00
Remets #include <cstdlib> aussi pour voir ;-)
Ca marche ! Mais à quoi sert cette librairie ? iostream ne suffisait pas ?
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
4 déc. 2011 à 19:14
4 déc. 2011 à 19:14
<iostream> c'est pour cout et endl
<ctime> pour time
<cstdlib> pour rand et srand (mais chez moi elle est peut-être inclus automatiquement)
<vector> pour vector
<string> pour string mais il est inclus dans <iostream>, et <vector> donc ce n'est pas nécessaire de le rajouter
<ctime> pour time
<cstdlib> pour rand et srand (mais chez moi elle est peut-être inclus automatiquement)
<vector> pour vector
<string> pour string mais il est inclus dans <iostream>, et <vector> donc ce n'est pas nécessaire de le rajouter
D'accord, merci et at.() sert à quoi ?
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
Modifié par KX le 4/12/2011 à 21:06
Modifié par KX le 4/12/2011 à 21:06
Regarde la documentation : at
Si tu utilises listeNoms[nombreAleatoire] ça fera la même chose.
Si tu utilises listeNoms[nombreAleatoire] ça fera la même chose.