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 :

Problème lors d'une initialisation


Sujet :

C++

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Problème lors d'une initialisation
    Bonjour,

    Je souhaiterais écrire un programme qui attribu successivement à y les coordonnées d'un vecteur V si a est inférieur à 10 et une valeur de 1 sinon.
    Pour cela, j'ai écrit le programme ci-dessous.

    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
    double V[7]={ 0.00563367994562089, 0.00514513577087959, 0.00473125916437042, 0.00437672739347539, 0.00407003566240753, 0.00380240164947606, 3 }; 
     
    int i;
    i=0;
     
    if(a<=10)
         { 
          y=V[i];
           i=i+1;
         }
     
     
    else
         { 
          y=1;
         }
    Seulement, il ne fonctionne pas car la valeur de i est initialisée à zéro à chaque fois.
    Quelqu'un pourrait-il me dire comment corriger cette erreur ?

    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Tout d'abord, merci de présenter ton code correctement (indentation, notamment).

    Ensuite, tu parles d'attributions successives, mais il n'y a pas de boucle.

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Je voudrai que le programme donne :

    y=V[0]
    y=V[0]+V[1]
    y=V[0]+V[1]+V[2]
    y=V[0]+V[1]+V[2]+V[3]
    y=V[0]+V[1]+V[2]+V[3]+V[4]
    etc.

    Par attribution successive, je parlais de la ligne i=i+1.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Par rapport à ce besoin, je ne comprend pas bien ce que viennent faire le test sur a et l'affectation de 1 à y.

    Citation Envoyé par marion15 Voir le message
    Par attribution successive, je parlais de la ligne i=i+1.
    Oui, mais il n'y a rien de successif, puisque e n'est exécuté qu'une fois.

  5. #5
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Le programme est intégré dans un logiciel. Il sert à définir la valeur de y en fonction de a.
    Ce programme est lu à chaque fois que la valeur de a change.
    Le problème est que je voudrai que la valeur de i ne soit pas initialisée à 0 à chaque fois que la valeur de a change.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Initialise i plus en amont.

    Mais tu devrais nous écrire ton algo sous forme de pseudo-code. Et en nous mettant plus d'éléments que ce que tu as mis au début.

    Par ailleurs, veux-tu écrire un programme ou une fonction ?

  7. #7
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Honnêtement ce genre de problème est simple et probablement un cas d'école... La première chose je pense serais de relire le cours


    Je souhaiterais écrire un programme qui attribu successivement à y les coordonnées d'un vecteur V si a est inférieur à 10 et une valeur de 1 sinon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    double y = 0.0;
    for( int i = 0; i < MAX_V; ++i)
    {
    if(V[i] <10)
        y += V[i];
    else
        y += 1.0;
    }
    Homer J. Simpson


  8. #8
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Veuillez m'excuser, j'ai fait une erreur dans le message du 16 à 21h54.
    Je voudrais que le programme donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dt=V[0]
    dt=V[1]
    dt=V[2]
    etc. (si a<=10)
     
    dt=1;
    dt=1;
    dt=1;
    etc. (si a>10)
    J'avais donné le résultat que je voudrais que le logiciel donne.

    Astraya,
    J'ai déjà essayé avec une boucle for comme vous me l'avez indiqué (avec modification par rapport à l'erreur). Seulement, de cette manière seule la dernière coordonnée de V est prise en compte. Et j'ai comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dt=V[6];
    dt=2*V[6];
    dt=3*V[6]
    dt=4*V[6];
    etc.
    Oodini,
    Voici le pseudo-code :
    Déclaration d'un vecteur V ayant 7 coordonnées successives étant 0.00563367994562089, 0.00514513577087959, 0.00473125916437042, 0.00437672739347539, 0.00407003566240753, 0.00380240164947606, 3

    int i;
    i=0;
    real a; (a est connu du programme et à chaque nouvelle valeur de a le programme est relu)

    Si a est inférieur à 10, alors :
    - y prend la première valeur de V (pour la première lecture du programme).
    - y prend la deuxième valeur de V (pour la deuxième lecture du programme).
    - etc.

    Si a est supérieur à 10 :
    V est égale à 1 (pour toutes les lectures suivantes du programme).
    Est-ce bien un pseudo-code ? Je n'ai pas mis plus d'éléments car le reste du programme est propre au logiciel.

    Que voulez-vous dire par initialiser i plus en amont ?
    Ayant essayé plusieurs manières de faire, je pense que l'erreur pourrait être corrigée s'il était possible d'initialiser i de manière à ce que cette initialisation ne soit lue qu'une seule fois.
    Ceci est-il possible ?

    Merci d'avance.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::vector<double> y(7, 1.0);
     
    for (int i=0; i<y.size(); ++i)
    {
        if (a<=10)
            y[i] = V[i];
    }

  10. #10
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre réponse.

    J'ai les messages d'erreur suivant :
    ligne 1 : error C2143: syntax error : missing ';' before 'type'
    ligne 3 : error C2143: syntax error : missing ')' before 'type'
    ligne 3 : error C2143: syntax error : missing ';' before 'type'
    ligne 3 : error C2224: left of '.size' must have struct/union type
    ligne 3 : error C2059: syntax error : ')'
    ligne 4 : error C2143: syntax error : missing ';' before '{'
    ligne 6 : error C2109: subscript requires array or pointer type
    Y a-t-il des librairies ou autres à définir avant l'utilisation de ces lignes ?

    Savez-vous comment corriger ces erreurs ?

    Merci d'avance.

Discussions similaires

  1. problème lors de l'initialisation d'une Applet
    Par blueLight dans le forum Applets
    Réponses: 0
    Dernier message: 27/07/2009, 11h51
  2. Problème lors d'une deuxième connexion à l'applet
    Par luckyvae dans le forum Applets
    Réponses: 3
    Dernier message: 16/03/2007, 10h21
  3. [FreeBSD] Problème lors d'une mise à jour
    Par gentox dans le forum BSD
    Réponses: 2
    Dernier message: 15/11/2006, 18h44
  4. Problème lors d'une restauration
    Par Hakunamatata dans le forum Administration
    Réponses: 7
    Dernier message: 27/05/2006, 20h49
  5. [Sécurité] problème lors d'une redirection
    Par sam01 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 23h01

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