Je débute dans la programmation C et j'essaie de me faire des programmes pour me familiariser avec le langage.
Je voudrais essayer de faire un code qui me permet de créer un tableau de caractère avec une longueur explicite et de pouvoir récupérer aléatoirement ma chaîne de caractère et l'afficher.
Donc déjà je pensais faire un tableau mais est-ce qu'on peut rentrer plusieurs chaines de caractères dans un tableau comme cela :
J'ai trouvé pleins de site qui parle de récupérer des nombres aléatoire mais pas des chaines de caractères, peut-être que cela est impossible ?
Est-ce que l'idée de faire un tableau est la meilleur solution ?
Donc le but est de :
- Créer un tableau de longueur explicite
- Lire ce tableau
- Récupérer aléatoirement une des chaines de caractère
- L'afficher
J'espère avoir été assez claire, demandez moi plus de précision si ce n'est pas le cas.
Merci.
Edit : J'ai pensé à faire autrement, est-ce que ce ne serait pas mieux de créer un fichier.txt avec mes titres de films (par exemple), d'aller lire dans ce fichier et de pouvoir ressortir aléatoirement un des titres qui est inscrit dans le fichier ?
Bonjour, j'ai modifié le titre de votre sujet, en effet "[Problème]" n'a rien à y faire. Si vous postez on se doute que vous avez un problème, inutile de l'indiquer dans le titre du sujet, cela n'apporte aucune information quant au contenu du sujet.
Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
Oui tu peux référencer plusieurs chaîne dans un tableau, soit faire comme tu as fait un tableau de pointeur sur char ou chaque pointeur pointe sur une chaîne de caractère, ou alors un tableau de tableau de char ou chaque tableau de char contiendra une chaîne de caractère.
Pour l'aléatoire tu as les fonction rand et srand.
Si tu veux choisir une chaîne aléatoirement dans le tableau, c'est sur l'indice du tableau qu'il faut agir !
Tu veux placer des chaînes de caractères dans un tableau, et ensuite tu vas en tirer plusieurs au hasard. C'est bien ça ? Combien, et selon quels critères ?
Je pose cette question parce que, dans ta boucle, tu effectues autant de tirages qu'il y a de chaînes, du coup je me demande si le but n'est pas plus précis : tirer au hasard la liste de toutes les chaînes de caractères les unes après les autres sans remise.
Attention à poster ton code correctement sur le forum avec le bouton </> comme te l'a déjà rappelé AbcAbc6 un peu plus haut ...
D'accord, excusez moi, je pensais qu'en faisant des captures d'écran je n'avais pas besoin de faire cela.
robun a écrit:
Je n'ai pas compris le but.
Tu veux placer des chaînes de caractères dans un tableau, et ensuite tu vas en tirer plusieurs au hasard. C'est bien ça ? Combien, et selon quels critères ?
Je pose cette question parce que, dans ta boucle, tu effectues autant de tirages qu'il y a de chaînes, du coup je me demande si le but n'est pas plus précis : tirer au hasard la liste de toutes les chaînes de caractères les unes après les autres sans remise.
- Edité par robun hier à 16:45
Bonjour,
Le but est de tirer une seule chaine du tableau au hasard et sans remise.
Du coup ma fonction rand() devrait être à l'extérieur de la boucle ?
edgarjacobs a écrit:
Attention: en C, un tableau de N cases a son indice qui va de 0 à N-1 ....
Oui, c'est bien ce que j'ai fais en faisant cela ?
include <stdio.h>
include <stdlib.h>
include <time.h>
int main(void)
{
int i;
const int MIN=0, Max=9;
srand(time(NULL));
const char *stringArray[10]
stringArray[0]="Film1";
stringArray[1]="Film2";
stringArray[2]="Film3";
stringArray[3]="Film4";
i=(rand()%(MAX-MIN+1))+MIN;
printf("Vous allez regarder :\n");
puts(stringsArray[i]);
return 0;
}
Ben non, ça va planter. Lors de la prochaine exécution, ou demain, ou dans ... .Tu n'as pas initialisé stringArray[4] à [9]. Donc le puts(), qui attend un \0 pour la fin de la chaine, pourrait ne jamais le rencontrer avec ces indices-là.
Edit: ligne 20, stringsArray n'est pas connu, et il manque un ; ligne 10. Et tant que j'y suis, ligne 17, MAX n'est pas non plus connu.
- Edité par edgarjacobs 24 janvier 2021 à 20:22:10
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Ben non, ça va planter. Tu n'as pas iniitalisé stringAarray[4] à [9]. Donc le puts(), qui attend un \0 pour la fin de la chaine, pourrait ne jamais le rencontrer avec ces indices-là.
Je me suis trompé en retranscrivant mon code, mais dans mon programme j'ai bien :
Excusez moi, ce n'était pas une plaisanterie et pour l'instant je ne peux pas faire de copier coller de mon code via la machine virtuelle sur ma machine hôte.
De toute façon Max=9 n'aurait pas compilé car Max != de MAX !
Tu retapes le code au clavier sur le forum ?! Fait plutôt un copier coller ça évite ce genre d'étourderies !
Je ne peux pas faire de copier coller de mon code via la machine virtuelle sur ma machine hôte, pour l'instant.
Tableau et informations aléatoires
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent