Problemme programmation

Résolu/Fermé
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 - 16 avril 2010 à 18:22
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 18 avril 2010 à 04:16
Salut tout d'abord j'ai deux question,en premier j'ai fait la partie 1 de ce tuto : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c
et je ne sais pas quoi faire d'autre car la partie 2 enchaine tout de suite sur un truc super complexe et je ne comprend pas du tout donc si vous avez un site pour apprendre ou truc comme sa sa serai sympa de me dire si vous avez un truc pour moi.
et en deuxieme question j'ai un probleme sur un script (je ne vois pas l'erreur) mais bon si vous trouver vous pouvez me dire =) sa serait cool

LE SCRIPT EST LE SUIVANT :
______________________________________________________________

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


int main ()

{
int choixNiveau;

printf("Quel niveau voulez vous choisir ? \n\n");
printf("Niveau 1, entre 1 et 10 \n");
printf("Niveau 2, entre 1 et 100 \n");
printf("Niveau 3, entre 1 et 1000 \n");
printf("Niveau 4, entre 1 et 10000 ");
scanf("%d", &choixNiveau);
printf("\n\n");

if (choixNiveau == 1)
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 10, MIN = 1
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);
}

else if (choixNiveau == 2)
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);
}

else if (choixNiveau == 3)
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 1000, MIN = 1
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);
}

else if(choixNiveau == 4)
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 10000, MIN = 1
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);
}

else
{
printf("Votre Nombre est incorrect")
}


return 0;
}
______________________________________________________________

Voila je serai fou si vous réponder a mes 2 questions. =)
BYE

7 réponses

livesphere Messages postés 20 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 16 avril 2010 2
16 avril 2010 à 18:25
Salut,

Déjà met ceci : int main (int argc, char *argv[])

Ensuite, tu as quoi comme erreur ou que se passe t il ?

Enfin pour un site tu as Developpez.com
0
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 26
17 avril 2010 à 19:48
Dsl de ne pas t'avoir répondu, merci quand même
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
16 avril 2010 à 18:42
Bonjour,

Tu as oublié des ";" à la fin de plusieurs lignes, voici ton code corrigé :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
    int choixNiveau;

    printf("Quel niveau voulez vous choisir ? \n\n");
    printf("Niveau 1, entre 1 et 10 \n");
    printf("Niveau 2, entre 1 et 100 \n");
    printf("Niveau 3, entre 1 et 1000 \n");
    printf("Niveau 4, entre 1 et 10000 ");
    scanf("%d", &choixNiveau);
    printf("\n\n");

    if (choixNiveau == 1)
    {
        int nombreMystere = 0, nombreEntre = 0;
        const int MAX = 10, MIN = 1;    // tu avais oublié le ; à la fin de la ligne
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
            if (nombreMystere > nombreEntre)
            printf("C'est plus !\n\n");
            else if (nombreMystere < nombreEntre)
            printf("C'est moins !\n\n");
            else
            printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
        } while (nombreEntre != nombreMystere);
    }
    else if (choixNiveau == 2)
    {
        int nombreMystere = 0, nombreEntre = 0;
        const int MAX = 100, MIN = 1;   // pareil il manquait le ;
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
            if (nombreMystere > nombreEntre)
            printf("C'est plus !\n\n");
            else if (nombreMystere < nombreEntre)
            printf("C'est moins !\n\n");
            else
            printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
        } while (nombreEntre != nombreMystere);
    }
    else if (choixNiveau == 3)
    {
        int nombreMystere = 0, nombreEntre = 0;
        const int MAX = 1000, MIN = 1;  // pareil il manquait le ;
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
            if (nombreMystere > nombreEntre)
            printf("C'est plus !\n\n");
            else if (nombreMystere < nombreEntre)
            printf("C'est moins !\n\n");
            else
            printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
        } while (nombreEntre != nombreMystere);
    }
    else if(choixNiveau == 4)
    {
        int nombreMystere = 0, nombreEntre = 0;
        const int MAX = 10000, MIN = 1; // parei il manquait le ;
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
            if (nombreMystere > nombreEntre)
            printf("C'est plus !\n\n");
            else if (nombreMystere < nombreEntre)
            printf("C'est moins !\n\n");
            else
            printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
        } while (nombreEntre != nombreMystere);
    }
    else
    {
        printf("Votre Nombre est incorrect");   // il manquait aussi un ;
    }
    return 0;
}


Après je ne sais pas si tu t'en rend compte mais tu pourrais vachement simplifié ton code en ne séparant dans les if (que tu pourrais remplacé par un switch aussi) que les parties distinctes à chaque niveau.

Un exemple d'optimisation :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
    int choixNiveau;

    printf("Quel niveau voulez vous choisir ? \n\n");
    printf("Niveau 1, entre 1 et 10 \n");
    printf("Niveau 2, entre 1 et 100 \n");
    printf("Niveau 3, entre 1 et 1000 \n");
    printf("Niveau 4, entre 1 et 10000 ");
    scanf("%d", &choixNiveau);
    printf("\n\n");

    int max = 10, min = 1;
    int nombreMystere = 0, nombreEntre = 0;

    switch(choixNiveau)
    {
        case 1:
            max = 10;
            break;
        case 2:
            max = 100;
            break;
        case 3:
            max = 1000;
            break;
        case 4:
            max = 10000;
            break;
        default:
            printf("Votre Nombre est incorrect");
            return 1;
            break;
    }

    srand(time(NULL));
    nombreMystere = (rand() % (max - min + 1)) + min;
    do
    {
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        if (nombreMystere > nombreEntre)
        printf("C'est plus !\n\n");
        else if (nombreMystere < nombreEntre)
        printf("C'est moins !\n\n");
        else
        printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
    } while (nombreEntre != nombreMystere);

    return 0;
}


C'est quand même plus simple non ^^
0
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 26
Modifié par arthurbest78 le 16/04/2010 à 19:44
Merci beaucoup pour les réponse, tu a raison scriptiz et aussi pourquoi un moment tu a mit "return 1;" ?
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
16 avril 2010 à 19:32
Voilà un bon endroit où continuer dans un premier temps après le site du zéro :

Cours de C :
https://c.developpez.com/cours/


Cours de C++ :
https://cpp.developpez.com/cours/


Le C++ s'inscrit dans la prolongation du C, introduisant de nouveaux outils/concepts tels que l'orienté objet (et d'autres).

Donc c'est une bonne chose que tu t'y mette après le C ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
17 avril 2010 à 00:13
Voici comment afficher le nombre de coups pour la partie :

Je me suis servie de la version optimisée que je t'avais fournie afin d'alléger le code.

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

int main ()
{
    int choixNiveau;

    printf("Quel niveau voulez vous choisir ? \n\n");
    printf("Niveau 1, entre 1 et 10 \n");
    printf("Niveau 2, entre 1 et 100 \n");
    printf("Niveau 3, entre 1 et 1000 \n");
    printf("Niveau 4, entre 1 et 10000 ");
    scanf("%d", &choixNiveau);
    printf("\n\n");

    int max = 10, min = 1;
    int nombreMystere = 0, nombreEntre = 0;

    switch(choixNiveau)
    {
        case 1:
            max = 10;
            break;
        case 2:
            max = 100;
            break;
        case 3:
            max = 1000;
            break;
        case 4:
            max = 10000;
            break;
        default:
            printf("Votre Nombre est incorrect");
            return 1;
            break;
    }

	// on se sert d'un variable pour stocker le nombre de coups
	int nombreDeCoups = 0;	
    srand(time(NULL));
    nombreMystere = (rand() % (max - min + 1)) + min;
    do
    {
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
		nombreDeCoups++;	// on augmente le nombre de coups de 1
        if (nombreMystere > nombreEntre)
			printf("C'est plus !\n\n");
        else if (nombreMystere < nombreEntre)
			printf("C'est moins !\n\n");
        else
			printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n", nombreDeCoups);
    } while (nombreEntre != nombreMystere);

    return 0;
}


Voilà si tu as d'autres problèmes/questions n'hésite pas à m'envoyer un message privé sur ce forum (en cliquant sur mon pseudo) et je me ferais un plaisir de te répondre selon mes connaissances :)

Sinon bonne continuation.
0
arthurbest78 Messages postés 66 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 26 juin 2014 26
Modifié par arthurbest78 le 17/04/2010 à 15:54
Merci beaucoup, des réponse et du temps que tu ma accordé et aussi je trouve sa cool que tu veut bien m'aider si j'ai un problème, bref a bientôt
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
18 avril 2010 à 04:16
Avec plaisir, bonne continuation.
0