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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 !

+ 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