0
votes

Personnage devinant jeu dans la langue C utilisant un tableau 1D et pour la boucle

J'ai l'intention de sauter un caractère particulier en utilisant "Continuer l'instruction" si une itération ("i == [index]"). Je veux sauter le personnage à l'index 5. S'il vous plaît ci-dessous est le code. Je suis un débutant cependant.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char guess[10]="Programmer";
    char choice;
    printf("Welcome to my guessing game\n");
    printf("===============================\n");
    int i;
    for(i=0;i<10;i++)
    {
         printf("%c", guess[i]);
          if(i==guess[5])
            continue;
    }

    printf("\n\n");
    printf("Guess which letter is missing\n");
    scanf(" %c",&choice);

    if(choice==guess[5])
    {
        printf("Excellent! Good point");
    }else
    {
       printf("Ooops! Wrong answer\n");
    }

    return 0;
}


9 commentaires

Char Devinez [10] = "Programmer"; ==> Char Devinez [] = "programmateur"; juste dire. Programmeur est une séquence d'octet ELEVEN lorsque vous incluez le terminateur. Je ne sais pas vraiment ce que vous pensez i == devinez [5] est censé faire. Comparaison de votre variable d'énumération i contre le contenu contenu in devinez [5] ne sonne pas vraiment bien, n'est-ce pas? Même si cela a été abordé, le continuer semble mauvais de toute façon. Vous êtes sur le point de faire la boucle de toute façon, alors ... Continuez à Que ? Je pense que cela nécessite une explication de soi, car ce test + continuer devrait être avant l'impression.


Vous devriez simplement dire si (i == 5) si vous souhaitez ignorer cet index. Mais vous devez le faire avant vous imprimez.


@WhozCraig depuis qu'il n'utilise jamais suppose en tant que chaîne, le terminateur n'est pas nécessaire.


@WhozCraig Dans ce cas, ce n'est pas une chaîne, mais un tableau de 10 caractères. Il n'y a pas de faute là-bas.


Supprimer le Continuer qui à la fin du bloc de code ne fait rien. Changer de si (i! = 5) printf ("% c", devinez [i]);


@Weathervane je suis d'accord. Mettre une maintenance dans ce bloc n'a pas beaucoup de sens. C'est tellement simple que je! = 5 est la meilleure solution.


@Weathervane Nulle part dans mon commentaire Je prétendais qu'il y avait une faute. J'ai affirmé que l'initialisation d'une matrice de 10 d'un tableau de 11 me manquait quelque chose (le terminateur). C'est tout, et cela peut être corrigé en laissant le compilateur faire le dimensionnement pour vous.


@Whozcraig Mais vous êtes: qui peut être rectifié . Il n'y a rien à redressement, comme Barmar a également commenté.


Wow idées puissantes. J'ai essayé les deux méthodes et ils donnent la sortie souhaitée. Merci beaucoup


3 Réponses :


1
votes

Voici le correctif:

a également mis à jour la taille de la matrice, comme indiqué ci-dessus (il n'est pas traité comme une chaîne nulle part, mais mieux sûr que désolé). P>

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char guess[12]="Programmer";
    char choice;
    printf("Welcome to my guessing game\n");
    printf("===============================\n");
    int i;
    for(i=0;i<10;i++)
    {
        if( i != 5 )
        {
            printf("%c", guess[i]);
        }
    }

    printf("\n\n");
    printf("Guess which letter is missing\n");
    scanf(" %c",&choice);

    if(choice==guess[5])
    {
        printf("Excellent! Good point");
    }else
    {
       printf("Ooops! Wrong answer\n");
    }

    return 0;
}


0 commentaires

1
votes

Tout d'abord, vous devez écrire une déclaration de suite avant l'instruction que vous souhaitez sauter. Voulez-vous ignorer tous les caractères qui sont les mêmes à suppos [5] ou voulez-vous sauter index 5?

Si vous pour sauter toutes les lettres qui sont identiques à la lettre à l'index 5: p> xxx pré>

Si vous souhaitez passer uniquement une lettre à l'index 5 Essayez: P>

for(i=0;i<10;i++)
{
    if(i==5) continue;
    printf("%c", guess[i]);
}


0 commentaires

1
votes

Vous ne devriez pas comparer avec un élément de la matrice, il suffit de comparer avec l'index que vous souhaitez sauter.

et vous devez mettre le continuer avant les instructions que vous souhaitez sauter . Sinon, la lettre a déjà été imprimée et continue ne rien faire utile. xxx


0 commentaires