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 :

boucle dans fonction


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Par défaut boucle dans fonction
    bonsoir.

    j'ai écrit un petit code-modèle.
    je souhaite garder la même structure.
    je ne parviens pas à faire tourner une boucle for , dans une fonction

    je m'attends à résultat, ainsi à l'écran :

    9.6
    9.7
    9.8
    9.9
    10.0

    mais rien. je pense ne pas être loin. mais, çà m'échappe.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include<iostream>
    #include<math.h>
    #include<vector>
    using namespace std;
     
    struct Inputs{
    	double variable1;
    	double variable2;
    	double variable3;	
    	};
     
     
    void setupExemple (Inputs &i){
    i.variable1 = 2;
    i.variable2 = 3;
    i.variable3 = 4;
    }
     
    void ma_fonction (const Inputs &i){	
    	vector<int>variable4;
    	for (int c = 0.6; c < 1; c= c+0.1){
    		variable4.push_back(c);
    		cout << i.variable1 + i.variable2+ i.variable3 + variable4 << endl;
    	};
    }
     
     
    int main (int, char*[]){
    	Inputs i;
    	setupExemple (i);
    	ma_fonction (i);
    quelqu'un a t il des suggestions ?

    merci

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par tallent_e Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	for (int c = 0.6; c < 1; c= c+0.1){
    		variable4.push_back(c);
    		cout << i.variable1 + i.variable2+ i.variable3 + variable4 << endl;
    	};
    c est un entier, comment veux-tu t'en servir pour stocker 0.6 (de même pour variable4) ?
    Utilise un double.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Par défaut int => double
    Ah ! oui. c'est bête.

    mais, en changeant de int c à double c, cela ne fonctionne toujours pas.
    la variable c semble rester à 0.

    je ne comprends pas pourquoi.

    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
    #include<iostream>
    #include<math.h>
    #include<vector>
    using namespace std;
     
    struct Inputs{
    	double variable1;
    	double variable2;
    	double variable3;	
    	};
     
     
    void setupExemple (Inputs &i){
    i.variable1 = 2;
    i.variable2 = 3;
    i.variable3 = 4;
    }
     
    void ma_fonction (const Inputs &i){	
    	vector<double>variable4;
    	for (double c = 0.6; c < 1; c= c+0.1){
    		variable4.push_back(c);
    		cout << i.variable1 + i.variable2+ i.variable3 + variable4 << endl;
    	};
    }
     
     
    int main (int, char*[]){
    	Inputs i;
    	setupExemple (i);
    	ma_fonction (i);
    une autre suggestion ? - merci -

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par tallent_e Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << i.variable1 + i.variable2+ i.variable3 + variable4 << endl;
    Et quel est le sens de vouloir ajouter un vector à un double ?

    Mais que cherches-tu vraiment à faire ?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Par défaut
    je cherche à ajouté la valeur de variable4[c] aux doubles i.variable1, i.variable2 et i.variable3.

    le code que j'ai posté est juste un modèle. c'est pouquoi çà peux sembler carrément inutile.

    en fait, j'ai résolu le problème en oubliant le vector et en utilisant une boucle do ... while. et çà marche bien.

    mais si quelqu'un à une idée pour le code avec le vector, je suis preneur.

    en tous les cas, merci gl

  6. #6
    Membre éclairé

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut
    variable4[c]
    Si tu garde c en double, l'opérateur [] du vector attends un nombre entier (numéro de la case), il y a donc une conversion double -> int (troncature apparemment).

    Fait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << i.variable1 + i.variable2+ i.variable3 + c << endl;
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << i.variable1 + i.variable2+ i.variable3 + variable4.back() << endl;

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Citation Envoyé par tallent_e Voir le message
    mais si quelqu'un à une idée pour le code avec le vector, je suis preneur.
    Les algos de la STL sont tes amis (Les algorithmes de la STL par r0d)
    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
    #include<iostream>
    #include<vector>
    #include <iterator>
    #include <algorithm>
    #include <functional>
     
    struct Inputs{
    	double variable1;
    	double variable2;
    	double variable3;	
    	};
     
     
    void setupExemple (Inputs &i){
    i.variable1 = 2;
    i.variable2 = 3;
    i.variable3 = 4;
    }
     
    void ma_fonction (const Inputs &i){	
    	std::vector<double>variable4;
    	for (double c = 0.6; c < 1; c= c+0.1){
    		variable4.push_back(c);
    	};
     
       double const v0 = i.variable1+i.variable2+i.variable3;
     
       std::transform(variable4.begin(),variable4.end(),
           std::ostream_iterator<double>(std::cout,"\n")
           ,std::bind1st(std::plus<double>(),v0)
        );
    }
     
     
    int main (){
    	Inputs i;
    	setupExemple (i);
    	ma_fonction (i);
     
     
       return 0;
    }
    Plus souple avec les lambdas C++0x pour le transform :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       std::transform(variable4.begin(),variable4.end(),
           std::ostream_iterator<double>(std::cout,"\n")
           ,[v0](double v_){return v_+v0;}
        );

    Ceci dit, je ne suis pas sur d'avoir compris la question au départ et ne suis donc pas sur qu'il s'agisse de la réponse à ta question
    Citation Envoyé par tallent_e Voir le message
    je cherche à ajouté la valeur de variable4[c] aux doubles i.variable1, i.variable2 et i.variable3.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut
    Bonjour,
    c'est mon premier post pour aider mais je trouve ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void ma_fonction (const Inputs &i){	
    	vector<double>variable4;
    	int k=0;
    	for (double c = 0.6; c < 1; c= c+0.1){
    		variable4.push_back(c);
    		double result=i.variable1 + i.variable2+ i.variable3 + variable4[k]; 
    		cout << result << endl;
    		k++;
    	}
    }
    Je trouve ça assez simple et ça marche. C'est sur je n'utilise pas grand chose de technique mais bon.
    Je ne comprenais pas comment
    variable4
    , pouvait retourner une valeur étant donné qu'il s'agit d'un vecteur et que pour avoir sa valeur il faut accéder aux éléments, non?
    Dites moi si je me trompe, je ne suis pas sur de moi.
    Bon courage pour la suite.

Discussions similaires

  1. Update dans fonction avec boucle
    Par YaNnTeB dans le forum Débuter
    Réponses: 1
    Dernier message: 21/03/2010, 17h35
  2. Quitter une fonction qui fait une boucle dans le Thread ?
    Par bboy0303 dans le forum Multithreading
    Réponses: 2
    Dernier message: 25/05/2009, 17h58
  3. Boucle dans une fonction
    Par yoyotheboss7 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2009, 21h28
  4. [AJAX] interface boucle retour fonction Ajax dans code Php
    Par sami117 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2009, 19h41
  5. Boucle dans une fonction
    Par masseur dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2006, 16h57

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