Aller au menu - Aller au contenu

Les fonctions

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2  3  ...  11  12  13  14  15  Suivante
Pseudo Commentaire
Page Précédente  1  2  3  ...  11  12  13  14  15  Suivante
Hors ligne Monkey D. John # Posté le 30/01/2012 à 17:37:53
Roi Des Pirates
Avatar

Avis : Très bon

Merci atouk de ta réponse toute à fais cela marche
je comprends mon erreur merci de ton aide.
Hors ligne zerokeven # Posté le 30/01/2012 à 19:25:56

Avis : Mitigé

Bonjour à tous, voici un petit corrigé si jamais il y en a qui se casse encore la tête..(comme je l'ai fais pendant un bon moment)

Merci d'ailleur à tous ceux qui mettent leurs code en exemple...ça ma aider à comprendre les fonctions (ben à commencer à les comprendre toutefois..) et à corriger mon code pour qu'il fonctionne!

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

int genereNombre (int MAX, int MIN)
{int nombreMystere;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
return nombreMystere;
}

int compareNombres (int nombreMystere, int nombreEntre)
{
if (nombreMystere < nombreEntre)
printf("\n\nDesole, mais c'est moins eleve\n\n");

else if (nombreMystere > nombreEntre)
printf ("\n\nNon, c'est plus eleve que ca...\n\n");
else
printf ("\n\nFelicitation!!!");

}
int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0, nombreCoup = 0;
const int MAX = 100, MIN = 1;
printf("Voici un petit jeu juste pour vous:\n\n");
printf("Les regles sont simples:\nVous devez tenter de trouver le nombre mystere et ce\nle plus rapidement possible!\n\n");
printf(" Bonne chance!!!\n\n");
// Génération du nombre aléatoire
nombreMystere = genereNombre(MAX, MIN);

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */
printf("Quel est le nombre selon vous?\n\n");
do
{

// On demande le nombre

scanf("%d", &nombreEntre);
nombreCoup++;

// On compare le nombre entré avec le nombre mystère
compareNombres(nombreMystere, nombreEntre);
} while (nombreEntre != nombreMystere);
printf(", vous avez reussi en %d coups!!!!\n\n", nombreCoup);

return 0;
}
Hors ligne Layo # Posté le 31/01/2012 à 19:53:23

Avis : Très bon

Salut les zéro :).je suis nouveau dans le forum et je souhaite remercier tout le site pour tout ce bon travail.
Zérokeven dans ta fonction compareNombres, j'aivu qu'elle ne retourne aucune valeur c'est normal??
Hors ligne keziahr # Posté le 01/02/2012 à 19:46:26

Avis : Très bon

Tout d'abord, je tient à remercier toute l'équipe de ce site pour tout ces magnifique tuto ! Franchement, bravo ! c'est super =D
Et aussi je voulais juste préciser qu'il est aussi possible, pour la fonction "compareNombre", de la faire en "void" plûtot qu'en "int" et donc de ne pas mettre de "return".
Enfin voila ^^ rien de bien important mais quand même.
Hors ligne joe443 # Posté le 13/02/2012 à 21:38:48
Avatar

Avis : Très bon

Ajouter un system("cls"); comme cela pour eviter que le menu se réaffiche a chaque fois:
C'est pour effacer les données dans une fenêtre.
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
int menu()
{
    int choix = 0;

    while (choix < 1 || choix > 4)
    {
        system("cls");// A chaque fois que tu entre un nombre autre que 1,2,3,4 le menu ne se duplique pas.
        printf("Menu :\n"); 
        printf("1 : Poulet de dinde aux escargots rotis a la sauce bearnaise\n");
        printf("2 : Concombres sucres a la sauce de myrtilles enrobe de chocolat\n");
        printf("3 : Escalope de kangourou saignante et sa gelee aux fraises poivree\n");
        printf("4 : La suprise du Chef (j'en salive d'avance...)\n");
        printf("Votre choix ?");
        scanf("%d", &choix);
    }


    return choix;
}

Tutorial suivi (ça ne veut pas dire que je ne connais pas les 0 % ^^ :
HTML5/CSS3...: [IIIIIIIIII]-[60%]====Langage C......: [IIIIIIIIII]-[40%]====GNU/Linux......: [IIIIIIIIII]-[0%]
JavaScript.....: [IIIIIIIIII]-[0%]====Langage C++ ...: [IIIIIIIIII]-[0%]====UNIX ............: [IIIIIIIIII]-[0%]
PHP/mySQL....: [IIIIIIIIII]-[0%]====Python..........: [IIIIIIIIII]-[0%]====Windows........: [IIIIIIIIII]-[0%]
VB .Net.........: [IIIIIIIIII]-[75%]====ASM:............:[IIIIIIIIII]-[0%]
 
Hors ligne Ghost_anon # Posté le 14/02/2012 à 18:38:16
Avatar

Avis : Très bon

bon, voilà, j'en suis quà la fin du Qcm : mais par anticipation

j'ai fait ce petit code, qui est un convertisseur euros / francs ( et inversement)

voici mon code :

Code : C
 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
#include <stdio.h>
#include <stdlib.h>


 double convertion1 ( double euros )
  {
    double francs = 0;
    francs = 6.55957 * euros;
    return francs;
  }
 double convertion2 ( double francs )
  {
    double euros = 0;
    euros = francs / 6.55957;
    return euros;
  }

 int main ( int argc, char *argv[])
  {
    printf ("                          *********************************\n");
    printf ("                          *********************************\n");
    printf ("                          **        convertisseur        **\n");
    printf ("                          **       euros  /  francs      **\n");
    printf ("                          **             par             **\n");
    printf ("                          **                             **\n");
    printf ("                          **         Ghost_anon          **\n");
    printf ("                          **                             **\n");
    printf ("                          *********************************\n");
    printf ("                          *********************************\n");

                     //// boucle de redemarrage////
    int choix = 1;
    const int reponse = 2;


    do
    {
         int menu = 0;

         double euros = 0, francs = 0;

                        // choix des menus

         do
         {
             printf ("\n\n Vous voulez convertir des euros ou des francs ?      1. euros   2.francs  \n\n");
             printf (" Votre choix  : ");
             scanf ("%d", &menu);
                  if ( ( menu <= 0 ) || ( menu >=3 ))
                    printf ("\n\nVeuillez entrer l'un des deux choix! \n\n");
         }while ( (menu <=0) || (menu >=3));

                    //convertion selon le choix

         switch ( menu )
         {
              case 1 :

                    printf ("\n\n Entrez votre nombre d'euros que vous voulez convertir !  : ");
                    scanf ("%lf", &euros);

                    francs = convertion1 ( euros );

                    printf ("\n\n La conversion de vos Euros en Francs  est de :%lf Euros = %lf Francs \n\n",euros , francs);
              break;

              case 2 :

                    printf ("\n\n Entrez votre nombre de francs que vous voulez convertir !  : ");
                    scanf ("%lf", &francs);

                    euros = convertion2 ( francs );

                    printf (" \n\n La convertion de vos Francs en Euros est de : %lf Francs = %lf Euros \n\n",francs , euros);
              break;

         }
      printf (" voulez-vous effectuer une autre convertion?   1. oui  2. non \n\n");
         do
         {
          printf ("\n\n Votre choix : ");
          scanf ("%d", &choix);

             if ( (choix < 1) || (choix > 2));
             printf ("\n\n Veuillez selectionner un des deux choix ! merci ");
         }while ((choix < 1) || (choix >2));
    }while ( choix != reponse );

 }



Je sais , c'était pas demandé :p
Hors ligne ZaefireLindorie # Posté le 17/02/2012 à 11:30:03

Avis : Bon

En ne fesant qu'un petit chapitre par jour, je ne comprends rien. Est-ce moi qui suis complètement débile ? Ou est-ce une question d'habitude ? Je n'avais jamais fait de programmation avant cela. Et même en relisant le cours je n'arrive pas à mettre ma fonction de conversion sur une seul ligne ( deux au mieux ), et je ne sais toujours pas faire fonctionner la fonction francs > euros. Déprime total juste envie d'arrêter -_-
Hors ligne Këdherys # Posté le 17/02/2012 à 23:35:40
Avatar

@ ZaefireLindorie >>
Non, les fonctions sont compliquées mais restes néanmoins fondamentales. J'ai eu moi aussi l'envie d'arrêter mais il faut pas baisser les bras !
Un petit conseil, relis attentivement et calmement le cours, détaille toi même les exemples pour voir si tu les comprends bien et même, essai de refaire la calculatrice ( premier TP si je ne me trompe pas ) avec des fonctions pour t'imprégner des fonctions.
Bonne chance !

Ce code pour le dernier petit exercice est-il bon ? :

Code : C
 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/*
voilà, le code de gestion de chiffre aléatoire
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
A faire :
une fonction pour la gestion de nombre aléatoire
une fonction pour la comparaison des nombres*/

int genereNombre(int MIN, int MAX)
{
    int nombreMystere=0;
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    return nombreMystere;
}

void compareNombres ( int nombreEntre, int nombreMystere)
{
  if ( nombreEntre < nombreMystere)
  {
      printf("\nNon, C'est plus !\n\n");
  }
  else if ( nombreEntre > nombreMystere)
  {
      printf("\nNon, C'est moins !\n\n");
  }
  else
  {
      printf("\n Bravo, vous avez reussi !!\n\n");
  }
}

int main ( int argc, char** argv )
{
    int nombreMystere = 0, nombreEntre = 0;
    const int MAX = 100, MIN = 1;

    // Génération du nombre aléatoire
    nombreMystere = genereNombre(MIN, MAX);

    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */

    do
    {
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);

        // On compare le nombre entré avec le nombre mystère
        compareNombres(nombreEntre, nombreMystere);

    } while (nombreEntre != nombreMystere);

    return 0;
}
Hors ligne frangueliz # Posté le 18/02/2012 à 17:10:47

Avis : Très bon

Bonjour,
J'ai tenté de recréer le programme plus ou moins mais en programment avec des fonctions. Je les ais ajouté pour les modes (multijoueur et solo) mais quand je compile, un message comme quoi la déclaration des fonctions et trop implicites et que les références de "singleplayer et de multiplayer" ne sont pas définis.
Auriez-vous une idée? Ais-je mal écrit le code source?


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

void multiplayer();
void singleplayer();

int main()
{
int modedejeu = 0;
int nombredejoueur = 0;
printf("Combien de joueur y-a-t-il?");
scanf("%d", &nombredejoueur);

if(nombredejoueur == 1)
{
modedejeu = singleplayer();
}
else if (nombredejoueur == 2)
{
modedejeu = multiplayer();
}
else
{
printf("Il y a trop de joueurs");
}

return 0;
}

void multiplayer()
{
int nombreentre = 0;
int nombremystere=0;

printf("Le joueur 1 doit entrer un nombre\n");
scanf("%d", &nombremystere);

do
{
printf("Le joueur 2 doit entrer un nombre\n");
scanf("%d", &nombreentre);

if(nombreentre < nombremystere)
{
printf("C'est plus ! \n");
}
else if(nombreentre > nombremystere)
{
printf("C'est moins ! \n ");
}
else if (nombreentre == nombremystere)
{
printf("Bravo, vous avez trouve le nombre mystère !!!\n");
}
else
{
printf("Vous n'avez pas rentre un nombre correct !\n");
}
}while(nombreentre != nombremystere);
}

void singleplayer()
{
const int MIN =1, MAX = 100;
int compteur = 0;
int nombremystere = 0;
int nombreentre = 0;

srand(time(NULL));
nombremystere = (rand() % (MAX - MIN + 1)) + MIN;

do
{
printf("Quel est le nombre ?\n");
scanf("%d", &nombreentre);
compteur++
if (nombreentre == nombremystere)
{
printf("Bravo, vous avez trouvé le nombre mystere en %d coups!!!\n", compteur);
}
else if (nombreentre < nombremystere)
{
printf("C'est plus !\n");
}
else if (nombreentre > nombremystere)
{
printf("C'est moins !\n");
}
else
{
printf("Vous n'avez pas entre de nombre correct \n");
}

}while(nombreentre != nombremystere);


return 0;
}
Hors ligne Këdherys # Posté le 18/02/2012 à 21:57:30
Avatar

@frangueliz
J'ai lu ton code, Pour t'aiguiller :
- Comme un "void" ne renvoie aucun résultat, tu n'as pas besoin de faire des égalités ...
- Tu as oublié un point virgule quelque part
- Tu as mis un return à un "void" ...

Bref, essai de trouver tes erreurs et de les corriger, dans le doute voici ton code :


Secret (cliquez pour afficher)
Code : C
 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
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void multiplayer();
void singleplayer();

int main()
{

int nombredejoueur = 0;
printf("Combien de joueur y-a-t-il?");
scanf("%d", &nombredejoueur);

if(nombredejoueur == 1)
{
singleplayer();
}
else if (nombredejoueur == 2)
{
multiplayer();
}
else
{
printf("Il y a trop de joueurs");
}

return 0;
}

void multiplayer()
{
int nombreentre = 0;
int nombremystere=0;

printf("Le joueur 1 doit entrer un nombre\n");
scanf("%d", &nombremystere);

do
{
printf("Le joueur 2 doit entrer un nombre\n");
scanf("%d", &nombreentre);

if(nombreentre < nombremystere)
{
printf("C'est plus ! \n");
}
else if(nombreentre > nombremystere)
{
printf("C'est moins ! \n ");
}
else if (nombreentre == nombremystere)
{
printf("Bravo, vous avez trouve le nombre mystère !!!\n");
}
else
{
printf("Vous n'avez pas rentre un nombre correct !\n");
}
}while(nombreentre != nombremystere);
}

void singleplayer()
{
const int MIN =1, MAX = 100;
int compteur = 0;
int nombremystere = 0;
int nombreentre = 0;

srand(time(NULL));
nombremystere = (rand() % (MAX - MIN + 1)) + MIN;

do
{
printf("Quel est le nombre ?\n");
scanf("%d", &nombreentre);
compteur++;
if (nombreentre == nombremystere)
{
printf("Bravo, vous avez trouvé le nombre mystere en %d coups!!!\n", compteur);
}
else if (nombreentre < nombremystere)
{
printf("C'est plus !\n");
}
else if (nombreentre > nombremystere)
{
printf("C'est moins !\n");
}
else
{
printf("Vous n'avez pas entre de nombre correct \n");
}

}while(nombreentre != nombremystere);


}


C'est bien, entraîne toi un peu avant le prochain chapitre !
Hors ligne frangueliz # Posté le 19/02/2012 à 08:18:08

Avis : Très bon

merci beaucoup,
j'ai repris les erreurs que tu m'avait signalé et le code a marché correctement.
Hors ligne Darkwave # Posté le 23/02/2012 à 23:52:23

Avis : Très bon

Études : UQAM

@ ZaefireLindorie
Ce sont des notions assez compliquées! C'est normal pour les débutants de se sentir perdus... Le truc est de faire tous les TP (facultatifs et obligatoires)... Les TP de la calculatrice et du Haut / Bas sont excellents pour bien maîtriser les notions acquises jusqu'ici. J'ai littéralement passé ma journée sur le dernier TP (je l'ai peaufiné et j'ai ajouté toutes les "extensions" proposées par Mateo au dernier chapitre)... J'ai également ajouté des boucles d'erreurs, ce que j'ai expérimenté par moi-même. Ce n'était pas de tout repos, je ne voyais plus clair à la fin de la journée mais j'ai fini par réussir!

Il n'y a également aucun mal à prendre des notes de cours. Ça m'aide beaucoup de réécrire dans mes mots les notions importantes enseignées dans ce tutoriel... Et ça s'avère excessivement pratique lorsque je les consulte quand je bloque dans un programme!
Hors ligne Binary-file # Posté le 25/02/2012 à 09:21:58
Avatar

Ville : Montferrand le château
Pays : France métropolitaine

Je m'entraine avant la suite :-° !

Code : C
 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
#include <stdio.h>
#include <stdlib.h>

int multiplier(int nombre1,int nombre2)
{
    return nombre1 * nombre2;
}
int soustraire(int nombre1, int nombre2)
{
    return nombre1 - nombre2;
}
int main()
{

            int choix;
            int nombre1 = 0, nombre2 = 0;

    printf("Veuillez choisir un mod\n");
    printf("1 = multiplier\n2 = soustraire\n");
    scanf("%d", &choix);

    if (choix == 1)
    {
        printf("Veuillez entré un premier nombre :\n");
        scanf("%d", &nombre1);
        printf("veuillez entrer un second nombre :\n");
        scanf("%d", &nombre2);
        printf("Le resultat est : %d * %d = %d", multiplier(nombre1, nombre2));
    }
    else if (choix == 2)
    {
        printf("Veuillez entré un premier nombre :\n");
        scanf("%d", &nombre1);
        printf("veuillez entrer un second nombre :\n");
        scanf("%d", &nombre2);
        printf("Le resultat est : %d * %d = %d", soustraire(nombre1, nombre2));
    }
    else printf("Ce n'est pas dans mes choix");
    return 0;
}
Hors ligne Kyuu0276 # Posté le 26/02/2012 à 22:06:10

Bonjour. J'ai fait un petit c'est + c'est - avec les fonctions.Sa marche mais le nombre mystere ne se limite pas a 100. ^^




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

int genereNombre(const int MAX , const int MIN)
{
srand(time(NULL));
return (rand() % (MAX - MIN + 1)) + MIN;
}
void compareNombres(int nombreMystere , int nombreEntree)
{
if (nombreEntree > nombreMystere)
{
printf("C'est plus !!\n\n");
}
else if (nombreEntree < nombreMystere)
{
printf("C'est moins !!\n\n");
}
else
{
printf("Bravo tu as trouvé le nombre mystère !!\n\n");
}
}

int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;

// Génération du nombre aléatoire
nombreMystere = genereNombre(MIN, MAX);

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère
compareNombres(nombreEntre, nombreMystere);

} while (nombreEntre != nombreMystere);

return 0;
}
Hors ligne tybbo # Posté le 27/02/2012 à 01:15:33
Avatar

Bonsoir,

Déjà merci beaucoup pour ce cour super ! J'ai appris en 3 jours ce que mon cousin s'est tué a m'expliquer en 1 semaine ^^
Hors ligne Mac CROCO # Posté le 28/02/2012 à 17:01:33
Ici et maintenant !
Avatar

Avis : Très bon

Bonjour,

Ce tutoriel est tout simplement génial, de la théorie avec des exemples concrets, c'est vraiment super !!!

19/20, car la perfection n'est pas de notre monde :)
Hors ligne ZaefireLindorie # Posté le 29/02/2012 à 14:24:01

Avis : Bon

@Darkwave j'ai également fait tout les tp, et sans regarder les réponses, toujours en fesant travailler la matière grise. J'ai également réussis le jeux du plus ou moins avec toutes les améliorations proposés par mateo, tout est fonctionnel( 2joueurs, niveau de difficulté, refaire une partie. Message d'erreur en cas de choix incorrect etc etc ), c'est juste qu'il me manque la logique de la programmation, mettre quoi dans quel ordre et parfois sa rend fou !
Hors ligne commandosarkan # Posté le 04/03/2012 à 16:21:20

Avis : Très bon

Merci énormément pour ce cours, c'est super de permettre a ceux qui ni connaissent rien de comprendre :D ce cours est génial.
Voila ma version du jeu si ça peut aider certains à comprendre leurs fautes :

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

int choixDifficulte(int niveau)
{
printf("\n\n\n\tChoisissez un niveau de difficulte:\n\n\t1. facile = le nombre mysterieux se situe entre 1 et 100.");
printf("\n\n\n\t2. moyen = le nombre mysterieux se situe entre 1 et 1000");
printf("\n\n\n\t3. difficile = le nombre mysterieux se situe entre 1 et 10'000");
printf("\n\n\n\t4. legendaire = le nombre mysterieux se situe entre 1 et 100'000");
printf("\n\n\n\n\tChoix du niveau : - ");
do
{
scanf("%d", &niveau);
} while(niveau < 1 || niveau > 4);
return niveau;
}
int genereNombre(int niveau)
{
int nombreMystere = 0;
if (niveau == 1)
{
int MAX = 100, MIN = 1;
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
}
else if (niveau == 2)
{
int MAX = 1000, MIN = 1;
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
}
else if (niveau == 3)
{
int MAX = 10000, MIN = 1;
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
}
else if (niveau == 4)
{
int MAX = 100000, MIN = 1;
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
}
return nombreMystere;
}
int compareNombres(int nombreEntre, int nombreMystere, int nombreDeCoups)
{
if (nombreMystere > nombreEntre)
printf("\n\n\tC'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("\n\n\tC'est moins !\n\n");
else
printf ("\n\n\n\t *** Bravo, vous avez trouve le nombre mystere en %d coups !!! ***", nombreDeCoups);
}
int menuAccueil (void) //explique les regles du jeu + commentaires des objectifs
{
printf("\n\n\t\t ***\tBIENVENUE !!\t***\n\n\tBonjour, dans ce jeu vous devez essayer de trouver un nombre Mystere.");
printf("\n\n Pour cela, vous ecrirez un nombre et je vais vous dire ''c'est plus !''\n\tou ''c'est moins !'' Jusqu'a ce que vous ayez trouve le nombre.");
printf("\n\n Vous avez le choix entre le mode solo (un nombre est choisi au hasard)\n\tet ");
printf("le mode multijoueur (le joueur 1 ecrit un nombre que le joueur 2\n\tdevra trouver.)");
}
int menuPrincipal (int choixModeDeJeu)
{
printf("\n\n\n\n\tChoisissez votre mode de jeu :\n\n\n\t1. Mode solo\n\n\t2. Mode multijoueur\n\n\n\tvotre choix : ");
do
{
scanf("%d", &choixModeDeJeu);
} while(choixModeDeJeu < 1 || choixModeDeJeu > 2);
return choixModeDeJeu;
}
int jeuEnLuiMeme (int nombreMystere)
{
int nombreEntre = 0, nombreDeCoups = 0;
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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n");
do
{
nombreDeCoups++;
printf("\n\n\tQuel est le nombre ?\n\n\t - ");
scanf("%d", &nombreEntre);

compareNombres(nombreEntre, nombreMystere, nombreDeCoups); // dis: c'est +, c'est-, ou si on a gagné //

} while (nombreEntre > nombreMystere || nombreEntre < nombreMystere);
}
int main ()
{
srand(time(NULL));
int choixFinDuJeu = 0, choixPourQuitter = 0, choixModeDeJeu = 0, nombreMystere = 0, niveau = 0;
menuAccueil();
do
{
choixModeDeJeu = menuPrincipal(choixModeDeJeu);
switch (choixModeDeJeu)
{
case 1:
niveau = choixDifficulte(niveau);
do
{
switch (niveau)//change la difficulte selon le choix du joueur//
{
case 1:
nombreMystere = genereNombre(niveau);
break;
case 2:
nombreMystere = genereNombre(niveau);
break;
case 3:
nombreMystere = genereNombre(niveau);
break;
case 4:
nombreMystere = genereNombre(niveau);
break;
}
jeuEnLuiMeme(nombreMystere);
printf("\n\n\n\tQue voulez-vous faire ?\n\n\n\t1. rejouer\n\n\t2. revenir au menu principal\n\n\t3. quitter\n\n\n\t - ");
do//enregistre le choix du joueur a la fin du jeu(rejouer/changer niveau/revenir menu)//
{
scanf("%d", &choixFinDuJeu);
} while (choixFinDuJeu < 1 || choixFinDuJeu > 3);
} while(choixFinDuJeu == 1);
break;
case 2:
do
{
niveau = choixDifficulte(niveau);
switch (niveau)
{
case 1:
do
{
printf("\n\n\n\tJoueur 1, veuillez entrer un nombre mystere\n\n\tentre 1 et 100 :\n\n\t - ");
scanf("%d", &nombreMystere);
} while(nombreMystere < 1 || nombreMystere > 100);
break;
case 2:
do
{
printf("\n\n\n\tJoueur 1, veuillez entrer le nombre mystere\n\n\tentre 1 et 1000 :\n\n\t - ");
scanf("%d", &nombreMystere);
} while(nombreMystere < 1 || nombreMystere > 1000);
break;
case 3:
do
{
printf("\n\n\n\tJoueur 1, veuillez entrer le nombre mystere\n\n\tentre 1 et 1000 :\n\n\t - ");
scanf("%d", &nombreMystere);
} while(nombreMystere < 1 || nombreMystere > 10000);
break;
case 4:
do
{
printf("\n\n\n\tJoueur 1, veuillez entrer le nombre mystere\n\n\tentre 1 et 1000 :\n\n\t - ");
scanf("%d", &nombreMystere);
} while(nombreMystere < 1 || nombreMystere > 100000);
break;
}
jeuEnLuiMeme(nombreMystere);
printf("\n\n\n\tQue voulez-vous faire ?\n\n\n\t1. rejouer\n\n\t2. revenir au menu principal\n\n\t3. quitter\n\n\n\t - ");
do//enregistre le choix du joueur a la fin du jeu//
{
scanf("%d", &choixFinDuJeu);
} while (choixFinDuJeu < 1 || choixFinDuJeu > 3);
} while (choixFinDuJeu ==1);
break;
}
} while (choixFinDuJeu == 2);
printf("\n\n\n\\ttMerci d'avoir joue :D\n\n\n\tCopyright 2012 \n\n\t@Sebastien Chuat\n\n\n\n\n");
return 0;
}
Hors ligne Jinxit # Posté le 04/03/2012 à 17:17:20
Avatar

Salut a tous , j'ai un petit problème pour le TP facultatif :(

J'ai fait ce programme :
Code : C
 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int genereNombre(const int MAX,const int MIN)
{
    int nombreGenere;
    srand(time(NULL));
    nombreGenere = (rand() % (MAX - MIN + 1)) + MIN;
    return nombreGenere;

}

void compareNombres(int nombreEntre,int nombreMystere)
{

    if ( nombreEntre < nombreMystere)
    {
        printf("\n\n  C'est plus !\n  ");
    }

    else if (nombreEntre > nombreMystere)
    {
        printf("C'est moins !\n");
    }

    else
    {
        printf("Bravo vous avez gagnée !\n");
    }

}

int main ( int argc, char** argv )
{
    int nombreMystere = 0, nombreEntre = 0;
    const int MAX = 100, MIN = 1;

    nombreMystere = genereNombre(MIN,MAX);

    do
    {

        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);

        compareNombres(nombreEntre, nombreMystere);

    } while (nombreEntre != nombreMystere);

    return 0;
}


Et j'ai beaux le retourner 60 fois , je ne comprend pas pourquoi le nombreMystere , est toujours entre 100 et 200 , aux lieux de 1 et 100 :euh:

Je demande donc votre aide ^^ Merci d'avance
Hors ligne kyo222 # Posté le 05/03/2012 à 17:06:09

J'ai inversé MIN et MAX :
Code : C
1
nombreMystere = genereNombre(MAX,MIN);


Ça a l'air de marcher, essaye de ton côté
Hors ligne Jinxit # Posté le 05/03/2012 à 18:09:18
Avatar

O.O , .. Effectivement ça marche impec merci , mais quelqu'un aurait une explication a ce phénomène ?
Hors ligne nassima93 # Posté le 05/03/2012 à 23:21:25

aidez-moi s'il vous plait pr trouver la solution..
1\ecrire une fonction nommée <puissance(x,y)> permettant de retourner x^y avec x et y des réels passés en paramétres.
2\ecrire un programme qui utilise la fonction <puissance> de la question 1 pour calculer l’èquivalent dècimal d’un nombre binaire
merci a tous .
Hors ligne Goehank # Posté le 14/03/2012 à 11:40:50

Avis : Très bon

Comment appeler une fonction void?
EDIT : J'suis bête, c'est dans le cours XD
Hors ligne Halarp27 # Posté le 23/03/2012 à 19:26:20
1 || 0

Avis : Décevant

Très bon tutoriel encore une fois! Voici le TP : Plus ou Moins avec les fonction que j'ai réussi à programmer en moins de 5 minutes!


Code : C
 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int genereNombre (int MIN, int MAX)
{
    int nombreMystere = 0;

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    return nombreMystere;
}

int compareNombres (int nombreEntre, int nombreMystere)
{
    if (nombreEntre < nombreMystere)
    {
        printf("C'est plus!\n\n");
    }
    else if (nombreEntre > nombreMystere)
    {
        printf("C'est moin!\n\n");
    }
    else
    {
        printf("Bravo vous avez trouve le nombre mystere!\n\n");
    }
    return nombreMystere;
}
int main()
{
    int nombreMystere = 0, nombreEntre = 0;
    const int MAX = 100, MIN = 1;

    // Génération du nombre aléatoire
    nombreMystere = genereNombre(MIN, MAX);

    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */

    do
    {
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);

        // On compare le nombre entré avec le nombre mystère
        compareNombres(nombreEntre, nombreMystere);

    } while (nombreEntre != nombreMystere);

    return 0;
}


Tu a indiqué ce tuto en difficulté intermédiaire mais moi je trouve ça franchement plus facile que ce que l'on a fait avant!
Hors ligne THC_User # Posté le 27/03/2012 à 22:37:47
Avatar

Avis : Mitigé

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

int genereNombre (int MAX, int MIN )
{
srand(time(NULL));
return (rand() % (MAX - MIN + 1)) + MIN;

}

int compareNombres (int nombreEntre, int nombreMystere)
{

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");



}

int main ( )
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;


// Génération du nombre aléatoire

nombreMystere = genereNombre(MIN, MAX);

printf ("%d\n",genereNombre);

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère
compareNombres(nombreEntre, nombreMystere);

} while (nombreEntre != nombreMystere);

return 0;
}


je ne comprend pas la fonction genereNombre ne genere pas un nombre compris entre 1 et 100 comme je l'es "normalement" indiquer dans le code, je crains que ça soit une question de mémoire ?
Hors ligne AlphaC # Posté le 28/03/2012 à 16:29:45
Avatar

Avis : Très bon

Citation : THC_User
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int genereNombre (int MAX, int MIN )
{
srand(time(NULL));
return (rand() % (MAX - MIN + 1)) + MIN;

}

int compareNombres (int nombreEntre, int nombreMystere)
{

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");



}

int main ( )
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;


// Génération du nombre aléatoire

nombreMystere = genereNombre(MIN, MAX);

printf ("%d\n",genereNombre);

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère
compareNombres(nombreEntre, nombreMystere);

} while (nombreEntre != nombreMystere);

return 0;
}


je ne comprend pas la fonction genereNombre ne genere pas un nombre compris entre 1 et 100 comme je l'es "normalement" indiquer dans le code, je crains que ça soit une question de mémoire ?



J'ai exactement le même problème que toi et le problème vient sans doute d'une petite erreur !
Hors ligne Gianni57540 # Posté le 28/03/2012 à 19:10:43
Tout était bien.
Avatar

Avis : Très bon

Merci encore une fois !

Petit programme de soustraction :

Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>

int soustraction(int a, int b)
{
    return a - b;
}

int main(int argc, char *argv[])
{
    int nombreUn = 0;
    int nombreDeux = 0;

    printf("Entrez un nombre : ");
    scanf("%d", &nombreUn);
    printf("\nEntrez un deuxieme nombre : ");
    scanf("%d", &nombreDeux);

    printf("\n%d - %d = %d\n", nombreUn, nombreDeux, soustraction(nombreUn, nombreDeux));

    return 0;
}


EDIT : Petite calculatrice :

Code : C
 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
#include <stdio.h>
#include <stdlib.h>

int addition(int a, int b)
{
    return a + b;
}

int soustraction(int c, int d)
{
    return c - d;
}

int multiplication(int e, int f)
{
    return e * f;
}

int division(int g, int h)
{
    return g / h;
}

int main()
{
    int choix = 0;
    int nombreUn = 0;
    int nombreDeux = 0;
    printf("Choix du calcul :\n\n1: Addition\n2: Soustraction\n3: Multiplication\n4: Division\n\n\nTaper le numero correspondant a l'operation souhaitee : ");
    scanf("%d", &choix);
    if (choix == 1)
    {
        printf("\nChoix du premier nombre : ");
        scanf("%d", &nombreUn);
        printf("Choix du deuxieme nombre : ");
        scanf("%d", &nombreDeux);
        printf("\n%d + %d = %d\n", nombreUn, nombreDeux, addition(nombreUn, nombreDeux));
    }
    else if (choix == 2)
    {
        printf("\nChoix du premier nombre : ");
        scanf("%d", &nombreUn);
        printf("Choix du deuxieme nombre : ");
        scanf("%d", &nombreDeux);
        printf("\n%d - %d = %d\n", nombreUn, nombreDeux, soustraction(nombreUn, nombreDeux));
    }
    else if (choix == 3)
    {
        printf("\nChoix du premier nombre : ");
        scanf("%d", &nombreUn);
        printf("Choix du deuxieme nombre : ");
        scanf("%d", &nombreDeux);
        printf("\n%d * %d = %d\n", nombreUn, nombreDeux, multiplication(nombreUn, nombreDeux));
    }
    else if (choix == 4)
    {
        printf("\nChoix du premier nombre : ");
        scanf("%d", &nombreUn);
        printf("Choix du deuxieme nombre : ");
        scanf("%d", &nombreDeux);
        printf("\n%d / %d = %d\n", nombreUn, nombreDeux, division(nombreUn, nombreDeux));
    }
    else
    {
        printf("\nChoisir un nombre entre 1 et 4. ");
    }
    return 0;
}

Mieux vaut mourir incompris que passer sa vie à s'expliquer.
 
Connecté Kagami Tsuki # Posté le 31/03/2012 à 11:28:57

Ville : Marigny
Pays : France métropolitaine

Pour ceux que ça intéresse, voici mon script:
Il gère deux trois trucs:
-Demande pour rejouer à la fin d'une partie.
-Trois niveaux de difficulté.
-Possibilité de changer la difficulté à chaque nouvelle partie.
-Compte le nombre de coups utilisés pour réussir.

Code : C
 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
//===Includes===
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int jouer = 1;

void compareNombre(int nombreEntre, int nombreMystere, int compteurCoups)
{
    if (nombreEntre < nombreMystere)
    {
        printf("C'est plus \n \n");
    }
    else if (nombreEntre > nombreMystere)
    {
        printf("C'est moins \n \n");
    }
    else
    {
        printf("Bravo, vous avez trouve le nombre mystere! \n"
               "Vous avez eu besoin de %d coups.\n\n", compteurCoups);
    }
}

//===Fonction Principale===
int main(int argc, char *argv[])
{
    int max = 100, min = 1;
    int nombreMystere = 0, nombreEntre = 0, compteurCoups = 0;

    while (jouer == 1)
    {
    compteurCoups = 0;
        switch (choixDifficulte())
        {
            case 1:
                nombreMystere = genereNombre(1, 100);
                break;
            case 2:
                nombreMystere = genereNombre(1, 1000);
                break;
            case 3:
                nombreMystere = genereNombre(1, 10000);
                break;
        }

        do
        {
            printf("Entrez le nombre magique: ");
            scanf("%d", &nombreEntre);
            compteurCoups++;

            compareNombre(nombreEntre, nombreMystere, compteurCoups);
        } while (nombreEntre != nombreMystere);

        printf("Voulez-vous rejouer? (1 = OUI, 0 = NON) ");
        scanf("%d", &jouer);
        printf("\n--------------------\n\n");
    }

    return 0;
}

int choixDifficulte()
{
    int difficulte = 1;

    printf("Veuillez choisir un niveau de difficulte: \n"
           "1 = Facile\n"
           "2 = Normal\n"
           "3 = Difficile\n");
    scanf("%d", &difficulte);

    return difficulte;
}

int genereNombre(int min, int max)
{
    int nombreMystere = 0;

    srand(time(NULL));

    return nombreMystere = (rand() % (max - min + 1)) + min;
}
Hors ligne Pyanist # Posté le 02/04/2012 à 20:04:24
Avatar

Citation : THC_User
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int genereNombre (int MAX, int MIN )
{
srand(time(NULL));
return (rand() % (MAX - MIN + 1)) + MIN;

}

int compareNombres (int nombreEntre, int nombreMystere)
{

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");



}

int main ( )
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;


// Génération du nombre aléatoire

nombreMystere = genereNombre(MIN, MAX);

printf ("%d\n",genereNombre);

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère
compareNombres(nombreEntre, nombreMystere);

} while (nombreEntre != nombreMystere);

return 0;
}


je ne comprend pas la fonction genereNombre ne genere pas un nombre compris entre 1 et 100 comme je l'es "normalement" indiquer dans le code, je crains que ça soit une question de mémoire ?


Le problème est simple : dans ta fonction main, tu appelles bien ta fonction generenombre comme ceci :
Code : C
1
nombreMystere = genereNombre(MIN, MAX);


Or, quand tu as crée ta fonction, voilà comment tu l'as faites :
Code : C
1
int genereNombre (int MAX, int MIN )

Tu as inversé les variables ! Mets comme ceci :
Code : C
1
int genereNombre (int MIN, int MAX)


Oh, ça marche ! :p
Hors ligne abedsoft # Posté le 05/04/2012 à 11:27:33
Avatar

Avis : Très bon

Merci .
Pour accéder à cette section
Connectez-vous !
connexion_rpx