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 :

Réinitialiser un tableau de caractères pour un tp de jeu du pendu


Sujet :

C

  1. #1
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut Réinitialiser un tableau de caractères pour un tp de jeu du pendu
    Bonjour. Je serai brève.

    Pour initialiser mon mot au départ :

    char temp[26]={0};

    Comment fais-je, quand la personne demande à rejouer, pour le réinitialiser avant de relancer la boucle ?

    J'ai essayé plein de trucs... Moi pas trouvé le bon.

    Si je ne le fais pas, et que le mot tiré au sort suivant est plus court que le mot précédent, j'ai des tas de bugs.

    Sinon mon tp est fini et tourne bien... Faut juste que je modularise (presque tout est dans le main actuellement)...

    Je vous mets le code pour vos critiques acerbes.
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "fonctions.c"
     
    int main(){
        char s='s';
        char ligne[26]={0},mottire[26]={0},temp[26]={0},curlet=0,rejoue='O';
        int vies,i,flag=0,pif,total=0,score=0;
     
     
     
        do {
                s='s';
                vies=5;
                i=0;
                total++;
                pif=alea();
                FILE *fichier = fopen("liste.txt","r");;
                if (fichier == NULL){
                   printf("Le fichier ne peut etre ouvert.");
                   return 1;
                }
                while (fgets(ligne,26,fichier)!=NULL){
                    i++;
                    if(i==pif){
     
                        strcpy(mottire,ligne);
                    }
     
                }
                fclose(fichier);
                i=0;
     
                for(i=0;i<(strlen(mottire)-1);i++){
                    temp[i]='*';
                }
                temp[i]='\n';
     
                i=0;
                //tant que ni gagne ni perdu
                //boucle do while (faut bien rentrer d'abord)
                do{
                        printf("\n\nMOT A TROUVER : %s\n",temp);
                        printf("Il vous reste %d vie%c\n",vies,s);
                        printf("Proposez une lettre (pas d'accent) : ");
     
                        flag=0;
                        curlet=lirelettre();
     
                        for(i=0;i<strlen(temp);i++){
                            if (curlet==mottire[i]){
                                temp[i]=curlet;
                                flag=1;
                            }
                        }
                        if(flag==0){
                            vies--;
                        }
                        if(vies==1){
                            s=' ';
                        }
     
                    }
                while((strcmp(temp,mottire)!=0)&&(vies>0));
                if(vies<=0){
                    printf("\n\nDommage, vous avez perdu.\n");
                    printf("Il fallait trouver %s\n\n",mottire);
                    printf("\nVotre score : %d/%d\n",score,total);
                    printf("\n\nVoulez-vous rejouer ? (o/n)");
                    rejoue=lirelettre();
                }
                if(strcmp(temp,mottire)==0){
                    score++;
                    printf("\n\nBravo ! Le mot etait : %s",mottire);
                    printf("\nVotre score : %d/%d\n",score,total);
                    printf("Voulez-vous rejouer ? (o/n)");
                    rejoue=lirelettre();
                }
                if(rejoue=='N'){
                    printf("\nVotre score : %d/%d\n",score,total);
                    printf("Au revoir et a bientot !!!\n\n");
                }
                else{
                    //reinitialise le mot d'ou ma question...
                }
            }
     
        while (rejoue=='O');
        return 0;
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memset (temp, 0, sizeof (temp));
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Salut Franck.

    et merci ça semble tourner tout rond cette fois.

    (Ce qui ne vous dispense pas de vos remarques à une novice en C).
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Oui j'aurais une petite remarque mais pas moins importante, je n'ai pas lu le code cependant, une meilleure présentation/indentation serait sympa, ici le code n'est pas très très lisible et peut en rebuter plus d'un moi y compris
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Indentation ? L'est pas bonne mon indentation ?

    Sinon, je me lance dans la modularisation de ce pas. Est-ce de cela que tu parles ?

    Je mettrai mes commentaires dans les fonctions.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Oops, une erreur d'indentation corrigée :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "fonctions.c"
     
    int main(){
        char s='s';
        char ligne[26]={0},mottire[26]={0},temp[26]={0},curlet=0,rejoue='O';
        int vies,i,flag=0,pif,total=0,score=0;
     
     
     
        do {
                s='s';
                vies=5;
                i=0;
                total++;
                pif=alea();
                FILE *fichier = fopen("liste.txt","r");;
                if (fichier == NULL){
                   printf("Le fichier ne peut etre ouvert.");
                   return 1;
                }
                while (fgets(ligne,26,fichier)!=NULL){
                    i++;
                    if(i==pif){
     
                        strcpy(mottire,ligne);
                    }
     
                }
                fclose(fichier);
                i=0;
     
                for(i=0;i<(strlen(mottire)-1);i++){
                    temp[i]='*';
                }
                temp[i]='\n';
     
                i=0;
                //tant que ni gagne ni perdu
                //boucle do while (faut bien rentrer d'abord)
                do{
                    printf("\n\nMOT A TROUVER : %s\n",temp);
                    printf("Il vous reste %d vie%c\n",vies,s);
                    printf("Proposez une lettre (pas d'accent) : ");
     
                    flag=0;
                    curlet=lirelettre();
     
                    for(i=0;i<strlen(temp);i++){
                        if (curlet==mottire[i]){
                            temp[i]=curlet;
                            flag=1;
                        }
                    }
                    if(flag==0){
                        vies--;
                    }
                    if(vies==1){
                        s=' ';
                    }
     
                }
                while((strcmp(temp,mottire)!=0)&&(vies>0));
     
                if(vies<=0){
                    printf("\n\nDommage, vous avez perdu.\n");
                    printf("Il fallait trouver %s\n\n",mottire);
                    printf("\nVotre score : %d/%d\n",score,total);
                    printf("\n\nVoulez-vous rejouer ? (o/n)");
                    rejoue=lirelettre();
                }
                if(strcmp(temp,mottire)==0){
                    score++;
                    printf("\n\nBravo ! Le mot etait : %s",mottire);
                    printf("\nVotre score : %d/%d\n",score,total);
                    printf("Voulez-vous rejouer ? (o/n)");
                    rejoue=lirelettre();
                }
                if(rejoue=='N'){
                    printf("\nVotre score : %d/%d\n",score,total);
                    printf("Au revoir et a bientot !!!\n\n");
                }
                else{
                   memset (temp, 0, sizeof (temp));
                   memset (mottire, 0, sizeof (mottire));
                }
            }
     
        while (rejoue=='O');
        return 0;
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Indentation ? L'est pas bonne mon indentation ?

    Sinon, je me lance dans la modularisation de ce pas. Est-ce de cela que tu parles ?

    Je mettrai mes commentaires dans les fonctions.
    Non, mais des espaces entre les différentes déclaration de variables, des lignes vides aux bons endroits pour entrecouper un peu le code, des indentations moins longues (3 à 4 caractères suffisent).

    A noter également que les bons prototype de main sont au choix:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int main (void)
    /* ou */
    int main (int argc, char ** argv)

    Voilà
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Merci chef.

    Faut donc que j'évite d'utiliser le tab pour indenter ?

    Ou que je change les paramètres de mon tab sur mon clavier Mac (je sais pas si c'est possible).
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Merci chef.

    Faut donc que j'évite d'utiliser le tab pour indenter ?

    Ou que je change les paramètres de mon tab sur mon clavier Mac (je sais pas si c'est possible).
    Vue la gueule de ton code, tu n'utilises déjà pas le tab pour indenter, ou bien ton éditeur est mal réglé, parce qu'ici, tout ce qu'on voit, c'est des espaces.
    Je te conseille d'utiliser des vraies tabs pour indenter. Ainsi, même si sur le forum ça aura l'air un peu grand (vu que les navigateurs hard-codent les tabs à huit caractères), il suffira à n'importe quel membre d'un copier-coller vers son éditeur favori pour avoir à nouveau des tabs à son goût...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Faut donc que j'évite d'utiliser le tab pour indenter ?
    Vue la gueule de ton code, tu n'utilises déjà pas le tab pour indenter,
    Je te conseille d'utiliser des vraies tabs pour indenter.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #11
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Désolé je ne vais plus loin que :
    Code Dendrite : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "fonctions.c"
    il ne faut inclure que des fichier d'entête (header).

  12. #12
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par ssmario2 Voir le message
    Désolé je ne vais plus loin que :
    Code Dendrite : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "fonctions.c"
    il ne faut inclure que des fichier d'entête (header).
    Donc mon main n'inclut que des fichiers.h...

    Mais les autres fichiers.c du coup ? Tu peux expliquer ?

    ex :

    dans main, je mets un include fonctions.h
    et dans fonctions.c ? Rien ? Ou à nouveau include fonctions.h ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  13. #13
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Citation Envoyé par Dendrite
    Donc mon main n'inclut que des fichiers.h...
    Pas que ton main tout les fichier *.c

    Je suppose que le fichier fonctions.h contient les prototypes de fonctions définit dans fonctions.c partant de là tout fichier utilisant ces fonctions (y compris fonctions.c) devras inclure fonctions.h

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/06/2023, 15h51
  2. Convertir une string en tableau de caractères
    Par alainpeniche dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2007, 20h00
  3. Réponses: 16
    Dernier message: 02/12/2005, 10h39
  4. result: chaine de caractère pour une DLL
    Par Sephiroth Lune dans le forum Langage
    Réponses: 7
    Dernier message: 27/07/2004, 23h05
  5. Réponses: 9
    Dernier message: 30/06/2004, 23h19

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