Programme en c:quelle est la faute?

Résolu
informatiquetech Messages postés 225 Date d'inscription   Statut Membre Dernière intervention   -  
Nero15 Messages postés 2657 Date d'inscription   Statut Membre Dernière intervention   -
bonjour, pouvez-vous me dire pourquoi mon programme ne marche pas comme je veux.
le voici:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int nombresaisi=0;
    int nombre=0;
    printf("saisissez un nombre: ");
    scanf("%d \n", &nombre);
    printf("quel est le nombre?");
    scanf("%d \n", &nombresaisi);
        while (nombresaisi > nombre)
         {
             printf("ton nombre est plus grand \n");
             printf("quel est le nombre?");
             scanf("%d \n", &nombresaisi);
         }
           while (nombresaisi < nombre)
         {
             printf("ton nombre est plus petit \n");
             printf("quel est le nombre?");
             scanf("%d \n", &nombresaisi);
         }
            while (nombresaisi == nombre)
         {
             printf("bravo tu l'as trouve");
         }
}

quand je l'exécute si j'ai faux deux fois environ le programme ferme et parfois il me dit que j'ai juste alors que c'est faux.Merci en tout cas.

EDIT: Ajout de la coloration syntaxique.

2 réponses

Zephirr Messages postés 317 Date d'inscription   Statut Membre Dernière intervention   100
 
Il faut mettre une seule boucle
while( nombresaisi != nombre)  
avec des conditions
if
dedans.
0
informatiquetech Messages postés 225 Date d'inscription   Statut Membre Dernière intervention   6
 
merci beaucoup, mais pourquoi? Est ce qu'on ne peut pas utiliser beaucoup de boucles et de conditions.
C'est comme ceci:#include <stdio.h>
#include <stdlib.h>

void main()
{
double nombresaisi=0, nombre=0;
printf("saisissez un nombre: ");
scanf("%f", &nombre);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("quel est le nombre? ");
scanf("%f", &nombresaisi);
printf("\n");
while (nombresaisi!=nombre)
{
if (nombresaisi>nombre)
{
printf("ton nombre est plus grand.");
printf("\n");
printf("quel est le nombre? ");
scanf("%f", &nombresaisi);
printf("\n");
}
else if (nombresaisi<nombre)
{
printf("ton nombre est plus petit.");
printf("\n");
printf("quel est le nombre? ");
scanf("%f", &nombresaisi);
printf("\n");
}
}
if (nombresaisi==nombre)
{
printf("bravo tu l'as trouve ");
}
printf("tu as gagne");
return 0;
}
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
C'est pas une question de pas pouvoir, c'est une question de non-sens algorithmique.

Pourquoi avoir remplacé int main() en void main() ?
Du coup, tu as rajouté plein de fautes dans ce programme...

scanf("%f", &nombre);
Il faut mettre %lf (L minuscule).
Pareil pour tous les scanf().

while (nombresaisi!=nombre)
Pas terrible la comparaison entre deux doubles. Il faut plutôt vérifier que la différence entre les deux n'est pas suffisamment petite.

printf("tu as gagne");
Il faut le mettre juste en dessous de : printf("bravo tu l'as trouve").

Il faut utiliser un compteur aussi. Car là en état, le joueur ne peut pas perdre.
N'oublie pas de mettre un printf("\n"); juste au dessus du return 0; pour vider le buffer écran.

Note : n'oublie pas d'utiliser la balise <code c> pour poster ton code la prochaine fois. Exemple :
<code c>ici tu mets ton code</code>
Cdlt,
0
Nero15 Messages postés 2657 Date d'inscription   Statut Membre Dernière intervention   104
 
Bonjour,

Ça ne marche pas car dés que les conditions de tes boucles ne sont pas vérifiés tu sors de la boucle en question sans y revenir pour passer au reste du code, une fois sorti des trois boucles le programme termine, ce qui explique ton résultat.

pour une solution propre, prend exemple des codes donnés plus haut ;)

cordialement.
0