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

Langage C++ Discussion :

Problème passage tableau dans une fonction


Sujet :

Langage C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème passage tableau dans une fonction
    Bonjour, j'ai un problème avec mon code, le tableau que j'envois dans ma fonction input_array se modifie dans la fonction mais n'est pas modifié et reprend sa valeur initiale lorsqu'il passe dans mon main(). J'ai essayé une allocation dynamique mais ca n'a pas marcher.

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
     
    int input_array(int a[]){
        int m;
        int i;
     
        char response = 'A';
        cout << "Please input an integer : " << endl ;
        cin >> m;
        int b[m];
        cout << "Do you want to input the  " << m << " integers <Y/N> : " ;
        cin >> response;
        cout << response << endl;
            if (response == 'Y'){
                //cout << m;
                for (i=0; i < m; i++){
                    cin >> b[i];
                }
     
            }
            else if (response == 'N'){
                cout << m;
                //int random_number = 0;
                for (i=0; i < m; i++){
                    b[i] = rand()%100;
                    //a[i] = {random_number};
     
                }
     
     
        }
        a = b;
        cout << a<<endl;
        cout<<b<<endl;
     
     
     
        cout << a<<endl;
        return m;
    }
    int main()
    {
        int n = 0;
        int j;
        int* a;
        int taille;
        cout<<a<<endl;
        taille = input_array(a);
        cout<<a<<endl;
        for (j = 0 ; j < taille ; j++){
            cout << "bonjour";
            cout << a[j]<<endl;
     
            if (a[j] > a[0]){
                cout << "salut";
                swap (a[j], a[0]);
            }
     
     
        }
        cout << a[1];
     
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut

    Tu programmes en C++, pas en C. Utilise un std::vector<int>.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre régulier
    Homme Profil pro
    Cocher moderne
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Oman

    Informations professionnelles :
    Activité : Cocher moderne

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Points : 118
    Points
    118
    Par défaut
    Salut,

    Désolé de répondre à ta question par une question:
    Quel tableau? Je n'en trouve pas dans ton main()...

    Et ça serait sympa d'utiliser les balises CODE et d'indenter ton code, ça aiderait pour la lecture!

    EDIT: Oups, j'ai raté la première réponse...

  4. #4
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Points : 1 418
    Points
    1 418
    Par défaut
    Il faut vraiment faire quelque chose pour que les profs arrêtent d'enseigner le C avant le C++... c'est excédant.

    Il y a des façons plus simples de faire ce que tu cherches à faire, en utilisant un peu plus la STL (et celle du C++11 pour <random>) et en oubliant le C pour le moment.

    Sinon pour ton code, j'ai le sentiment que même en C tu as de grosses lacunes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int* a;
    cout<<a<<endl;
    Que pense-tu afficher là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int* a;
    a[1] = 2;
    cout << a[1];
    Et cela, qu'en penses-tu ?

    J'ai essayé une allocation dynamique mais ça n'a pas marché
    Il faudrait nous montrer comment tu as procédé.

    Il existe également des balises CODE que tu trouveras dans les icônes présents dans l'éditeur de texte qui s'ouvre quand tu souhaite écrire un message sur ce forum.

    Enfin, j'ai le sentiment qu'il te manque les bases sur la gestion de la mémoire, et cela va rendre ta pratique très périlleuse. Tu devrais t'acheter un livre pour apprendre le C++, ou suivre un tutoriel sur le net (je laisse le soin à d'autres d'indiquer les meilleurs choix possible en matière de tuto et de livre (pour le livre je dirais celui de Bjarne Stroustrup "Principes et Pratique en C++" mais c'est très subjectif je n'en n'ai pas parcouru d'autres))
    Nullius in verba

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour vos réponses, j'ai pu arriver à mes fins ! Désolé de ne pas avoir indenté et coloré mon texte, c'est évidemment très difficilement lisible j'avoue que c'est la première fois que je venais sur un forum informatique, j'en prends bonne note pour la prochaine fois !

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/06/2013, 10h06
  2. Accéder à un tableau dans une fonction
    Par valanagrid dans le forum C++
    Réponses: 10
    Dernier message: 18/09/2006, 16h08
  3. problème d'update dans une fonction trigger (before)
    Par ctobini dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/09/2006, 17h08
  4. problème de variable dans une fonction
    Par K4trix dans le forum C
    Réponses: 9
    Dernier message: 06/07/2006, 09h38
  5. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50

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