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

C Discussion :

Générer un caractère contenu dans un tableau aléatoirement en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Par défaut Générer un caractère contenu dans un tableau aléatoirement en C
    Bonsoir j'aimerais générer aléatoirement un caractère contenu dans un tableau en appuyant sur des touches du clavier et limiter le nombre de saisie à 9 mais mon code marche pas vraiment.

    Voici mon code :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define LV 1
    #define LC 1
     
    //Fonction pour afficher un voyelle aléatoirement
    void ranVoyelle(){
    	int i;
    	char voyelle[LV]={0};
    	char voy[7]="AEIOUY";
        srand(time(NULL));
     
        for ( i=0; i<LV; i++){
            voyelle[i]=voy[rand()%6];
        }
        printf("%s", voyelle);
    }
    //Fonction pour afficher une consonne aléatoirement
    void ranConsonne(){
    	int j;
    	char consonne[LC]={0};
    	char con[21]="BCDFGHJKLMNPQRSTVWXZ";
    	srand(time(NULL));
     
    	for ( j=0; j<LV; j++){
    	    consonne[j]=con[rand()%20];
    	}
        printf("%s", consonne);
    }
     
    int main(void)
    {
    	char caractere;
    	int k;
     
    	printf("-Appuiyez sur O pour quitter \n-Appuiyer sur C pour une consonne\n-Appuiyer sur V pour un voyelle\n");
    	while(caractere!='O'){
    		caractere=getch();
    		for (k=0;k<1;k++){
    			if(caractere == 'V' || caractere == 'v'){
    				ranVoyelle();
    		    }
    			else if(caractere == 'C' || caractere == 'c'){
    				ranConsonne();
    			}
    		}
        }  
    	return 0;
    }
    Le résultat que j'obtiens :
    -Appuiyez sur O pour quitter
    -Appuiyer sur C pour une consonne
    -Appuiyer sur V pour un voyelle
    G☺K☺K☺E☺E☺U☺U☺S☺W☺E☺W☺Y☺C☺F☺
    Quelqu'un pourrait m'aider svp ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Ici tu veux que voyelle soit un mot de 1 caractère (car LV=1) mais une chaine doit aussi avoir, en plus de ses caractères, un caractère spécial pour indiquer la fin. Il faut donc modifier la ligne n°??? en écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char voyelle[LV+1]={0};  // réserver un caractère de plus
    Et pareil pour les consonnes.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Par défaut Merci beaucoup j'arrive à générer un seul caractère mais j'arrive pas à limiter le nombre de saisie avec k
    Citation Envoyé par dalfab Voir le message
    Bonjour,

    Ici tu veux que voyelle soit un mot de 1 caractère (car LV=1) mais une chaine doit aussi avoir, en plus de ses caractères, un caractère spécial pour indiquer la fin. Il faut donc modifier la ligne n°??? en écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char voyelle[LV+1]={0};  // réserver un caractère de plus
    Et pareil pour les consonnes.

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 784
    Par défaut
    Hello,

    1) srand() ne s'utilise qu'une seule fois dans un programme, au début
    2) qu'espères-tu réserver comme espace en écrivant char voyelle[LV]={0}; ? Car là, voyelle n'a qu'une seule case, et à la manière dont tu l'affiches (%s), il faut prévoir la place pour le \0
    3) à quoi sert la boucle for dans tes deux fonctions ? Elle se résume à for(i=0;i<1;i++), et donc une seule itération aura lieu
    4) pourquoi avoir recours à un tableau pour voyelle et consonne ? Un char suffit, que tu affiches avec %c
    5) tu peux même te passer des variables voyelle et consonne en affichant directement voy[rand()%6] ou con[rand()%20]

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    Hello,

    1) srand() ne s'utilise qu'une seule fois dans un programme, au début
    2) qu'espères-tu réserver comme espace en écrivant char voyelle[LV]={0}; ? Car là, voyelle n'a qu'une seule case, et à la manière dont tu l'affiches (%s), il faut prévoir la place pour le \0
    3) à quoi sert la boucle for dans tes deux fonctions ? Elle se résume à for(i=0;i<1;i++), et donc une seule itération aura lieu
    4) pourquoi avoir recours à un tableau pour voyelle et consonne ? Un char suffit, que tu affiches avec %c
    5) tu peux même te passer des variables voyelle et consonne en affichant directement voy[rand()%6] ou con[rand()%20]
    OK

    Ok j'ai déjà modifier le code et il n'y a qu'un seul srand
    for(i=0;i<1;i++) pour générer aléatoirement un et un seul caractère et je sais pas utiliser un char pour générer aléatoirement

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Par défaut Limite de saisie
    En fait k devrait me permettre de limiter le nombre de saisie à 9 ou bien ce serait mieux d'insérer les caractères dans un tableau de taille 9 ?

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Waris03 Voir le message
    En fait k devrait me permettre de limiter le nombre de saisie à 9 ou bien ce serait mieux d'insérer les caractères dans un tableau de taille 9 ?
    Il n'y a pas de "mieux" en programmation, seulement un but que tu veux atteindre et des outils permettant de l'atteindre avec plus ou moins de facilité. Si tu veux limiter une saisie tu peux utiliser un compteur que tu testes ou bien un tableau que tu remplis, pour lequel tu devras définir une règle disant "il est ou n'est pas plein" (règles dépendant de son contenu) et un test permettant de dire "la règle est validée (il est plein) ou n'est pas validée". A toi de voir quelle solution est la plus simple à mettre en oeuvre...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Manipulation des valeurs contenues dans un tableau
    Par khasanouray dans le forum Langage
    Réponses: 3
    Dernier message: 29/05/2007, 20h36
  2. [TP] Afficher des chaînes contenues dans un tableau
    Par mah00 dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 20/05/2007, 09h15
  3. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  4. Réponses: 3
    Dernier message: 13/07/2006, 15h48
  5. Réponses: 15
    Dernier message: 02/12/2005, 17h12

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