Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment reinitialiser une fonction ???

Sujet résolu
    19 juin 2017 à 22:07:06

    bonsoir a tous,

    voila je souhaite apprendre le japonais et pour m'y aider j'ecrit un programme pour choisir un caractere (presentés dans un tableau) au hasard seulement je lui ais demander de me donner dix "coordonées" en faisant une boucle mais le programme me donne TOUJOURS  les meme donnée je pense qu'il faut reinitialiser les fonction qui me donne les données mais comment faire ? si vous pensez qu'il s'agit d'un autre probleme n'hésitez pas a e suggérez vos solution

    merci d'avance

    -
    Edité par BaptisteSavioz1 19 juin 2017 à 22:10:47

    • Partager sur Facebook
    • Partager sur Twitter
      19 juin 2017 à 22:52:49

      réponse : il faut taper des trucs. Dans la boucle. Ou pas.

      Blague à part, on est censés dire comment modifier un programme qu'on ne voit pas ?

      -
      Edité par michelbillaud 19 juin 2017 à 22:53:16

      • Partager sur Facebook
      • Partager sur Twitter
        19 juin 2017 à 23:39:02

        C'est parce que tu utilises la fonction rand, qui fournit toujours les mêmes valeurs, sans l'initialiser avec srand.

        (J'espère que c'est bien ça, ainsi je pourrai valider mon cours de télépathie d'Open Classroume.)

        -
        Edité par robun 19 juin 2017 à 23:40:43

        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2017 à 0:03:19

          > J'espère que c'est bien ça, ainsi je pourrai valider mon cours de télépathie d'Open Classroume.

          Ça vaut pas le cours d’utilisation des boules de cristal...

          • Partager sur Facebook
          • Partager sur Twitter
          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
            20 juin 2017 à 13:52:01

            desoler je n'ai pas penser a vous envoyer le code source le voici :

            main.c:

            #include <stdio.h>
            #include <stdlib.h>
            #include <time.h>
            #include "numero.h"
            #include "lettre.h"

            int main()
            {
                int retry = 0;
                do{

                int boucle = 0;

                do
                {
                    int NUM = numero(11, 1);
                    int LET = lettre(5, 1);
                switch(NUM)
                {
                    case 1:
                        switch(LET)
                        {
                        case 1:
                            printf("A;1\n");
                            break;
                        case 2:
                            printf("B;1\n");
                            break;
                        case 3:
                            printf("C;1\n");
                            break;
                        case 4:
                            printf("D;1\n");
                            break;
                        case 5:
                            printf("E;1\n");
                            break;
                        }
                        break;
                    case 2:
                        switch(LET)
                        {
                        case 1:
                            printf("A;2\n");
                            break;
                        case 2:
                            printf("B;2\n");
                            break;
                        case 3:
                            printf("C;2\n");
                            break;
                        case 4:
                            printf("D;2\n");
                            break;
                        case 5:
                            printf("E;2\n");
                            break;
                        }
                        break;
                    case 3:
                        switch(LET)
                        {
                        case 1:
                            printf("A;3\n");
                            break;
                        case 2:
                            printf("B;3\n");
                            break;
                        case 3:
                            printf("C;3\n");
                            break;
                        case 4:
                            printf("D;3\n");
                            break;
                        case 5:
                            printf("E;3\n");
                            break;
                        }
                        break;
                    case 4:
                        switch(LET)
                        {
                        case 1:
                            printf("A;4\n");
                            break;
                        case 2:
                            printf("B;4\n");
                            break;
                        case 3:
                            printf("C;4\n");
                            break;
                        case 4:
                            printf("D;4\n");
                            break;
                        case 5:
                            printf("E;4\n");
                            break;
                        }
                        break;
                    case 5:
                        switch(LET)
                        {
                        case 1:
                            printf("A;5\n");
                            break;
                        case 2:
                            printf("B;5\n");
                            break;
                        case 3:
                            printf("C;5\n");
                            break;
                        case 4:
                            printf("D;5\n");
                            break;
                        case 5:
                            printf("E;5\n");
                            break;
                        }
                        break;
                    case 6:
                        switch(LET)
                        {
                        case 1:
                            printf("A;6\n");
                            break;
                        case 2:
                            printf("B;6\n");
                            break;
                        case 3:
                            printf("C;6\n");
                            break;
                        case 4:
                            printf("D;6\n");
                            break;
                        case 5:
                            printf("E;6\n");
                            break;
                        }
                        break;
                    case 7:
                        switch(LET)
                        {
                        case 1:
                            printf("A;7\n");
                            break;
                        case 2:
                            printf("B;7\n");
                            break;
                        case 3:
                            printf("C;7\n");
                            break;
                        case 4:
                            printf("D;7\n");
                            break;
                        case 5:
                            printf("E;7\n");
                            break;
                        }
                        break;
                    case 8:
                        switch(LET)
                        {
                        case 1:
                            printf("A;8\n");
                            break;
                        case 3:
                            printf("C;8\n");
                            break;
                        case 5:
                            printf("E;8\n");
                            break;
                        }
                        break;
                    case 9:
                        switch(LET)
                        {
                        case 1:
                            printf("A;9\n");
                            break;
                        case 2:
                            printf("B;9\n");
                            break;
                        case 3:
                            printf("C;9\n");
                            break;
                        case 4:
                            printf("D;9\n");
                            break;
                        case 5:
                            printf("E;9\n");
                            break;
                        }
                        break;
                    case 10:
                        switch(LET)
                        {
                        case 1:
                            printf("A;10\n");
                            break;
                        case 5:
                            printf("E;10\n");
                            break;
                        }
                        break;
                    case 11:
                        switch(LET)
                        {
                        case 5:
                            printf("E;11\n");
                            break;
                        }
                        break;
                }
                boucle ++;

                }while(boucle != 10);

                printf("Relancer ?\nYes[1]  No[0]\n");
                scanf("%d", &retry);

                }while(retry == 1);

                return 0;
            }

            fonction "numero":

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

            int numero(int MaxN, int MinN)
            {
                int Numero = 0;
                srand(time(NULL));
                Numero = (rand() % (MaxN - MinN + 1)) + MinN;

                return Numero;
            }

            fonction "lettre" :

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

            int lettre(int MaxL, int MinL)
            {
                int Lettre = 0;
                srand(time(NULL));
                Lettre = (rand() % (MaxL - MinL + 1)) + MinL;

                return Lettre;
            }

            voila j'espere que cette assez claire pour vous

            si vous voulez je peut essayer de vous donné le code source

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              20 juin 2017 à 14:11:30

              Salut,

              Merci d'insérer ton code avec le bouton </> de l'éditeur.

              Ensuite, pourquoi inclure plusieurs fois les librairies stdio, stdlib et time ?

              Le srand, comme dit plus haut, doit être exécuté une seule fois. Met le en début de programme.

              Ensuite, pour cette horreur de switchs empilés, fais plutôt des variables qui stockent l'état et construisent la chaîne résultat correctement.

              -
              Edité par Anonyme 20 juin 2017 à 14:12:17

              • Partager sur Facebook
              • Partager sur Twitter
                20 juin 2017 à 14:25:41

                merci de tous tes conseil j'avoue ne pas tous avoir compris notement l'histoire des variable mais merci quand meme

                • Partager sur Facebook
                • Partager sur Twitter
                  20 juin 2017 à 15:22:47

                  L'histoire des variables, c'est pour optimiser le programme. Mais ne nous dispersons pas, un seul problème à la fois ! Donc il faut trouver l'erreur. Le problème « le programme me donne TOUJOURS  les meme donnée », c'est qu'il tire toujours le même NUM ? Ou le même LET ? Ou les deux ? C'est vrai que les 'srand' sont mal placés (il faut en mettre un seul en début de programme puisque c'est une initialisation), mais je n'ai pas l'impression que ça générera les mêmes NUM ou LET.

                  (Artemix : <time.h> sert pour les fonctions 'rand' et 'srand', je crois.)

                  (Donc je n'ai pas validé ma formation à la télépathie...)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    20 juin 2017 à 16:02:30

                    (robun, je parlais de la redondance des include, ils sont inclus au moins 2 fois si on considère que son code est 1 seul fichier, et je ne sais pas s'il a séparé son code en plusieurs fichiers, time.h sert pour le time() dans le srand(time(0)). Les deux autres fonctions viennent de stdlib)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 juin 2017 à 16:32:38

                      ca fonctionne merci infiniment a tous
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 juin 2017 à 17:32:10

                        L'abominable enchaineement de switch

                           switch(NUM)
                            {
                                case 1:
                                    switch(LET)
                                    {
                                    case 1:
                                        printf("A;1\n");
                                        break;
                                    case 2:
                                        printf("B;1\n");
                                        break;
                               ....
                        

                        qui occupe une bonne centaine de lignes se ramène à deux instructions.

                        char lettre  = 'A' + LET - 1;
                        printf("%c;%d\n", lettre, NUM);
                        

                        Au dela d'une optimisation (de temps, d'espace ?), c'est surtout une mesure de salubrité pour avoir du code lisible.


                        -
                        Edité par michelbillaud 20 juin 2017 à 17:33:39

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 juin 2017 à 18:41:42

                          merci beaucoup vous m'avez bien aider
                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 juin 2017 à 18:42:25

                            BaptisteSavioz1 : donc c'était juste un problème de placement des 'srand' ? (C'est pour connaître mes compétences en télépathie...)

                            michelbillaud : quand on débute, ce n'est pas évident de penser à cette astuce, mais le gain est tellement spectaculaire que tu as raison !

                            • Partager sur Facebook
                            • Partager sur Twitter

                            comment reinitialiser une fonction ???

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown