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 :

[débutant] Comment modifier plusieurs tableaux avec une fonction


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [débutant] Comment modifier plusieurs tableaux avec une fonction
    Bonjour.

    Tout d'abord, je suis désolé si la réponse (sans doute évidente) est déjà disponible quelque part, je n'ai pas réussi à la trouver.

    Mon problème est le suivant :
    Je cherche à travailler sur des vecteurs de dimention 3, donc des tableaux à 3 éléments. L'exemple le plus basique serait de multiplier et de diviser un vecteur par un entier.
    Pour ça, j'utilise le code suivant :

    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
    43
    #include <iostream>
    #include <fstream.h>
    #include <math.h>
    #include <cstdlib>
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <vector.h>
     
    using namespace std;
     
    // Division de x par a :
    void produit (int & a, double & x[3], double & p[3], double & d[3]) {
      for (int i=0;i<3;i++) {
        p[i]=x[i]*a;
        d[i]=x[i]/a;
      }
    }
     
    int main () {
      double y[3];
      int b=2;
      double prod[3];
      double div[3];
      double y2[3];
      int b2=6;
      double p2[3];
      double d2[3];
     
      for (int i=0;i<3;i++) {
        y[i]=8*i+2;
        y2[i]=3*i+4;
      }
    // Multiplication et division de y par b
      produit(b,y,prod,div);
    // Multiplication et division de y2 par b2
      produit(b2,y2,p2,d2);
      for (i=0;i<3;i++) {
        cout<<prod[i]<<" "<<div[i]<<endl;
        cout<<p2[i]<<" "<<d2[i]<<endl;
      }
    }
    Ce code marche parfaitement si on prend un seul double plutôt qu'un tableau, mais dans le cas étudié, ça ne marche plus (il semble qu'il ne reconaisse pas les double & x[3] comme entrées de la fonction).

    Peut-être y a t-il d'autre moyen de coder ça qu'en utilisant une fonction void, mais là encore, je n'en ai pas trouvé.

    Bref, j'ai conscience que ce doit être tout bête, mais ... Je débute vraiment. Si quelqu'un connait un code efficace pour ce genre de problème, merci d'avance.

  2. #2
    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
    C'est normal, les tableaux à la C ne sont pas des objets comme les autres. Il ne peuvent pas être passés en paramêtre, ni être retournés par une fonction.

    Quand tu écris
    c'est en fait équivalant à
    donc pas besoin de référence, le passage se fait de toute façon par pointeur.

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/03/2008, 11h37
  2. Réponses: 3
    Dernier message: 03/10/2007, 00h59
  3. Réponses: 14
    Dernier message: 09/03/2007, 12h21
  4. Réponses: 6
    Dernier message: 10/01/2007, 13h16
  5. Réponses: 4
    Dernier message: 08/09/2006, 12h35

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