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 :

retourner des données boucle for


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Points : 46
    Points
    46
    Par défaut retourner des données boucle for
    salut a tous

    J'ai une petite question concernant le renvoie de valeurs

    j'ai un programme qui doit renvoyé des données a chaque itérations
    j'utilise pour cela une boucle for le probleme est que j'arrive a envoye une seule donné grace au return

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int fct(int a , int b)
     
    for (i=0; i<10 i++)
    {
     
    return donnée(i)
     
    }
    J'aimerai savoir comment je peux envoyer a chaque top une donnée a ma fonction sans que celle ci ne considere le return de la 1 iteration

    merci

  2. #2
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut
    Salut,

    Tu ne peux pas. Une fonction peut retourner une et une seule valeur.
    Si tu dois retourner plusieurs valeurs d'un coup, il faut retourner un pointeur (vers un vecteur, tableau, struct, ...).
    Il y a néanmoins une solution, mais je pense pas que ça soit vraiment propre :/ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int ma_fonction (T *data)
    {
        static int i = 0;
     
        return *(data + i++);
    }
    Ainsi, la fonction conserve la valeur de i. A chaque appel, elle reprendra cette valeur pour te retourner la suivante. Il faut donc placer cette fonction dans une boucle...

    Edit : un exemple plus concret :

    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 <stdio.h>
     
    int ma_fonction (int *data)
    {
    	static int i = 0;
     
    	return *(data + i++);
    }
     
    int main (void)
    {
    	int i = 0, res = 0;
    	int data[10] = {5, 9, 55, 23, -5, 27, 112, 36, 98, 25};
     
    	for (i = 0 ; i < 10 ; i++)
    	{
    		res = ma_fonction (data);
     
    		printf ("%d ", res);
    	}
     
    	return 0;
    }
    Ce genre de code est quand même à éviter hein

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Points : 46
    Points
    46
    Par défaut
    dslé je n'ai pas tres bien compris en faite je ne dois pas renvoyé plusieurs donnée en 1 coup mais a chaque iterations je renvoie une valeur

    merci

  4. #4
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut
    Ma fonction ne renvoie pas tout en un coup. A chaque appel et te renvoie une valeur. Mais une fonction ne renverra jamais plus d'une valeur par appel.

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par insa59
    J'ai une petite question concernant le renvoie de valeurs

    j'ai un programme qui doit renvoyé des données a chaque itérations
    j'utilise pour cela une boucle for le probleme est que j'arrive a envoye une seule donné grace au return
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int fct(int a , int b)
       for (i=0; i<10 i++)
       {
          return donnée(i)
       }
    Ca ne peut pas fonctionner, car return interrompt l'exécution de la fonction.

    Que veux tu faire exactement ? La solution est peut être ailleurs...

    Comme ça, par exemple : (P.J.)
    Fichiers attachés Fichiers attachés
    • Type de fichier : c f.c (192 octets, 76 affichages)
    • Type de fichier : h f.h (231 octets, 80 affichages)
    • Type de fichier : c main.c (186 octets, 83 affichages)
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    le return quitte la fonction et revient dans la fonction appelante en renvoyant une valeur(UNE SEULE), pour ton cas tu peux utiliser un tableau par exemple, dont chaque case est rempli à chaque tour de boucle et a la fin tu renvoie le pointeur sur le tableau.
    Omnes Vulnerant Ultima Necat
    Bye

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/11/2012, 16h18
  2. [Doctrine] Probleme de jointure qui me retourne des données non voulues.
    Par Soullivaneuh dans le forum ORM
    Réponses: 5
    Dernier message: 20/04/2012, 13h03
  3. [Débutant] Retourner des données à une fonction Javascript
    Par TipyLeCanadien dans le forum C#
    Réponses: 2
    Dernier message: 02/03/2012, 20h44
  4. Récupération des données dans une boucle for
    Par boubounagh dans le forum Interfaces Graphiques en Java
    Réponses: 22
    Dernier message: 24/10/2011, 16h29
  5. Réponses: 8
    Dernier message: 15/10/2009, 12h13

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