Bonsoir,

Je souhaite décomposer un entier dans un tableau. Par exemple j'envoie 3896 à une fonction et elle me retourne le tableau avec
tableau[0]=6
tableau[1]=9
tableau[2]=8
tableau[3]=3

Le code ne compile pas. Il me dit qu'il y a une erreur à la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Tableau[i]=int(Valeur/(Puissance(10, Nombre_De_Decimale));
Il me semble qu'on ne peut pas faire d'allocation dans une fonction ? Ce pourquoi j'ai une erreur.

Donc ma question est, comment passer un paramètre un tableau dont on ne connait pas encore la taille si jamais l'erreur provient bien de là ?

Merci d'avance.

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
#include<stdio.h>
#include<stdlib.h>
//#include "./../../bibliotheque.h"
 
void Entier_Dans_Tableau( int Valeur, int *Tableau );
int Puissance( int Digit, int Exposant );
 
int main()
{
 
     int Valeur=2386;
     int *tableau;
     Entier_Dans_Tableau( Valeur, tableau );
 
     int i;
     for ( i=0 ; i<4 ; i++ )
     {
         printf( "Tableau[%d] : %d", i, tableau[i] );
     }
 
}
 
int Puissance( int Digit, int Exposant )
{
    int i=0;
    int Resultat=1;      
 
    if ( Exposant != 0 )
       {
                  while ( i != Exposant )
                        {
                          Resultat=Resultat*Digit;
                          i++;
                        }
       }
 
    if ( Exposant==0 )
       {
                     Resultat=1;
       }  
 
    return Resultat;
}  
 
void Entier_Dans_Tableau( int Valeur, int *Tableau )
{
    int N=1;
    int A=0;
    int Nombre_De_Decimale=-1;
    while ( A>9 )
          {
                      A=Valeur/N;
                      N=10*N;
                      Nombre_De_Decimale++;
          }
 
 
    Tableau=malloc(Nombre_De_Decimale*sizeof(int));
    int i;
    for ( i=(Nombre_De_Decimale-1) ; i>=0 ; i-- )
        {
              Tableau[i]=int(Valeur/(Puissance(10, Nombre_De_Decimale));    
              Valeur=Valeur-Tableau[i]*Puissance(10, Nombre_De_Decimale); 
        }
}