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

Langage C++ Discussion :

Taille tableaux


Sujet :

Langage C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Taille tableaux
    Bonjour,
    Cela fait des années que je n'ai pas codé avec C++. J'ai implémenté un algorithme simple, le code compile, l'exécutable est parfait, sauf que ça crash pour des performances faibles ( tableaux 5000*3*2 par exemple). pour être pratique, vous trouver ci-après le main du code si vous avez des propositions, sachant que je ne sais plus comment manipuler des vecteurs std::...Merci infiniment par 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
    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
     
    int main()
    {
    double Data1[k][n][d];
    double Data2[k][n][d];
    double x[d];
    double sum=0;
    //double ksi[k+1][d];
    double k_nouveau[k+1][d];
    double x_nouveau[k+1][d];
    //double valeur[d];
    double gamma[k];
    double beta[k];
    double ck[k];
    double grad_discret[d];
    double grad_W[d];
    int deb=0;
    double moyenne[d];
     double sumgamma=0;
     //initialisation generateur pseudo-aléatoire :
    srand(time(0));
     
     for(int i=0;i<d;i++)
       {
         x[i]=rand()/(double)RAND_MAX;
           sum=sum+x[i];
       }
     
     for(int i=0;i<d;i++)
       {
         x[i]=x[i]*u/sum;
         //  cout << "init x "<< x[i] <<endl;
       }
     // cout << endl;
     
     
      // on lit les données dans le fichier entree.txt qui contient
     ifstream fichier1("C:/simple/prog/data1.txt", ios::in);
    ifstream fichier2("C:/simple/prog/data2.txt", ios::in);
     ifstream fichier3("C:/simple/prog/param_algo.txt",ios::in); 
     
    fichier1.precision(15); 
    fichier2.precision(15); 
    fichier3.precision(15); 
     
            if(fichier1&&fichier2&&fichier3)
            {
    	  for (int j=0;j<d;j++)
    	    for (int i=0; i<n; i++)
    	      for (int p=0; p<k; p++)
    		{
    		  fichier1 >> Data1[p][i][j];
    		  fichier2 >> Data2[p][i][j];
    		}
     
    	  for (int p=0;p<k;p++)  fichier3 >> gamma[p] >> beta[p] >> ck[p];
                    fichier1.close();
    		fichier2.close();
    		fichier3.close();
            }
            else
                    cerr << "Impossible d'ouvrir les fichiers !" << endl;
     
    	for (int j=0;j<d;j++)
    	  { grad_discret[j]=0;
    	    grad_W[j]=0;
    	    //	    valeur[j]=0;
    	    k_nouveau[0][j]=0;
    	    x_nouveau[0][j]=x[j];
    	    //	    ksi[0][j]=0;
    	    moyenne[j]=0;
    	  }
    	deb=int(k/2);
    	//	cout << " debut "<<deb<<endl;
     
    	for (int p=1;p<(k+1);p++)
    	  {
    	    // cout <<"p="<<p<<" "<<gamma[p-1]<<" "<<beta[p-1]<<" "<<ck[p-1]<<" ";
    	    H(grad_discret,x_nouveau[p-1], Data1[p-1], Data2[p-1],ck[p-1]);
     
    	      for (int j=0;j<d;j++)
    		{//cout<<" Data1 et Data2 "<<setprecision(5)<<Data1[p-1][0][j]<<" "<<setprecision(5)<<Data2[p-1][0][j];
    		k_nouveau[p][j]=k_nouveau[p-1][j]-gamma[p-1]*grad_discret[j];
        	      }
    	      //  cout<<endl;
    	    W(grad_W,k_nouveau[p], beta[p-1]);
    	    for (int j=0;j<d;j++)
    	      {
    		x_nouveau[p][j]=grad_W[j];
    		//	cout << "j="<<j<<" grad_discret " <<grad_discret[j]<<" grad_W "<<grad_W[j]<<" x " << x_nouveau[p][j] << " ksi " << k_nouveau[p][j]<<endl;
    		//if (p>deb) 
    		if(p>deb)
    		  {
    		    moyenne[j]=moyenne[j]+gamma[p-1]*x_nouveau[p-1][j];
    		    if (j==0) sumgamma=sumgamma+gamma[p-1];
    		  }
    	      }
     
    	  }
     for (int i=0;i<d;i++) {
       moyenne[i]=moyenne[i]/sumgamma;
       // cout << "i="<< i <<" "<<moyenne[i]<<" ";
     }
     // cout << endl;
    ofstream fichier4("C:/simple/prog/resultats.txt", ios::out);  // Ecriture résultats
    ofstream fichier5("C:/simple/prog/details.txt",ios::out);
    fichier4.precision(12); 
    fichier5.precision(12); 
     
            if(fichier4&&fichier5)
    	  { //cout<<"Ecriture des resultats";
    	  for (int i=0; i<d; i++) {
    	    fichier4 << moyenne[i] << " ";
    	    for (int p=0; p<(k+1);p++)
    	      {
    		fichier5<<x_nouveau[p][i]<<" ";
    	      }
    	    fichier5<<endl;
    	    fichier4<<endl;
    	    	  }
    	  }
    	else  cout << "Erreur d'ouverture du fichier resultats !" << endl;
    	fichier4.close();
    	return(0);
    }

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Ça crash donc à cause d'un stack overflow (trop de donnée allouée sur la pile) ?

    Tu peux utiliser des std::vector de cette manière :

    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
    #include <vector>
     
    int main()
    {
      typedef std::vector<double> array1D;
      typedef std::vector<array1D> array2D;
      typedef std::vector<array2D> array3D;
     
      // Déclaration d'un tableau 3D.
      array3D data1;
      data1.resize(k);
      for(std::size_t i=0; i < data1.size(); ++i)
      {
        data1[i].resize(n);
        for(std::size_t j=0; j < data1[i].size(); ++j)
          data1[i][j].resize(d);
      }
     
      // Utilisation de data1 comme avec des tableaux classiques.
      // ...
     
      return 0;
    }
    Par contre c'est loin d'être optimal (même si ça ne fera plus de stack overflow).

    La première amélioration c'est d'utiliser des tableaux 3D aplatis sur 1 dimension où tu recalcules l'indice 1D à partir de celui 3D. M'enfin, si tu as vraiment besoin de C++ et que tu ne sais même plus utiliser la STL je te recommande un bon livre pour débuter rapidement, il s'agit de Accelerated C++. Sinon tu peux toujours trouver des ressources sur ce site.

    Et finalement, je te conseille d'utiliser la bibliothèque Boost.uBlas si c'est pour un projet sérieux. Par contre c'est impossible à aborder sans des bases en C++.

    Bon courage

    PS : Va supprimer l'autre post que t'as été mettre dans la section Outils pour C & C++

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut stack overflow
    Tout d'abord, je te remercie pour ta réponse!
    Oui il s'agit bien d'un stack overflow, le code n'est pas du tout optimisé, le but est d'avoir quelques exemples numériques d'un algorithme mathémtiques. Je vais essayé ce que tu m'as proposé ce soir meme! je devient débutant ( après 6ans de distance du code). Je te remercie aussi pour le Livre, je pense que j'en ai besoin !

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Résultat
    Bonsoir, j'utilise Visuel studio express 2012, j'ai effectué pour commencer ce que tu m'as proposé à la lettre, sans rien changer après dans le code, mais je pense que le lecture ne ressemble pas à celle des tableaux, erreur de compilation liée à l'utilisation des vectors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     H(grad_discret,x_nouveau[p-1], Data1[p-1], Data2[p-1],ck[p-1]);
    Message Erreur: Impossible de convertir le paramètre 3 de std::vector<_Ty> en double [][3] (mon d=3, n=1, k=30000)
    C'est un mauvais sentiment quand on découvre qu'on est nul

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut std::vector<double>
    J'ai changé les dclarations double tableaux , en std::vector<double> dans toutes les foonctions, la nouvelle erreur eest liée à l'utilisation de la variable dans les autres fonctions, voila le code de la petite partie avant le main! Je te remercie infiniment par 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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
     
    // #include <GL/glut.h>
    #include <iostream>  
    #include <cstdlib>
    #include <fstream>
    #include <stdlib.h>
    #include <map>
    #include <ctime>
    #include <iomanip>
    //#include "constantes.h"
     
    using namespace std;
     
     
     
    double g(double x)
    {
      x=-x;
      return(x);
    }
     
    double U(double z[],std::vector<double> y[n][d]) // Fonction Calcul de I
    {
     
     
      double r[n][d];
      double sr[n];
      bool psr[n];
      bool pr[n][d];
      double interm[n][d];
      double res=0;
     
      for (int i=0; i<n; i++)
        {
        sr[i]=0;
        for (int j=0; j<d;j++)
          { 
    	r[i][j]=y[i][j]+z[j];
    	pr[i][j]=(r[i][j]<0);
    	//	cout <<" j="<< j <<" y[i][j] "<< y[i][j]<<" z[j] "<<z[j]<<" r[i][j] "<< r[i][j] ;
    	sr[i]=sr[i]+r[i][j];
          }
        //cout <<"sr= "<<sr[i]<< " ";
        psr[i]=(sr[i]>0);
        for (int j=0; j<d;j++)
          {
    	if (pr[i][j]&&psr[i])	interm[i][j]=g(r[i][j]);
    	else interm[i][j]=0;
    	res=res+interm[i][j];
          }
        }
      return(res);
    }
     
     
    void H(double grad_discret[], double z[], std::vector<double> y1[n][d],std::vector<double> y2[n][d], double c)
    { // la sortie est grad_discret 
      double zm[d];
      double zp[d];
      double up;
      double um;
     
     
      for (int i=0; i<d; i++)
        {
          for (int k=0;k<d;k++)
    	{zp[k]=z[k];zm[k]=z[k];}
          zp[i]=z[i]+c;
          zm[i]=z[i]-c;
          up=U(zp,y1);
          um=U(zm,y2);
          grad_discret[i]=(up-um)/(2*c); //ici Ci=C
          // cout << " i= " << i <<" up= "<<up <<" um= "<<um<<" " << "grad_discret= "<< grad_discret[i] << " ";
        }
    }
     
     
    void W(double grad_W[],double H_util[], double beta)
    { 
      double expo[d];
      double somme=0;
     
      for (int i=0; i<d;i++)
        {
        expo[i]=exp(H_util[i]*u/beta);
        somme=somme+expo[i];
        }
      // cout<<"somme= "<<somme<<" ";
      for (int i=0;i<d;i++)
        {
          grad_W[i]=u*expo[i]/somme;
        }  
    }
     
    int main()
    {
     typedef std::ve

  6. #6
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Salut,

    Il y a trop de choses à redire et des choses qui prouvent que tu as passés des étapes importantes dans ton apprentissage du C++. En définitive il est difficile de t'aider sans le faire à ta place

    À mon avis, si ce n'est pas un projet urgent, tu ferais mieux de lire le bouquin que je t'ai conseillé, si tu le lis 2h tous les soirs, je pense que dans 1 semaine tu comprendras déjà beaucoup plus de choses

    Bon courage !

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    Je comprends, mon seul soucis est que c'est urgent pour une présentation des résultats lundi! j'essaye depuis hier, erreur après erreur, je pense que je comprends que c'est la manipulation des types, mais ça va demander du temps pour obtenir quelque chose ! Je te remercie en tout cas ! Tu m'as bien aidé jusqu'au là!

    Les exemples de la lecture du contenu des vectors 2D, + opérations avec les types doubles, tableaux, sont rares sur le net!

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut ça marche!
    ça marche finalement avec les decalarations type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::vector<double> > y
    dans les fonctions, et les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y.resize(n, std::vector<double>(d));
    au debut du corps de la fonction!
    effectivement, ca a augmenté juste un peu les perfs, mais ca crach toujours, (meme pour k=20000, d=2, p=1), le code n'est pas optimisé, je vais essayer de le réecrir.
    Bonne nuit!

  9. #9
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Il faut que tu respectes la notation que j'ai introduite dans le premier exemple, j'avais utilisé des typedefs pour simplifier. (typedef = type declaration, c'est comme si tu utilisais un synonyme) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef std::vector<double> array1D;
    typedef std::vector<array1D> array2D;
    typedef std::vector<array2D> array3D;
    Est équivalent à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // array2D equivalent à
    std::vector<std::vector<double> > monTableau2D;
    // array3D équivalent à 
    std::vector<std::vector<std::vector<double> > > monTableau3D;
    Comme tu vois ça devient vite lourd comme notation d'où l'introduction de synonyme. Bon je vais te faire une fonction qui initialise un tableau2D et 3D :

    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
    #include <vector>
     
    // À mettre en début de programme (ou juste avant d'en avoir besoin)
    typedef std::vector<double> array1D;
    typedef std::vector<array1D> array2D;
    typedef std::vector<array2D> array3D;
     
    // Reservation de la taille pour un tableau 1D
    void init_array_1D(array1D &tab, int d1)
    {
      tab.resize(d1);
    }
     
    // Reservation de la taille pour un tableau 2D
    void init_array_2D(array2D &tab, int d1, int d2)
    {
      tab.resize(d1);
      for(std::size_t i=0; j < tab.size(); ++i)
        init_array_1D(tab[i], d2);
    }
     
    // Reservation de la taille pour un tableau 3D.
    void init_array_3D(array3D &tab, int d1, int d2, int d3) // note le '&' ca veut dire que tab n'est pas une copie.
    {
      tab.resize(d1);
      for(std::size_t i=0; i < tab.size(); ++i)
      {
        init_array_2D(tab[i], d2, d3);
      }
    }
     
    //                   ^ <- on peut modifier grad_discret
    void H(array1D & grad_discret, 
              const array1D &z, // Combinaison de const et & : on ne fait pas de copie du tableau mais on empêche qu'il soit modifié - lecture seule.
              const array3D &y1,
              const array3D &y2, double c)
    {
      // Pour récupérer la taille des dimensions. (ex : a[d1][d2][d3]):
      y1.size(); // == d1
      y1[0].size(); // == d2
      y1[0][0].size(); // == d3
     
      array1D zm(y1[0][0].size());
    // Ou encore
      array1D zm;
      init_array_1D(zm, y1[0][0].size()); // zm est passé par référence donc pas copié, donc ok !
    }
    Voila normalement là, t'as tout ce qui faut pour changer ton code vers des vecteurs, n'utilise plus du tout de déclaration en double y[d][n], à la place utilise array2D &y ou const array2D &y dans les en-tête de fonction et array2D y; init_array_2D(...); si c'est une variable locale.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Merci infiniment!
    Bonjour,
    Je te remercie infiniment! c'est très gentil de ta part, j'avais commencé à produire des résultats, afin de finaliser mon rapport! je vais modier ce matin en fonction de ce que tu viens de m'expliquer! je vais me remettre en C++ dès la fin de ce projet, il s'agit d'un projet de recherche académique maths, et j'ai pris l'habitude d'utiliser des logiciels simple style R , S, mais dès que la taille du problème devient elevée, il faut faire appel au vrai code! Je te tienderais au courant! Merci encore!

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut ça marche!
    et oui, les perfs doublent au moins, je te remercie sincèrement! les tableaux doubles ont disparu, deux tableaux bool, mais c est pas lourd. une toute petite question pour le & des en-tete des foonction,la variable n'est pas une copie, on l'utilise que pour les varaibles out put d 1 void?
    Je pense que tu dois écrire un tutoriel, tes exemples sont simples à comprendre,et c'est une qualité que peu de profs d'info possèdent! pour les nuls (comme mon cas), tes livres seront un bon outil pour avancer!
    10000 Merci!

  12. #12
    Membre averti
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Points : 435
    Points
    435
    Par défaut
    Citation Envoyé par newkam2013 Voir le message
    une toute petite question pour le & des en-tete des foonction,la variable n'est pas une copie, on l'utilise que pour les varaibles out put d 1 void?
    Oui il s'agit ici de passage par référence. Ca t'évite de faire la copie des éléments que tu envoies à ta fonction. Ici c'est justifié par le fait que tu transmets à tes fonctions des tableaux de taille assez monumentale. Du coup, pas de copie, gros gain de temps et de performances

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse! je pose a question parce que j'ai eu des resultats nulles ( des 0) quand 'ai oublié le & dans une de mes fonctions, avec le & ca marche parfaitement! Merci

  14. #14
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Ha bah merci des compliments mais je suis loin de pouvoir enseigner, j'en apprend encore tous les jours aussi

    Tu avais des zéros pour la simple et bonne raison que sans le '&' ta variable est copiée ce qui veut dire que la variable que tu passes à ta fonction lors de l'appel ne sera jamais modifié (comme un const&). Sauf que en plus du const& tu recopies tout. Et les zéros viennent du fait qu'une variable vector, comme ont les a déclarés, sont initialisés à zéro, donc du coup vu que c'était passé par copie, aucun traitements n'étaient fait et ça restait à zéro. CQFD.

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Résolu grace à Trademark!
    Exact, bon, je te remercie pour ton aide, c'était super utile. Excellent Week end à toi!

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

Discussions similaires

  1. [Tableaux] erreur bbcode taille
    Par speedylol dans le forum Langage
    Réponses: 1
    Dernier message: 04/09/2006, 16h51
  2. [Tableaux] taille tableau a deux dimensions
    Par nath-0-0 dans le forum Langage
    Réponses: 2
    Dernier message: 24/08/2006, 18h04
  3. [Tableaux] Taille cellule de tableau
    Par johnkro dans le forum Langage
    Réponses: 4
    Dernier message: 27/07/2006, 08h48
  4. [Tableaux] trouver taille tableau html en php
    Par eulalie15 dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2006, 13h47
  5. [Tableaux] Comment connaitre la taille d'un tableau?
    Par Polaire76 dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2005, 17h34

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