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 :

trouver la taille d'un tableau, donné en argument d'une fonction


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 28
    Points
    28
    Par défaut trouver la taille d'un tableau, donné en argument d'une fonction
    Bonjour,

    voici mon code :
    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
     
    double averageTemperature(int measuredValues[], int size_mesuredValues)
    {
    	for(i=0 ; i<size_mesuredValues ; i++)
    	{
                 //une instruction quelconque
            }
    }
    int main()
    {
    	int T[100]={-562,-274,72,52,-36,981,523},size_mesuredValues;
    	double averageTemp;
    	size_mesuredValues=sizeof(T)/sizeof(int); // me renvoi 100
     
    	averageTemp=averageTemperature(T,7); //je suis obliger de mettre 7 "a la main"
     
    	return 0;
    }
    J'aimerais que ma fonction averageTemperature ne reçoive comme argument seulement int measuredValues[], et le fonction trouve la taille réel du tableau (soit 7) toute seule !

    Est-ce quelqu'un sait comment faire ?

    merci d'avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    C'est bête comme réponse, mais ...
    tu ne peux pas
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Avec les tableaux C ce n'est pas possible, c'est un de leurs inconvénients, ils stockent pas leur taille, contrairement à std::vector qui n'a pas ce problème (fonction size()).

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Bonjour.
    Pour commencer, comme tu est en C++ tu devrait utiliser les vector. Et la tu n'aura plus de problème.
    Sinon, ce que tu veut faire n'est pas possible. Même en C.

  5. #5
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 28
    Points
    28
    Par défaut une autre solution
    merci de ta réponse rapide.

    mais si c'est pas possible, est-ce que quelqu'un a une idée pour avoir la taille de mon tableau, peut etre avec des allocations dynamique (que je ne maitrise pas trop) ??

    quelque chose pour remplaçer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size_mesuredValues=sizeof(T)/sizeof(int);
    qui me renvoi 100 et non 7 comme voulue.

    merci

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Ne mets pas le 100 dans ton code.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    merci pour les réponse

    (évidemment il fallait pas mettre 100, désolé)

  8. #8
    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
    D'abort utilise std::vector, apres si tu veux vraiment faire du C++ sans STL et avec un seul argument dans ta fonction tu peux faire ceci :

    Dans ton tableau de int tu alloue avec un de plus (ex. pour stoquer 3 enregsitrement du alloue 4 int) puis le premier, tu le remplie avec la taille de ton tableau.
    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
    #include <iostream>
    void fonc(int *p)
    {
    	int size = p[0];
    	std::cout << "Size: " << size << std::endl;
    	p++;
    	for (int i=0; i<size; i++)
    	{
    		std::cout << i << " => " << p[i] << std::endl;
    	}
    }
     
    int main()
    {
    	int tab[] = { 123, 456, 789 };
    	int size = sizeof(tab) / sizeof(int);
    	int *p = new int[size+1];
    	p[0] = size;
    	memcpy( p + 1, tab, sizeof(tab) );
    	fonc( p );
    	delete []p;
    }
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/01/2008, 13h25
  2. Passer un tableau PHP en argument dans une fonction javascript ?
    Par The Molo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/05/2007, 12h31
  3. Réponses: 17
    Dernier message: 15/05/2006, 17h18
  4. Réponses: 13
    Dernier message: 07/05/2006, 11h54
  5. tableau dynamique en parametre d'une fonction
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 27/04/2004, 16h35

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