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 :

Aide tableau appels de fonction


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Septembre 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 39
    Par défaut Aide tableau appels de fonction
    Bonjour à tous ,j'ai un exo a faire (je l'ai fait) mais il ne marche pas et je ne comprend pas du tout pourquoi.
    Voici l'exo :

    Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier V. Le programme doit rechercher si V se trouve dans le tableau et doit supprimer la première occurence de V en décalant d'une case vers la gauche les éléments suivants et en rajoutant un 0 à la fin du tableau. Le programme doit ensuite afficher le tableau final.

    Sans les appels de fonction,j'y arrive mais je prefere m'entrainer aux appels .
    Voici mon code source :

    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
     
     
    #include<iostream>
    #include<cstdlib>
    using namespace std;
    const int n=10;
     
    int saisir(int tab[],int n,bool present)
    {
        cout<<"Entrer 10 valeurs"<<endl;
        for(int i=0;i<n;i++)
        cin>>tab[i];
        int v;
        cout<<"Entrer un entier V"<<endl;
        cin>>v;
        present=false;
        int j=0;
        while(!present && j<n)
        {
                       if(tab[j]==v)
                       present=true;
                       else j++;
    }
    return present;
    }
     
    int decgauche(int tab[],int n,int i)
    {
        for(int j=i;j=n-1;j++)
        tab[j]=tab[j+1];
        cout<<"Hello"<<endl;
        tab[n-1]=0;
        cout<<"tg"<<endl;
    }
     
    int affichetableau(int tab[],int n)
    {
        for(int i=0;i<n;i++)
        cout<<tab[i]<<endl;
    }
     
    int main()
    {
        bool h,present;
        int tab[n];
     
        h=saisir(tab,n,present);
        if(present)
        decgauche(tab,n,h);
        affichetableau(tab,n);
     
    }
    Qu'est ce qui ne vas pas svp ?
    Merci beaucoup.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int saisir(int tab[],int n,bool present)
    {
        ...
        present=false;
        ...
    return present;
    }
    present n'a pas à être un paramètre puisque tu n'utilises pas la valeur transmise. Une variable locale suffit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int saisir(int tab[],int n)
    {
        ...
        bool present=false;
        ...
    return present;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     int decgauche(int tab[],int n,int i)
    {
        for(int j=i;j=n-1;j++) // La, il y a une erreur
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
        bool h,present;
    ...   
        h=saisir(tab,n,present);
        if(present)...
    present est non initialisé! la valeur de h n'est pas utilisé

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2007
    Messages : 157
    Par défaut
    Salut diogene,

    Ce que je peux te proposer c'est d'utiliser les vectors pour résoudre ceci. Tout plein de mécanismes sont intégrés;
    Vector sur le site cplusplus

    Tu n'auras pas à gérer le conteneur en allocation mémoire pour des objets simples, int, float, .... la gestion de mémoire (qu'il ne faut pas oublier) se fera en utilisant des listes d'objets par exemple.

    L'insertion d'un element se ferait par la methode push_back()
    Apres il suffit pour tester l'existence d'un element de faire une boucle comme avec le tableau, mais en utilisant les propriétés du vector pour tester la fin de boucle.

    Pour effacer un element il faut faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      // erase the 6th element
      myvector.erase (myvector.begin()+5);
    Bon developpement

Discussions similaires

  1. aide sur création/appel de fonctions
    Par nanou1983 dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2008, 09h37
  2. Appeler une fonction avec un tableau en parametre ?
    Par devoluti0n dans le forum C++
    Réponses: 9
    Dernier message: 11/04/2008, 16h21
  3. Réponses: 1
    Dernier message: 25/07/2007, 10h03
  4. Réponses: 4
    Dernier message: 21/04/2007, 20h02
  5. [langage] appel d'un tableau dans une fonction
    Par donny dans le forum Langage
    Réponses: 11
    Dernier message: 13/11/2006, 16h17

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