IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

erreurs sur pointeurs ?


Sujet :

C

  1. #1
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut erreurs sur pointeurs ?
    Bonjour,

    J'ai cette fonction qui ne marche pas, l'environnement compile mais l'exécution est le résultat d'un beau plantage. Je suppose que cela vient des pointeurs ?

    Merci d'avance.

    [EDIT]

    Au passage, existe t-il un type qui puisse stocker ce nombre 20282409603651670423947251286016. Apparemment le long double n'est pas suffisant et je ne connais pas de plus grand conteneur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void FORMAT_SECONDE(double TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE)     
    {
         double K_YEAR   = 31536000;
         double K_DAY    = 86400   ;
         double K_HOUR   = 3600    ;
         double K_MINUTE = 60      ;
     
         *YEAR    = floor(  TIME                                                 /K_YEAR             );
         *DAY     = floor( (TIME - (*YEAR)*K_YEAR                                )/K_DAY             ); 
         *HOUR    = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY                 )/K_HOUR            );
         *MINUTE  = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR)/K_MINUTE          );
         *SECONDE =         TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR - (*MINUTE)*K_MINUTE;
    }

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Il faudrait l'appel de la fonction pour voir si les adresses fournies sont correctes.

  3. #3
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 088
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message

    Existe t-il un type qui puisse stocker ce nombre 20282409603651670423947251286016.
    Apparemment le long double n'est pas suffisant et je ne connais pas de plus grand conteneur.
    Oui, il existe la libraire GMP qui propose justement des nouveau type pour les grand nombres.

    Citation Envoyé par darkwall_37 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void FORMAT_SECONDE(double TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE)     
    {
         double K_YEAR   = 31536000;
         double K_DAY    = 86400   ;
         double K_HOUR   = 3600    ;
         double K_MINUTE = 60      ;
     
         *YEAR    = floor(  TIME                                                 /K_YEAR             );
         *DAY     = floor( (TIME - (*YEAR)*K_YEAR                                )/K_DAY             ); 
         *HOUR    = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY                 )/K_HOUR            );
         *MINUTE  = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR)/K_MINUTE          );
         *SECONDE =         TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR - (*MINUTE)*K_MINUTE;
    }
    Si tu veux verifier que tes pointeur sont bon, il faudrait les tester un tant soit peu. C'est vrai, cela rajoute du coe, c'est vrai, cela prend du temps et on a l'impressions que ca sert a rien. Par contre, quand on se retrouve dans ta situation, on est content de l'avoir fait :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    void FORMAT_SECONDE(double TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE)     
    {
         double K_YEAR   = 31536000;
         double K_DAY    = 86400   ;
         double K_HOUR   = 3600    ;
         double K_MINUTE = 60      ;
        
         if (YEAR == NULL)
         {
              printf("Le pointeur YEAR pointe sur NULL !");
              exit(EXIT_FAILURE);
         }
         else
              printf ("Le pointeur YEAR  vaut %lf", *YEAR);
       
         if (DAY == NULL)
         {
              printf("Le pointeur DAYpointe sur NULL !");
              exit(EXIT_FAILURE);
         }
         else
              printf ("Le pointeur DAY vaut %lf", *DAY);
    
         if (HOUR == NULL)
         {
              printf("Le pointeur HOURpointe sur NULL !");
              exit(EXIT_FAILURE);
         }
         else
              printf ("Le pointeur HOUR vaut %lf", *HOUR);
     
         if (MINUTE == NULL)
         {
              printf("Le pointeur MINUTE pointe sur NULL !");
              exit(EXIT_FAILURE);
         }
         else
              printf ("Le pointeur MINUTE  vaut %lf", *MINUTE);
    
         if (SECONDE == NULL)
         {
              printf("Le pointeur SECONDE pointe sur NULL !
              exit(EXIT_FAILURE);
         }
         else
              printf ("Le pointeur SECONDE vaut %lf", *SECONDE);
    
    
    
    
    
         
         *YEAR    = floor(  TIME                                                 /K_YEAR             );
         *DAY     = floor( (TIME - (*YEAR)*K_YEAR                                )/K_DAY             ); 
         *HOUR    = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY                 )/K_HOUR            );
         *MINUTE  = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR)/K_MINUTE          );
         *SECONDE =         TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR - (*MINUTE)*K_MINUTE;
    }


    A noter que les else pour afficher la valeur ne te serviron que pour le debbugage, tu peux les virer après.



    EDIT :

    Suite a la remarque de Darkwall dans le post ci dessous


    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ((*DAY) == NULL)
    Quand je compile, il me dit invalid operands to binary == o0

    Je me permet d'editer afin de retablir la bonne syntaxe.

  4. #4
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Est ce que la librairie GMP est "livrée" de bases avec l'éditeur comme pour les header standarts ou bien faut-il la télécharger ?

    Voici l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double CURRENT_TIME=K; // K une valeur qui change au cours des boucles 
    double *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES=malloc(sizeof(double));
    FORMAT_SECONDE(CURRENT_TIME, ANNEES, JOURS, HEURES, MINUTES, SECONDES);
    Voici le code entier au cas où mais je sens que je vais me faire taper xD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
     
    void FORMAT_SECONDE(double CURRENT_TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE);
    void ECRIRE( FILE *FICHIER, int VALEUR );
     
    int main()
    {
     
        system("title GENERATEUR CLES WEP");
        system("COLOR 09");
        system("MODE CON COLS=60 LINES=19");
        int D01, D02, D03, D04, D05, D06, D07, D08 , D09, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26;
     
        FILE *F0=fopen("WEP.txt","w");
        double INIT_TIME=GetTickCount();
        double COMPTEUR_BOUCLE=0;
        double TAILLE=0;
        double AFFICHER=0;
        double K=20282409603651670423947251.286016;
     
        for ( D01=0 ; D01<16 ; D01++ )
            {
                     for ( D02=0 ; D02<16 ; D02++ )
                         {
                                  for ( D03=0 ; D03<16 ; D03++ )
                                      {
                                               for ( D04=0 ; D04<16 ; D04++ )
                                                   {
                                                               for ( D05=0 ; D05<16 ; D05++ )
                                                                   {
                                                                           for ( D06=0 ; D06<16 ; D06++ )
                                                                               {
                                                                                       for ( D07=0 ; D07<16 ; D07++ )
                                                                                           {
                                                                                                   for ( D08=0 ; D08<16 ; D08++ )
                                                                                                       {
                                                                                                               for ( D09=0 ; D09<16 ; D09++ )
                                                                                                                   {
                                                                                                                           for ( D10=0 ; D10<16 ; D10++ )
                                                                                                                               {
                                                                                                                                       for ( D11=0 ; D11<16 ; D11++ )
                                                                                                                                           {
                                                                                                                                                   for ( D12=0 ; D12<16 ; D12++ )
                                                                                                                                                       {
                                                                                                                                                               for ( D13=0 ; D13<16 ; D13++ )
                                                                                                                                                                   {
                                                                                                                                                                           for ( D14=0 ; D14<16 ; D14++ )
                                                                                                                                                                               {
                                                                                                                                                                                       for ( D15=0 ; D15<16 ; D15++ )
                                                                                                                                                                                           {
                                                                                                                                                                                                   for ( D16=0 ; D16<16 ; D16++ )
                                                                                                                                                                                                       {
                                                                                                                                                                                                               for ( D17=0 ; D17<16 ; D17++ )
                                                                                                                                                                                                                   {
                                                                                                                                                                                                                           for ( D18=0 ; D18<16 ; D18++ )
                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                       for ( D19=0 ; D19<16 ; D19++ )
                                                                                                                                                                                                                                           {
                                                                                                                                                                                                                                                   for ( D20=0 ; D20<16 ; D20++ )
                                                                                                                                                                                                                                                       {
                                                                                                                                                                                                                                                               for ( D21=0 ; D21<16 ; D21++ )
                                                                                                                                                                                                                                                                   {
                                                                                                                                                                                                                                                                           for ( D22=0 ; D22<16 ; D22++ )
                                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                                       for ( D23=0 ; D23<16 ; D23++ )
                                                                                                                                                                                                                                                                                           {
                                                                                                                                                                                                                                                                                                   for ( D24=0 ; D24<16 ; D24++ )
                                                                                                                                                                                                                                                                                                       {
                                                                                                                                                                                                                                                                                                               for ( D25=0 ; D25<16 ; D25++ )
                                                                                                                                                                                                                                                                                                                   {
                                                                                                                                                                                                                                                                                                                           for ( D26=0 ; D26<16 ; D26++ )
                                                                                                                                                                                                                                                                                                                               {
     
     
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D01);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D02);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D03);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D04);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D05);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D06);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D07);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D08);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D09);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D10);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D11);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D12);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D13);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D14);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D15);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D16);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D17);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D18);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D19);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D20);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D21);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D22);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D23);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D24);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D25);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D26);
     
                                                                                                                                                                                                                                                                                                                                       TAILLE+=26;
                                                                                                                                                                                                                                                                                                                                       double TAILLE_GO=TAILLE/(1024*1024);
     
     
     
                                                                                                                                                                                                                                                                                                                                       COMPTEUR_BOUCLE++;
                                                                                                                                                                                                                                                                                                                                       double CURRENT_TIME = (GetTickCount()-INIT_TIME)/1000;
                                                                                                                                                                                                                                                                                                                                       double CALCUL_SEC   = COMPTEUR_BOUCLE/CURRENT_TIME;
     
     
                                                                                                                                                                                                                                                                                                                                       double *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES=malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double Ka=31536000;
                                                                                                                                                                                                                                                                                                                                       double Kj=86400;
                                                                                                                                                                                                                                                                                                                                       double Kh=3600;
                                                                                                                                                                                                                                                                                                                                       double Km=60;
                                                                                                                                                                                                                                                                                                                                       FORMAT_SECONDE(CURRENT_TIME, ANNEES, JOURS, HEURES, MINUTES, SECONDES);
                                                                                                                                                                                                                                                                                                                                       //ANNEES   = floor(  CURRENT_TIME/Ka );
                                                                                                                                                                                                                                                                                                                                       //JOURS    = floor( (CURRENT_TIME - ANNEES*Ka)/Kj ); 
                                                                                                                                                                                                                                                                                                                                       //HEURES   = floor( (CURRENT_TIME - ANNEES*Ka - JOURS*Kj)/Kh );
                                                                                                                                                                                                                                                                                                                                       //MINUTES  = floor( (CURRENT_TIME - ANNEES*Ka - JOURS*Kj - HEURES*Kh )/Km );
                                                                                                                                                                                                                                                                                                                                       //SECONDES = CURRENT_TIME - ANNEES*Ka - JOURS*Kj - HEURES*Kh - MINUTES*Km;
     
                                                                                                                                                                                                                                                                                                                                       double TIME_LEFT=(K-COMPTEUR_BOUCLE)/CALCUL_SEC;
                                                                                                                                                                                                                                                                                                                                       double _ANNEES, _JOURS, _HEURES, _MINUTES, _SECONDES;
     
                                                                                                                                                                                                                                                                                                                                       _ANNEES   = floor(  TIME_LEFT/Ka );
                                                                                                                                                                                                                                                                                                                                       _JOURS    = floor( (TIME_LEFT - _ANNEES*Ka)/Kj ); 
                                                                                                                                                                                                                                                                                                                                       _HEURES   = floor( (TIME_LEFT - _ANNEES*Ka - _JOURS*Kj)/Kh );
                                                                                                                                                                                                                                                                                                                                       _MINUTES  = floor( (TIME_LEFT - _ANNEES*Ka - _JOURS*Kj - _HEURES*Kh )/Km );
                                                                                                                                                                                                                                                                                                                                       _SECONDES = TIME_LEFT - _ANNEES*Ka - _JOURS*Kj - _HEURES*Kh - _MINUTES*Km;
     
     
     
     
     
                                                                                                                                                                                                                                                                                                                                       double PROGRESSION=(COMPTEUR_BOUCLE)/(10000*K);
     
                                                                                                                                                                                                                                                                                                                                       if ( TAILLE_GO>AFFICHER )
                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                            printf("\n+ PROGRESSION         : %.30f %% \n\n+ TAILLE              : %.0f Mo \n\n+ CALCUL/S            : %.0f \n\n+ TEMPS DE TRAITEMENT : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n\n+ TEMPS RESTANT       : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n-----------------------------------------------------------", PROGRESSION, TAILLE_GO, CALCUL_SEC, *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES, _ANNEES , _JOURS, _HEURES, _MINUTES, _SECONDES );
                                                                                                                                                                                                                                                                                                                                            AFFICHER+=10;
                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
    void ECRIRE( FILE *FICHIER, int VALEUR )
    {             
     
         if ( VALEUR<=9 )
            {
                  fprintf(FICHIER, "%d", VALEUR);
            }                          
     
         if ( VALEUR>9 )            
            {
     
                              if ( VALEUR==10 )
                              {
                                                fprintf(FICHIER,"A");
                              }
     
                              if ( VALEUR==11 )
                              {
                                                fprintf(FICHIER,"B");
                              }
     
                              if ( VALEUR==12 )
                              {
                                                fprintf(FICHIER,"C");
                              }
     
                              if ( VALEUR==13 )
                              {
                                                fprintf(FICHIER,"D");
                              }
     
                              if ( VALEUR==14 )
                              {
                                                fprintf(FICHIER,"E");
                              }
     
                              if ( VALEUR==15 )
                              {
                                                fprintf(FICHIER,"F");
                              }
     
            }
    }
     
     
    void FORMAT_SECONDE(double TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE)     
    {
         double K_YEAR   = 31536000;
         double K_DAY    = 86400   ;
         double K_HOUR   = 3600    ;
         double K_MINUTE = 60      ;
     
         *YEAR    = floor(  TIME                                                 /K_YEAR             );
         *DAY     = floor( (TIME - (*YEAR)*K_YEAR                                )/K_DAY             ); 
         *HOUR    = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY                 )/K_HOUR            );
         *MINUTE  = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR)/K_MINUTE          );
         *SECONDE =         TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR - (*MINUTE)*K_MINUTE;
    }
    Quand je compile, il me dit invalid operands to binary == o0

  5. #5
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 088
    Par défaut
    Je crois que l'on a le record du plus long printf ... avec 660 caractere .....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("\n+ PROGRESSION         : %.30f %% \n\n+ TAILLE              : %.0f Mo \n\n+ CALCUL/S            : %.0f \n\n+ TEMPS DE TRAITEMENT : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n\n+ TEMPS RESTANT       : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n-----------------------------------------------------------", PROGRESSION, TAILLE_GO, CALCUL_SEC, *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES, _ANNEES , _JOURS, _HEURES, _MINUTES, _SECONDES );
    Non, serieusement, tu disais que tu craignais de te faire taper, je comprend maintenant.

    Une indentation, c'est entre 3 et 5 espace usuellement. Je sais que ca depend des gout, mais je trouve que 4 espace est parfait : on voit bien le decochement du code et cela ne l'eloigne pas trop.
    Dans le code, tu fais des indentation a au moins 8 espace ...
    sachant que tu as 26 boucle imbriqué .....
    En remettant bien les indentation pour voir le code, j'ai cru que je jouai a la poupée russe, un veritable enfer

    Bref, je vais reposter ton code indenter "plus dans les norme". Tache a toi de me dire si je n'aurai pas malencontrueusement supprimer une ligne et de me corriger, apres on verra pour trouver l'erreur et simplifier ce code

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 088
    Par défaut
    Ok, est ce que ce code correspond a celui que tu as poster ? Je pense nottament a ce qui est compris entre les parenthese du derniere for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
     
    void FORMAT_SECONDE(double CURRENT_TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE);
    void ECRIRE( FILE *FICHIER, int VALEUR );
     
    int main()
    {
     
        system("title GENERATEUR CLES WEP");
        system("COLOR 09");
        system("MODE CON COLS=60 LINES=19");
        int D01, D02, D03, D04, D05, D06, D07, D08 , D09, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26;
     
        FILE *F0=fopen("WEP.txt","w");
        double INIT_TIME=GetTickCount();
        double COMPTEUR_BOUCLE=0;
        double TAILLE=0;
        double AFFICHER=0;
        double K=20282409603651670423947251.286016;
     
        for ( D01=0 ; D01<16 ; D01++ )
            for ( D02=0 ; D02<16 ; D02++ )
                for ( D03=0 ; D03<16 ; D03++ )
                    for ( D04=0 ; D04<16 ; D04++ )
                        for ( D05=0 ; D05<16 ; D05++ )
                            for ( D06=0 ; D06<16 ; D06++ )
                                for ( D07=0 ; D07<16 ; D07++ )
                                    for ( D08=0 ; D08<16 ; D08++ )
                                        for ( D09=0 ; D09<16 ; D09++ )
                                            for ( D10=0 ; D10<16 ; D10++ )
                                                for ( D11=0 ; D11<16 ; D11++ )
                                                    for ( D12=0 ; D12<16 ; D12++ )
                                                        for ( D13=0 ; D13<16 ; D13++ )
                                                            for ( D14=0 ; D14<16 ; D14++ )
                                                                for ( D15=0 ; D15<16 ; D15++ )
                                                                    for ( D16=0 ; D16<16 ; D16++ )
                                                                        for ( D17=0 ; D17<16 ; D17++ )
                                                                            for ( D18=0 ; D18<16 ; D18++ )
                                                                                for ( D19=0 ; D19<16 ; D19++ )
                                                                                    for ( D20=0 ; D20<16 ; D20++ )
                                                                                        for ( D21=0 ; D21<16 ; D21++ )
                                                                                            for ( D22=0 ; D22<16 ; D22++ )
                                                                                                for ( D23=0 ; D23<16 ; D23++ )
                                                                                                    for ( D24=0 ; D24<16 ; D24++ )
                                                                                                        for ( D25=0 ; D25<16 ; D25++ )
                                                                                                            for ( D26=0 ; D26<16 ; D26++ )
                                                                                                            {
                                                                                                                ECRIRE(F0, D01);
                                                                                                                ECRIRE(F0, D02);
                                                                                                                ECRIRE(F0, D03);
                                                                                                                ECRIRE(F0, D04);
                                                                                                                ECRIRE(F0, D05);
                                                                                                                ECRIRE(F0, D06);
                                                                                                                ECRIRE(F0, D07);
                                                                                                                ECRIRE(F0, D08);
                                                                                                                ECRIRE(F0, D09);
                                                                                                                ECRIRE(F0, D10);
                                                                                                                ECRIRE(F0, D11);
                                                                                                                ECRIRE(F0, D12);
                                                                                                                ECRIRE(F0, D13);
                                                                                                                ECRIRE(F0, D14);
                                                                                                                ECRIRE(F0, D15);
                                                                                                                ECRIRE(F0, D16);
                                                                                                                ECRIRE(F0, D17);
                                                                                                                ECRIRE(F0, D18);
                                                                                                                ECRIRE(F0, D19);
                                                                                                                ECRIRE(F0, D20);
                                                                                                                ECRIRE(F0, D21);
                                                                                                                ECRIRE(F0, D22);
                                                                                                                ECRIRE(F0, D23);
                                                                                                                ECRIRE(F0, D24);
                                                                                                                ECRIRE(F0, D25);
                                                                                                                ECRIRE(F0, D26);
     
                                                                                                                TAILLE+=26;
                                                                                                                double TAILLE_GO=TAILLE/(1024*1024);
     
                                                                                                                COMPTEUR_BOUCLE++;
                                                                                                                double CURRENT_TIME = (GetTickCount()-INIT_TIME)/1000;
                                                                                                                double CALCUL_SEC   = COMPTEUR_BOUCLE/CURRENT_TIME;
     
     
                                                                                                                double *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES=malloc(sizeof(double));
                                                                                                                double Ka=31536000;
                                                                                                                double Kj=86400;
                                                                                                                double Kh=3600;
                                                                                                                double Km=60;
                                                                                                                FORMAT_SECONDE(CURRENT_TIME, ANNEES, JOURS, HEURES, MINUTES, SECONDES);
                                                                                                                //ANNEES   = floor(  CURRENT_TIME/Ka );
                                                                                                                //JOURS    = floor( (CURRENT_TIME - ANNEES*Ka)/Kj ); 
                                                                                                                //HEURES   = floor( (CURRENT_TIME - ANNEES*Ka - JOURS*Kj)/Kh );
                                                                                                                //MINUTES  = floor( (CURRENT_TIME - ANNEES*Ka - JOURS*Kj - HEURES*Kh )/Km );
                                                                                                                //SECONDES = CURRENT_TIME - ANNEES*Ka - JOURS*Kj - HEURES*Kh - MINUTES*Km;
     
                                                                                                                double TIME_LEFT=(K-COMPTEUR_BOUCLE)/CALCUL_SEC;
                                                                                                                double _ANNEES, _JOURS, _HEURES, _MINUTES, _SECONDES;
     
                                                                                                                _ANNEES   = floor(  TIME_LEFT/Ka );
                                                                                                                _JOURS    = floor( (TIME_LEFT - _ANNEES*Ka)/Kj ); 
                                                                                                                _HEURES   = floor( (TIME_LEFT - _ANNEES*Ka - _JOURS*Kj)/Kh );
                                                                                                                _MINUTES  = floor( (TIME_LEFT - _ANNEES*Ka - _JOURS*Kj - _HEURES*Kh )/Km );
                                                                                                                _SECONDES = TIME_LEFT - _ANNEES*Ka - _JOURS*Kj - _HEURES*Kh - _MINUTES*Km;
     
     
     
     
     
                                                                                                                double PROGRESSION=(COMPTEUR_BOUCLE)/(10000*K);
     
                                                                                                                if ( TAILLE_GO>AFFICHER )
                                                                                                                {
                                                                                                                    printf("\n+ PROGRESSION         : %.30f %% \n\n+ TAILLE              : %.0f Mo \n\n+ CALCUL/S            : %.0f \n\n+ TEMPS DE TRAITEMENT : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n\n+ TEMPS RESTANT       : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n-----------------------------------------------------------", PROGRESSION, TAILLE_GO, CALCUL_SEC, *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES, _ANNEES , _JOURS, _HEURES, _MINUTES, _SECONDES );
                                                                                                                    AFFICHER+=10;
                                                                                                                }
                                                                                                            }
     
    }
     
    void ECRIRE( FILE *FICHIER, int VALEUR )
    {             
        if ( VALEUR<=9 )
            fprintf(FICHIER, "%d", VALEUR);
        else
     
        if ( VALEUR>9 )            
        {
     
                              if ( VALEUR==10 )
                              {
                                                fprintf(FICHIER,"A");
                              }
     
                              if ( VALEUR==11 )
                              {
                                                fprintf(FICHIER,"B");
                              }
     
                              if ( VALEUR==12 )
                              {
                                                fprintf(FICHIER,"C");
                              }
     
                              if ( VALEUR==13 )
                              {
                                                fprintf(FICHIER,"D");
                              }
     
                              if ( VALEUR==14 )
                              {
                                                fprintf(FICHIER,"E");
                              }
     
                              if ( VALEUR==15 )
                                       fprintf(FICHIER,"F");
     
            }
    }
     
     
    void FORMAT_SECONDE(double TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE)     
    {
         double K_YEAR   = 31536000;
         double K_DAY    = 86400   ;
         double K_HOUR   = 3600    ;
         double K_MINUTE = 60      ;
     
         *YEAR    = floor(  TIME                                                 /K_YEAR             );
         *DAY     = floor( (TIME - (*YEAR)*K_YEAR                                )/K_DAY             ); 
         *HOUR    = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY                 )/K_HOUR            );
         *MINUTE  = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR)/K_MINUTE          );
         *SECONDE =         TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR - (*MINUTE)*K_MINUTE;
    }

  7. #7
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    je ne peux rien dire, je sais que je suis en tort.

  8. #8
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 088
    Par défaut
    Non, ne le prend pas comme ca.

    On est ici pour t'aider, pas pour te rabaisser.
    Par contre, tu t'y retrouve toi ? Dans ton code, ca à été une galere monstrueuse pour moi ...

    Pour le coup de tester les pointeur, je me suis mal exprimé, désolé. Mes test etait sous entendu en cas de malloc.

    Je suis en train de simplifier petit a petit, mais je voudrais que tu confirme que le code que j'ai poster correspond bien a celui que tu as poster.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    void ECRIRE(FILE *FICHIER, int VALEUR)
    {
        if (FICHIER != NULL)
        {
            if (VALEUR < 10)
                fprintf(FICHIER, "%d", VALEUR);
            else
                switch (VALEUR) 
                {
                    case 10 : fprintf(FICHIER,"A"); break;
                    case 11 : fprintf(FICHIER,"B"); break;
                    case 12 : fprintf(FICHIER,"C"); break;
                    case 13 : fprintf(FICHIER,"D"); break;
                    case 14 : fprintf(FICHIER,"E"); break;
                    case 15 : fprintf(FICHIER,"F"); break;
     
                    default : break;
                }
        }
        else
        {
            printf ("Le pointeur vers FICHIER passer en argument a la fonction ECRIRE vaut NULL.\n");
            /* Pas obliger de quitter brutalement, a toi de voir */
            exit(EXIT_FAILURE);
        }
     
    }
    Voici une simplification de ECRIRE

  9. #9
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 088
    Par défaut
    Attention malheureux !

    Cette ligne trouvé dans le bloc d'instruction de la derniere boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES=malloc(sizeof(double));
    Elle ne fait un malloc que sur seconde !
    Les autre pointe vers tout est n'importe quoi !


    EDIT :

    Il faut verifier le retour de fopen, meme si tu fais du mode 'w'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        FILE *F0=fopen("WEP.txt","w");
        if (F0 == NULL)
        {
            printf("Echec du fopen sur file F0 (WEP.txt) : %s.\n", strerror(errno));
            exit(EXIT_FAILURE);
        }



    Je viens de capter un truc, si tu fais du malloc, tu dois avoir du free quelque part qui lui est associer. En l'occurence, il n'y a pas de free, et l'allocatioon se trouve au beau milieu de tes boucle for (26 boucle for imbrique qui vont jusqu'a 16, je te laisse compter combien de fois tu va passer dedans ?).

    Tu va avoir une fuite de memoire MONSTRUEUSE et ton pc (a moins d'avoir 100 TeraOctet de ram) va completement saturer dans les 20 seconde.

  10. #10
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    J'étais persuadé d'avoir vu ceci en cours quelque part, mais à priori ce n'est rien de plus qu'une des mes inventions.

    Ok pour le contrôle d'erreur du fichier, je rajoute ça ainsi que les allocations mémoires.

    En attendant voici le code avec les commentaires si cela peut aider à y voir plus clair.

    Les tests sur les pointeurs dans la fonction FORMAT génèrent des erreurs dans le if pour l'opérande == ?!

    Merci pour les free, élémentaire dirait Sherlock.

    On ne devrait plus être loin du code finale avec ça. Ceci compile et affiche correctement les données attendues. YATTA !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
     
    void FORMAT_SECONDE(double CURRENT_TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE);
    void ECRIRE( FILE *FICHIER, int VALEUR );
     
    int main()
    {
     
        // Paramètres affichage console
        system("title GENERATEUR CLES WEP");
        system("COLOR 09");
        system("MODE CON COLS=60 LINES=19");
     
        // Variables representants chacun des 26 digits de la clef WEP codé en Hexadecimal, donc DXX prendra ses valeurs dans 0->15
        int D01, D02, D03, D04, D05, D06, D07, D08 , D09, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26;
     
        // Fichier de stockage des clés
        FILE *F0=fopen("WEP.txt","w");
        if (F0 == NULL)
        {
            printf("Echec du fopen sur file F0 (WEP.txt) : %s.\n", strerror(errno));
            exit(EXIT_FAILURE);
        }
     
     
        // On récupère la valeur de GetTickCount pour avoir la référence à 0 au commencement du bouclage
        double INIT_TIME=GetTickCount();
     
        // On initialise le compteur de boucles à 0. Il servira à faire apparaîte des données sur l'avancement de la génération
        double COMPTEUR_BOUCLE=0;
     
        // Taille initiale du fichier de stockage des clés
        double TAILLE=0;
     
        // Valeur initiale de la variable de contrôle pour l'affichage des données résultantes de la générations
        double AFFICHER=0;
     
        // Nombres de clés WEP totales /1000000 ( petit artifice pour stocker la variable alors trop grande )
        double K=20282409603651670423947251.286016;
     
        // Début de la génération
        for ( D01=0 ; D01<16 ; D01++ )
            {
                     for ( D02=0 ; D02<16 ; D02++ )
                         {
                                  for ( D03=0 ; D03<16 ; D03++ )
                                      {
                                               for ( D04=0 ; D04<16 ; D04++ )
                                                   {
                                                               for ( D05=0 ; D05<16 ; D05++ )
                                                                   {
                                                                           for ( D06=0 ; D06<16 ; D06++ )
                                                                               {
                                                                                       for ( D07=0 ; D07<16 ; D07++ )
                                                                                           {
                                                                                                   for ( D08=0 ; D08<16 ; D08++ )
                                                                                                       {
                                                                                                               for ( D09=0 ; D09<16 ; D09++ )
                                                                                                                   {
                                                                                                                           for ( D10=0 ; D10<16 ; D10++ )
                                                                                                                               {
                                                                                                                                       for ( D11=0 ; D11<16 ; D11++ )
                                                                                                                                           {
                                                                                                                                                   for ( D12=0 ; D12<16 ; D12++ )
                                                                                                                                                       {
                                                                                                                                                               for ( D13=0 ; D13<16 ; D13++ )
                                                                                                                                                                   {
                                                                                                                                                                           for ( D14=0 ; D14<16 ; D14++ )
                                                                                                                                                                               {
                                                                                                                                                                                       for ( D15=0 ; D15<16 ; D15++ )
                                                                                                                                                                                           {
                                                                                                                                                                                                   for ( D16=0 ; D16<16 ; D16++ )
                                                                                                                                                                                                       {
                                                                                                                                                                                                               for ( D17=0 ; D17<16 ; D17++ )
                                                                                                                                                                                                                   {
                                                                                                                                                                                                                           for ( D18=0 ; D18<16 ; D18++ )
                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                       for ( D19=0 ; D19<16 ; D19++ )
                                                                                                                                                                                                                                           {
                                                                                                                                                                                                                                                   for ( D20=0 ; D20<16 ; D20++ )
                                                                                                                                                                                                                                                       {
                                                                                                                                                                                                                                                               for ( D21=0 ; D21<16 ; D21++ )
                                                                                                                                                                                                                                                                   {
                                                                                                                                                                                                                                                                           for ( D22=0 ; D22<16 ; D22++ )
                                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                                       for ( D23=0 ; D23<16 ; D23++ )
                                                                                                                                                                                                                                                                                           {
                                                                                                                                                                                                                                                                                                   for ( D24=0 ; D24<16 ; D24++ )
                                                                                                                                                                                                                                                                                                       {
                                                                                                                                                                                                                                                                                                               for ( D25=0 ; D25<16 ; D25++ )
                                                                                                                                                                                                                                                                                                                   {
                                                                                                                                                                                                                                                                                                                           for ( D26=0 ; D26<16 ; D26++ )
                                                                                                                                                                                                                                                                                                                               {
     
                                                                                                                                                                                                                                                                                                                                       // Fonction qui envoit la valeur du digit en décimale, donne sa correspondance hexadécimale
                                                                                                                                                                                                                                                                                                                                       // et la sauvegarde dans le fichier de stockage
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D01);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D02);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D03);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D04);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D05);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D06);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D07);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D08);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D09);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D10);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D11);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D12);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D13);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D14);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D15);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D16);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D17);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D18);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D19);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D20);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D21);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D22);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D23);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D24);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D25);
                                                                                                                                                                                                                                                                                                                                       ECRIRE(F0, D26);
     
                                                                                                                                                                                                                                                                                                                                       // Une clé pèse 26 octets, à chaque tour de boucle on incrémente la taille de la taille d'une clé
                                                                                                                                                                                                                                                                                                                                       TAILLE+=26;
     
                                                                                                                                                                                                                                                                                                                                       // On convertit la taille en octets en Go ou Mo
                                                                                                                                                                                                                                                                                                                                       double TAILLE_GO=TAILLE/(1024*1024);
     
                                                                                                                                                                                                                                                                                                                                       // Variable qui compte le nombre de tours de boucles
                                                                                                                                                                                                                                                                                                                                       COMPTEUR_BOUCLE++;
     
                                                                                                                                                                                                                                                                                                                                       // Variable qui compte le temps écoulé depuis le début du programme en seconde
                                                                                                                                                                                                                                                                                                                                       double CURRENT_TIME = (GetTickCount()-INIT_TIME)/1000;
     
                                                                                                                                                                                                                                                                                                                                       // Variable qui compte la vitesse de calcul du processeur 
                                                                                                                                                                                                                                                                                                                                       double CALCUL_SEC   = COMPTEUR_BOUCLE/CURRENT_TIME;
     
                                                                                                                                                                                                                                                                                                                                       // Variable qui compte le temps de calcul restant en seconde
                                                                                                                                                                                                                                                                                                                                       double TIME_LEFT=(K-COMPTEUR_BOUCLE)/CALCUL_SEC;
     
                                                                                                                                                                                                                                                                                                                                       double *ANNEES   = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *JOURS    = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *HEURES   = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *MINUTES  = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *SECONDES = malloc(sizeof(double));
     
                                                                                                                                                                                                                                                                                                                                       // Fonction qui formate les secondes du temps écoulé en année, jours...
                                                                                                                                                                                                                                                                                                                                       FORMAT_SECONDE(CURRENT_TIME, ANNEES, JOURS, HEURES, MINUTES, SECONDES);
     
                                                                                                                                                                                                                                                                                                                                       double *TL_ANNEES   = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *TL_JOURS    = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *TL_HEURES   = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *TL_MINUTES  = malloc(sizeof(double));
                                                                                                                                                                                                                                                                                                                                       double *TL_SECONDES = malloc(sizeof(double));
     
                                                                                                                                                                                                                                                                                                                                       // Fonction qui formate le temps de calcul restant en année, jours...
                                                                                                                                                                                                                                                                                                                                       FORMAT_SECONDE(TIME_LEFT, TL_ANNEES, TL_JOURS, TL_HEURES, TL_MINUTES, TL_SECONDES);
     
                                                                                                                                                                                                                                                                                                                                       // Variable qui compte la progression totale du calcul
                                                                                                                                                                                                                                                                                                                                       double PROGRESSION=(COMPTEUR_BOUCLE)/(10000*K);
     
                                                                                                                                                                                                                                                                                                                                       // Si la taille actuelle du fichier qui stock les clés est superieure à la taille définit pour afficher 
                                                                                                                                                                                                                                                                                                                                       //l'état d'avancement du calcul, alors on affiche sinon on attend la nouvelle valeur d'affichage
                                                                                                                                                                                                                                                                                                                                       if ( TAILLE_GO>AFFICHER )
                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                            printf("\n+ PROGRESSION         : %.30f %% \n\n+ TAILLE              : %.0f Mo \n\n+ CALCUL/S            : %.0f \n\n+ TEMPS DE TRAITEMENT : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n\n+ TEMPS RESTANT       : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n-----------------------------------------------------------", PROGRESSION, TAILLE_GO, CALCUL_SEC, *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES, *TL_ANNEES , *TL_JOURS, *TL_HEURES, *TL_MINUTES, *TL_SECONDES );
                                                                                                                                                                                                                                                                                                                                            AFFICHER+=10;
                                                                                                                                                                                                                                                                                                                                          }
     
                                                                                                                                                                                                                                                                                                                                       // On libère la mémoire allouée aussi tôt le calcul fait pour ne pas saturer la ram
                                                                                                                                                                                                                                                                                                                                       free(ANNEES     );
                                                                                                                                                                                                                                                                                                                                       free(JOURS      );
                                                                                                                                                                                                                                                                                                                                       free(HEURES     );
                                                                                                                                                                                                                                                                                                                                       free(MINUTES    );
                                                                                                                                                                                                                                                                                                                                       free(SECONDES   );
                                                                                                                                                                                                                                                                                                                                       free(TL_ANNEES  );
                                                                                                                                                                                                                                                                                                                                       free(TL_JOURS   );
                                                                                                                                                                                                                                                                                                                                       free(TL_HEURES  );
                                                                                                                                                                                                                                                                                                                                       free(TL_MINUTES );
                                                                                                                                                                                                                                                                                                                                       free(TL_SECONDES);
     
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
                                                                                                                                                                                                                                                                                                                               }
     
                                                                                                                                                                                                                                                                                                                               fclose(F0);
     
                                                                                                                                                                                                                                                                                                                               }
    void ECRIRE( FILE *FICHIER, int VALEUR )
    {             
     
         // Si la valeur du digit est inférieure à 9 sa correspondance hexadecimale de change pas
         if ( VALEUR<=9 )
            {
                  fprintf(FICHIER, "%d", VALEUR);
            }                          
     
         // Si la valeur du digit est supérieure à 9, on cherche la lettre correspandante.  
         if ( VALEUR>9 )            
            {
     
                              if ( VALEUR==10 )
                              {
                                                fprintf(FICHIER,"A");
                              }
     
                              if ( VALEUR==11 )
                              {
                                                fprintf(FICHIER,"B");
                              }
     
                              if ( VALEUR==12 )
                              {
                                                fprintf(FICHIER,"C");
                              }
     
                              if ( VALEUR==13 )
                              {
                                                fprintf(FICHIER,"D");
                              }
     
                              if ( VALEUR==14 )
                              {
                                                fprintf(FICHIER,"E");
                              }
     
                              if ( VALEUR==15 )
                              {
                                                fprintf(FICHIER,"F");
                              }
     
            }
    }
     
     
    void FORMAT_SECONDE(double TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE)     
    {
         double K_YEAR   = 31536000;
         double K_DAY    = 86400   ;
         double K_HOUR   = 3600    ;
         double K_MINUTE = 60      ;
     
     
         *YEAR    = floor(  TIME/K_YEAR                                                              );
         *DAY     = floor( (TIME - (*YEAR)*K_YEAR                                )/K_DAY             ); 
         *HOUR    = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY                 )/K_HOUR            );
         *MINUTE  = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR)/K_MINUTE          );
         *SECONDE =         TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR - (*MINUTE)*K_MINUTE;
    }

  11. #11
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut


    Voici le résultat ! Merci une fois de plus pour votre aide inestimable.
    Cependant je suis un peu déçu car j'ai perdu en vitesse de calcul en faisant du formatage des seconde au format année, jours... une fonction. Avant, en dur dans la boucle, je montais à 200k calculs/s.

    Pour la forme auriez vous des conseils pour optimiser tout cela car de toute façon à moins de posséder environ 500 000 millions de millions de millions de Go, et quelque millions de millions d'années devant moi, ce programme n'ira jamais jusqu'au bout. A quand les ordinateurs quantiques ? xD peut être que là ça irait mieux mais il manquerait toujours le support de stockage !

    Merci

  12. #12
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    Ok, est ce que ce code correspond a celui que tu as poster ? Je pense nottament a ce qui est compris entre les parenthese du derniere for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
     
    void FORMAT_SECONDE(double CURRENT_TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE);
    void ECRIRE( FILE *FICHIER, int VALEUR );
     
    int main()
    {
     
        system("title GENERATEUR CLES WEP");
        system("COLOR 09");
        system("MODE CON COLS=60 LINES=19");
        int D01, D02, D03, D04, D05, D06, D07, D08 , D09, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26;
     
        FILE *F0=fopen("WEP.txt","w");
        double INIT_TIME=GetTickCount();
        double COMPTEUR_BOUCLE=0;
        double TAILLE=0;
        double AFFICHER=0;
        double K=20282409603651670423947251.286016;
     
        for ( D01=0 ; D01<16 ; D01++ )
            for ( D02=0 ; D02<16 ; D02++ )
                for ( D03=0 ; D03<16 ; D03++ )
                    for ( D04=0 ; D04<16 ; D04++ )
                        for ( D05=0 ; D05<16 ; D05++ )
                            for ( D06=0 ; D06<16 ; D06++ )
                                for ( D07=0 ; D07<16 ; D07++ )
                                    for ( D08=0 ; D08<16 ; D08++ )
                                        for ( D09=0 ; D09<16 ; D09++ )
                                            for ( D10=0 ; D10<16 ; D10++ )
                                                for ( D11=0 ; D11<16 ; D11++ )
                                                    for ( D12=0 ; D12<16 ; D12++ )
                                                        for ( D13=0 ; D13<16 ; D13++ )
                                                            for ( D14=0 ; D14<16 ; D14++ )
                                                                for ( D15=0 ; D15<16 ; D15++ )
                                                                    for ( D16=0 ; D16<16 ; D16++ )
                                                                        for ( D17=0 ; D17<16 ; D17++ )
                                                                            for ( D18=0 ; D18<16 ; D18++ )
                                                                                for ( D19=0 ; D19<16 ; D19++ )
                                                                                    for ( D20=0 ; D20<16 ; D20++ )
                                                                                        for ( D21=0 ; D21<16 ; D21++ )
                                                                                            for ( D22=0 ; D22<16 ; D22++ )
                                                                                                for ( D23=0 ; D23<16 ; D23++ )
                                                                                                    for ( D24=0 ; D24<16 ; D24++ )
                                                                                                        for ( D25=0 ; D25<16 ; D25++ )
                                                                                                            for ( D26=0 ; D26<16 ; D26++ )
                                                                                                            {
                                                                                                                ECRIRE(F0, D01);
                                                                                                                ECRIRE(F0, D02);
                                                                                                                ECRIRE(F0, D03);
                                                                                                                ECRIRE(F0, D04);
                                                                                                                ECRIRE(F0, D05);
                                                                                                                ECRIRE(F0, D06);
                                                                                                                ECRIRE(F0, D07);
                                                                                                                ECRIRE(F0, D08);
                                                                                                                ECRIRE(F0, D09);
                                                                                                                ECRIRE(F0, D10);
                                                                                                                ECRIRE(F0, D11);
                                                                                                                ECRIRE(F0, D12);
                                                                                                                ECRIRE(F0, D13);
                                                                                                                ECRIRE(F0, D14);
                                                                                                                ECRIRE(F0, D15);
                                                                                                                ECRIRE(F0, D16);
                                                                                                                ECRIRE(F0, D17);
                                                                                                                ECRIRE(F0, D18);
                                                                                                                ECRIRE(F0, D19);
                                                                                                                ECRIRE(F0, D20);
                                                                                                                ECRIRE(F0, D21);
                                                                                                                ECRIRE(F0, D22);
                                                                                                                ECRIRE(F0, D23);
                                                                                                                ECRIRE(F0, D24);
                                                                                                                ECRIRE(F0, D25);
                                                                                                                ECRIRE(F0, D26);
     
                                                                                                                TAILLE+=26;
                                                                                                                double TAILLE_GO=TAILLE/(1024*1024);
     
                                                                                                                COMPTEUR_BOUCLE++;
                                                                                                                double CURRENT_TIME = (GetTickCount()-INIT_TIME)/1000;
                                                                                                                double CALCUL_SEC   = COMPTEUR_BOUCLE/CURRENT_TIME;
     
     
                                                                                                                double *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES=malloc(sizeof(double));
                                                                                                                double Ka=31536000;
                                                                                                                double Kj=86400;
                                                                                                                double Kh=3600;
                                                                                                                double Km=60;
                                                                                                                FORMAT_SECONDE(CURRENT_TIME, ANNEES, JOURS, HEURES, MINUTES, SECONDES);
                                                                                                                //ANNEES   = floor(  CURRENT_TIME/Ka );
                                                                                                                //JOURS    = floor( (CURRENT_TIME - ANNEES*Ka)/Kj ); 
                                                                                                                //HEURES   = floor( (CURRENT_TIME - ANNEES*Ka - JOURS*Kj)/Kh );
                                                                                                                //MINUTES  = floor( (CURRENT_TIME - ANNEES*Ka - JOURS*Kj - HEURES*Kh )/Km );
                                                                                                                //SECONDES = CURRENT_TIME - ANNEES*Ka - JOURS*Kj - HEURES*Kh - MINUTES*Km;
     
                                                                                                                double TIME_LEFT=(K-COMPTEUR_BOUCLE)/CALCUL_SEC;
                                                                                                                double _ANNEES, _JOURS, _HEURES, _MINUTES, _SECONDES;
     
                                                                                                                _ANNEES   = floor(  TIME_LEFT/Ka );
                                                                                                                _JOURS    = floor( (TIME_LEFT - _ANNEES*Ka)/Kj ); 
                                                                                                                _HEURES   = floor( (TIME_LEFT - _ANNEES*Ka - _JOURS*Kj)/Kh );
                                                                                                                _MINUTES  = floor( (TIME_LEFT - _ANNEES*Ka - _JOURS*Kj - _HEURES*Kh )/Km );
                                                                                                                _SECONDES = TIME_LEFT - _ANNEES*Ka - _JOURS*Kj - _HEURES*Kh - _MINUTES*Km;
     
     
     
     
     
                                                                                                                double PROGRESSION=(COMPTEUR_BOUCLE)/(10000*K);
     
                                                                                                                if ( TAILLE_GO>AFFICHER )
                                                                                                                {
                                                                                                                    printf("\n+ PROGRESSION         : %.30f %% \n\n+ TAILLE              : %.0f Mo \n\n+ CALCUL/S            : %.0f \n\n+ TEMPS DE TRAITEMENT : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n\n+ TEMPS RESTANT       : %.0f ANNEE \n                        %.0f JOUR \n                        %.0f HEURE \n                        %.0f MINUTE \n                        %.0f SECONDE \n-----------------------------------------------------------", PROGRESSION, TAILLE_GO, CALCUL_SEC, *ANNEES, *JOURS, *HEURES, *MINUTES, *SECONDES, _ANNEES , _JOURS, _HEURES, _MINUTES, _SECONDES );
                                                                                                                    AFFICHER+=10;
                                                                                                                }
                                                                                                            }
     
    }
     
    void ECRIRE( FILE *FICHIER, int VALEUR )
    {             
        if ( VALEUR<=9 )
            fprintf(FICHIER, "%d", VALEUR);
        else
     
        if ( VALEUR>9 )            
        {
     
                              if ( VALEUR==10 )
                              {
                                                fprintf(FICHIER,"A");
                              }
     
                              if ( VALEUR==11 )
                              {
                                                fprintf(FICHIER,"B");
                              }
     
                              if ( VALEUR==12 )
                              {
                                                fprintf(FICHIER,"C");
                              }
     
                              if ( VALEUR==13 )
                              {
                                                fprintf(FICHIER,"D");
                              }
     
                              if ( VALEUR==14 )
                              {
                                                fprintf(FICHIER,"E");
                              }
     
                              if ( VALEUR==15 )
                                       fprintf(FICHIER,"F");
     
            }
    }
     
     
    void FORMAT_SECONDE(double TIME, double *YEAR, double *DAY, double *HOUR, double *MINUTE, double *SECONDE)     
    {
         double K_YEAR   = 31536000;
         double K_DAY    = 86400   ;
         double K_HOUR   = 3600    ;
         double K_MINUTE = 60      ;
     
         *YEAR    = floor(  TIME                                                 /K_YEAR             );
         *DAY     = floor( (TIME - (*YEAR)*K_YEAR                                )/K_DAY             ); 
         *HOUR    = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY                 )/K_HOUR            );
         *MINUTE  = floor( (TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR)/K_MINUTE          );
         *SECONDE =         TIME - (*YEAR)*K_YEAR - (*DAY)*K_DAY - (*HOUR)*K_HOUR - (*MINUTE)*K_MINUTE;
    }
    Oui pardon et merci, je n'avais pas vu ce message ! je vais maintenant mettre votre indentation à la place de la mienne pour le rendre plus propre.
    Je ne savais pas que l'on pouvait omettre les accolades dans les imbrications hormis pour la dernière.

    Je vais ensuite regarder pour la librairie GMP ce que je trouve et comprends.
    Merci

  13. #13
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 088
    Par défaut
    Si nous faisons un peu de calcul ?

    En prenant le code minimum :

    Tu fais 26 boucle for imbrique, chacune allant jusqu'a 16.

    Il y aura donc 16^26 passage en tout.

    Tu vas donc generer 20282409600000000000000000000000 lignes.

    sachant que sur chaque ligne, il ya a 16 caractere, tu vas donc avoir

    16*16^26 caractere soit

    324518553700000000000000000000000 caractere. Sachant qu'un caractere pese un octet, tu aura donc

    324518553700000000000000000000000 octet

    Sachant que 1 Giga-octet = 1073741824 Octet

    tu aura donc

    302231454900000000000000 Giga octet a stocker.


    Je pense que tu l'as comprit, tout programme fonctionne mais voila, c'est pas non plus la joie.

    De tout maniere, imbriqué les boucle augmente exponentiellement le temps de traitement, surtout si elle ont une grande plage de valeur.

    A mon humble avis, tu peux laisser tomber.

  14. #14
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 088
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message
    Je ne savais pas que l'on pouvait omettre les accolades dans les imbrications hormis pour la dernière.
    Attention, la suppression d'accolade depend d'une condition :

    Il faut que dans la structure de controle (le for en l'occurence), il n'y ai qu'une instruction ou qu'une autre structure de controle.

    En l'occurence, ton premier for ne contenait qu'un for, donc parenthese facultative. Et ainsi de suite jusqu'a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        for ( D26=0 ; D26<16 ; D26++ )
        {
            ECRIRE(F0, D01);
            ECRIRE(F0, D02);
            ...
        }
    Où la, il y a deux instruction.

  15. #15
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Oui j'avais calculé la taille totale sachant qu'une clé prend

    26octets*16^26 clés/(1024^3) Go ce qui fait beaucoup lol, je savais que le temps et l'espace de stockage me manquerait. Je voulais juste faire le programme comme ça pour m'occuper lol.

    En tout cas une fois de plus je te remercie de ton aide. @+ pour d'autres problèmes ennuyeux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/08/2009, 16h32
  2. Réponses: 10
    Dernier message: 03/04/2009, 13h09
  3. Erreur sur l'affection d'un pointeur
    Par digital prophecy dans le forum C
    Réponses: 4
    Dernier message: 25/11/2005, 09h07
  4. erreur C2664 : pointeur sur fonction
    Par hiko-seijuro dans le forum C++
    Réponses: 2
    Dernier message: 26/07/2005, 14h50
  5. Erreur sur le TNSListener après installation de 9iAS
    Par Patmane dans le forum Installation
    Réponses: 4
    Dernier message: 04/02/2004, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo