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 :

fonction qui renvoie un tableau


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Points : 66
    Points
    66
    Par défaut fonction qui renvoie un tableau
    Salut,
    Savez comment écrire une fonction qui renvoie un tableau de dimension 2?

  2. #2
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Ne peut tu pas utiliser la STL avec un vecteur ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    boost::array<boost::array<T, M>, N> ta_fonction()
    {
    }
    Avec N et M les tailles respectives de tes dimensions.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Points : 66
    Points
    66
    Par défaut
    Justement pour optimiser mon code je préfère tilisé des tableaux.

    Je fais un projet sur le "recuit simulé" ou je devrais manipulé plusieurs milliers (millions?) de fois des valeurs contenues dans des tableaux/vecteurs/listes (au choix).
    Ici je cherche à récupérer un valeur maximm et minimum contenue dans un fichier texte. Je sais déjà récupérer cela sous forme de liste mais cela risque de ralentir le temps de calcul du recit.

    La fonction:
    int * sep_termTab2Int(std::string stri){
    ....
    int ele [2];
    ...
    return ele;

    }
    puis l'appel:
    map_Cij[num_L2]=sep_termListDouble(ligne);

    ne fonctionne pas

  5. #5
    Membre régulier
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Points : 108
    Points
    108
    Par défaut
    ou tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    type ** tafonction() {
    }
    Attention ! pour faire cela tu doit connaitre les dimensions du tableau et liberer la memoire occupée par ton tableau

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Points : 66
    Points
    66
    Par défaut
    Merci pour toutes ces réponses

    Je ne sais pas encore si je pourrais utiliser boost pour rendre mon projet : il doit tourner sur gcc sous linux .
    Je demanderais si on peux ajouter des librairies supplémentaires
    (ça fais un peu plus d'un mois que je fais un peu de c++ alors je suis un peu perdue ... d'ailleur je ne sais mais pas importer la librairie boost mais je trouverais ça sur le net!)

    Voilà la structure de mes donnés;
    un tableau à 2 dimensions prend comme 1er index un numéro (décompte de certaines lignes) qui prend ensuite comme paramétre un tableau de 2 entiers l'entier lu dans le fichier texte (un minimum et un maximum):

    données:(nb colonnes =2 , nb lignes variables)
    1 2
    1 5
    3 2
    9 15

    Ex :
    Lecture de la 2éme ligne (ligne 0 et 1):
    monTab[1][0]=1;
    monTab[1][1]=5;

    Soit dans mon code:
    La fonction:
    int * sep_termTab2Int(std::string stri){
    ....
    int ele [2];
    ...
    return ele;

    }

    puis l'appel:

    //map_Cij : tableau à 2 dimension, num_L2 =num ligne
    //sep_termTab2Int(ligne) doit me retouner le tableau de deux int

    map_Cij[num_L2]=sep_termTab2Int(ligne);

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Points : 66
    Points
    66
    Par défaut
    Je ne voulais pas utiliser un développement orienté objet car c'est plus lent qu'une programmation statique (ce projet auras pour unique objectif l'optimisation d'un recuit simulé).
    Finalement je vais créer un objet MinMax qui prend deux int en paramétre et le tour sera joué...

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Je ne sais pas encore si je pourrais utiliser boost pour rendre mon projet : il doit tourner sur gcc sous linux .
    GCC dispose de std::tr1::array, qui est la même chose. (dans <tr1/array> il me semble)
    Dans ton cas, ce que tu veux retourner, c'est juste une paire d'entiers. Donc tu peux faire un array (et non pas un tableau, car les tableaux C++ sont hérités du C et ne sont pas copiables) de deux éléments, ou tout simplement une structure avec deux entiers, ce qui est exactement la même chose.

  9. #9
    Membre régulier
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Points : 108
    Points
    108
    Par défaut
    les tableaux ne sont pas copiables directement mais bon, il faut pas charrier quand même, la copie d'un tableau dynamique en C/C++ on aprend ça au bout d'à peine 2mois en DUT informatique c'est quand même surmontable

    Et puis... dans son cas ce n'est pas dur a mettre en oeuvre et c'est surtout fichtrement rapide

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Points : 66
    Points
    66
    Par défaut
    Merci à vous tous pour cette participation.
    Finalement j'ai utilisé des vecteurs ou plutôt des map de vector

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

Discussions similaires

  1. appel d'une fonction qui renvoie un tableau
    Par yokou dans le forum VB.NET
    Réponses: 1
    Dernier message: 08/01/2008, 22h52
  2. fonction qui renvoie un tableau
    Par deubelte dans le forum C++
    Réponses: 24
    Dernier message: 26/05/2007, 02h51
  3. fonction qui renvoie un tableau
    Par toto2022 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/01/2007, 17h11
  4. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 02h04
  5. Fonction qui renvoie un tableau?
    Par elm dans le forum C
    Réponses: 23
    Dernier message: 21/12/2005, 13h44

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