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 :

j'ai besoin du petit coup de pouce pour démarrer


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut j'ai besoin du petit coup de pouce pour démarrer
    Bonjour
    Alors je redebute en cpp(parce que j'avais commencé il ya deux puis j'avais arreté). Je voudrais juste que vous me disiez ce qui ne vas pas dans l'ecriture (normalisation cu cpp). car j'ai quelques erreurs que je n'arrive pas a resoudre. :je joins quelles unes des erreurs et le code(je l'ai envoyé tout en entier pour que puissiez le voir ).
    en vous remerciant pour votre aide.

    ps: a l'origine c'est un code en C

    : error C2552: 'Tab'*: les éléments qui ne sont pas des agrégats ne peuvent pas être initialisés avec une liste d'initialiseurs
    error C2248: 'anna::anna'*: impossible d'accéder à private membre déclaré(e) dans la classe 'anna'

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    #include<string.h>
    #include <stdlib.h>
    #include<conio.h>
    #include<iostream>
    using namespace std;
    const unsigned short int cmax=5;
     
     class anna{
     
    		struct  abonne{
            char nom[30];
            int tel;
            };
     
    		anna(){
    		}
    public :int chercheretglibre(abonne *p,int lalim){
    	int i;
        for(i=0;i<lalim;i++){
    		if((*(p+i)).tel==0){
    			break;
    		}
    	}
    return i;                   
    		}
    /********************************************************
    //fin  chercheretage
         
    //ajouter une fiche avoir avoir chercher si un etage etait dispo
    /*********************************************************/
    public :void ajouter(abonne *p){
    int saisinum,trouver;
    cin >>saisinum;
     
    int i=chercheretglibre(p,cmax);
     
    if(i<cmax){
    cin >>((*(p+trouver)).nom);
    cin >>(*(p+i)).tel;
    }else{
    cout<<"pas tourver";
    }
    		}
    /*************************************************/
    	/*affiche les infos de toutes les fiche existantes*/
    /****************************************************/
    public :void lister(abonne *p,int lalimite){
         cout<<"voici la liste des abonnées\n";
         for (int i=0;i<lalimite;i++)
         {
            cout<<i;
             cout<<(*(p+i)).nom;
            cout<<"\n";
            cout<<(*(p+i)).tel;
             cout<<"\n";
         }
    getchar();
    }
    /***********************************************************/
    /*recherche un numero d'etage du tableau dont on a donne en param un nom 
    saisi lemot[]*/
    /*recherche numero d'etage
     tableau p par le critere saisi lemot[30]
    recherche à partir de l'adresse p, le mot lemot dans la limile de lalimite.
    si pa trouve elle retourne lalimite, si trouve elle retourne le numéro trouvé*/
    /*************************************************************/
    public :int search( abonne *p,char lemot[30],int lalimite)
    {
    int i;
         for(i=0;i<lalimite;i++)
         {
                 if(strcmp((*(p+i)).nom,lemot)== 0)
                 {
     
    			 break;
                 }
         }
          return  i; 
    getchar();
    }
    /************************************************************
     Elle demande à User un nom, 
     elle cherche la fiche correspondante à ce nom, à partir de p
     et dans la limite de cmax qu'elle connait.
     si trouvée : elle en affiche les infos
     
    **************************************************************/
    public :void utilsearch(abonne *p)
    {
         char unmot[30];
         int i;
         cout<<"saisissez le nom\n";
         cin>>unmot;
    	 getchar();
     
     	i = search(p,unmot,cmax);
     
             if(i<cmax)
             {
                    cout<<"\n voici les infos \n";
                    cout<<(*(p+i)).nom;cout<<"\n";
                    cout<<(*(p+i)).tel;
             }else{ 
                           cout<<"pas trouver"; 
                  }      
    getchar();
    }
    /**********************************************************/
    /* modifie les informations d'une fiche dont 
    on a deja chercher le numero detage*/
    /*******************************************************/
    public :void modifier(abonne *p){
         char modif[30];
         int i=0;
         int nouveautel;
         cout<<"entrer le nom a changer\n";
         cin>>modif;
    	 getchar();
         i=search(p,modif,cmax);
          if(i<=cmax && i!=-1)
             {
                     cout<<"saisir le noueau numero";
                     cin>>nouveautel;
                    (*(p+i)).tel=nouveautel;
             }else{
                   cout<<"le nom saisi n'existe pas ";
                   }
     
         cout<<"le nouveau numero de";
    	 cout<<(*(p+i)).nom;
    	 cout<<"est";
    	 cout<<(*(p+i)).tel;
    getchar();
         }
    };
    /****************************************************/
    class valid{
     
    public :int main(){
     
    struct  abonne Tab[cmax]={{"zzsss",7458}
                   ,{"uuu",5555}
                   ,{"ggg",2222},
                    {"ooo",4444},
                    {"îiij",8745}
                };
         char choix;
        do{
               system("clr");//libere le tampon e/s
               cout<<"a pour rechercher\n";
               cout<<"b pour lister\n";
               cout<<"d pour modifier\n";
               cout<<"c pour sortir\n";
     
               cin>>choix;getchar();
     
     
        switch(choix)
        {
                     case 'a':
    					 anna *a=new anna();
                          a.utilsearch(Tab);
                          break;
                     case 'b':
    					  anna *b=new anna();
                          b.lister(Tab,cmax);
                          break;
                     case 'd':
    					  anna *d=new anna();
                          d.modifier(Tab);
                          break;
                     case'f':
    					  anna *f=new anna();
                          f.ajouter(Tab);
                          break;
      }
    }while((choix!='c') && (choix!='C'));
    cout<<"appueyr sur une touche pour sortir";
    getchar();
    }
    }  ;

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Si mes souvenirs sont bon, la visibilité des membres et "private" par défaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     class anna{
     
    		struct  abonne{
            char nom[30];
            int tel;
            };
     
    		anna(){
    		}
    Ca veut dire que la structure "abonne" et le constructeur "anna" ne sont pas visibles à l'extérieur de la classe.
    Ma fonction "Main" est à l'extérieur de la classe

    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     class anna{
    public :
     
    		struct  abonne{
            char nom[30];
            int tel;
            };
     
    		anna(){
    		}

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public :int main(){
     
    struct  abonne Tab[cmax]={{"zzsss",7458}
                   ,{"uuu",5555}
                   ,{"ggg",2222},
                    {"ooo",4444},
                    {"îiij",8745}
                };
    Je pige pas ce que tu essaies de faire là. Tu veux déclarer un struct ou un tableau???

    Pour la deuxième erreur, la visibilité par défaut dans les classes est effectivement private (alors que pour les strust c'est public par défaut).

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Cheps Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public :int main(){
     
    struct  abonne Tab[cmax]={{"zzsss",7458}
                   ,{"uuu",5555}
                   ,{"ggg",2222},
                    {"ooo",4444},
                    {"îiij",8745}
                };
    Je pige pas ce que tu essaies de faire là. Tu veux déclarer un struct ou un tableau???

    Pour la deuxième erreur, la visibilité par défaut dans les classes est effectivement private (alors que pour les strust c'est public par défaut).
    bonsoir cheps en fait j'ai deja declarer ma structure dans la classe anna , dans le main je cree un tableau qui est du type de la structure.
    je me trompe peut etre dans la facon de le coder en cpp?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Si mes souvenirs sont bon, la visibilité des membres et "private" par défaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     class anna{
     
    		struct  abonne{
            char nom[30];
            int tel;
            };
     
    		anna(){
    		}
    Ca veut dire que la structure "abonne" et le constructeur "anna" ne sont pas visibles à l'extérieur de la classe.
    Ma fonction "Main" est à l'extérieur de la classe

    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     class anna{
    public :
     
    		struct  abonne{
            char nom[30];
            int tel;
            };
     
    		anna(){
    		}
    merci bacelar pour l'aide en fait c'etait bien sa le probleme,la visibilité. je retiens sa a l'avenir.
    mais tout n'est pas encore resolut...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    apres avoir resolut une premeire etape au probleme , j'ai une autre question
    j'ai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
     
        switch(choix)
        {
                     case 'a':
    					 anna *a=new anna();
                          a.utilsearch(Tab);
                          break;
                     case 'b':
    					  anna *b=new anna();
                          b.lister(Tab,cmax);
                          break;...
    apparement j'ai il ne veut pas compiler ;motif:

    ...
    error C2360: l'initialisation de 'a' est ignorée par l'étiquette 'case'...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut
    Citation Envoyé par metou2703 Voir le message
    bonsoir cheps en fait j'ai deja declarer ma structure dans la classe anna , dans le main je cree un tableau qui est du type de la structure.
    je me trompe peut etre dans la facon de le coder en cpp?
    Alors tu ne devrais pas réuiliser le mot clef struct quand tu déclares ton tableau (sinon ça veut dire que tu veux en redefinir un nouveau struct).
    Pour faire du "vrai" c++ tu devrais utiliser la librairie standard et la STL, et par exemple utiliser std::string plutôt que des tableaux de char pour les chaînes de caractères. Pareil si t'as des containers, utilise des std::vector ou autres containers plutôt que des tableaux brutes.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Cheps Voir le message
    Alors tu ne devrais pas réuiliser le mot clef struct quand tu déclares ton tableau (sinon ça veut dire que tu veux en redefinir un nouveau struct).
    Pour faire du "vrai" c++ tu devrais utiliser la librairie standard et la STL, et par exemple utiliser std::string plutôt que des tableaux de char pour les chaînes de caractères. Pareil si t'as des containers, utilise des std::vector ou autres containers plutôt que des tableaux brutes.
    peut etre que t'as raison mais quand je ne reutilise pas le mot struct dans le main , il me fait l'erreur comme quoi que abonné n'a pas de type(alors que c'est une structure).
    je vais voir les tuto sur la declaration des struct en cpp.
    merci quand meme

  9. #9
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Pour déclarer des variables dans les "case" il faut le faire dans des blocs via l'utilisation des {}

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    merci pour votre aide j'ai reussi a reussi a resoudre les problemes de syntaxes. le programme ne fonctionne pas encore car quelques erreurs concernants les pointeurs.
    je vais consulter les tutos

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    rebonjour a tous
    j'ai une erreur que j'ai passé toute la nuit a pensée a resoudre . j'ai rien trouvé dans les tutos qui me satisfasse.

    voila ce que le compilo me retourne

    'Tab'*: les éléments qui ne sont pas des agrégats ne peuvent pas être initialisés avec une liste d'initialiseurs
    : error C2664: 'anna::utilsearch'*: impossible de convertir le paramètre 1 de 'valid::main::abonne [5]' en 'anna::abonne *'
    1> Les types pointés n'ont aucun rapport entre eux*; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
    voici un extrait de mon main()

    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
    class valid{
     
    public :
    	int main(){
     
    		struct abonne Tab[cmax]={{"zzsss",7458},{"uuu",5555},{"ggg",2222},{"ooo",4444},{"îiij",8745}};
     
         int choix;
      anna *a;
      a=new anna();
      anna *b;
      b=new anna();
      anna *d;
      d=new anna();
      anna *f;
      f=new anna();
        do{
               system("clr");//libere le tampon e/s
               cout<<"1 pour rechercher\n";
               cout<<"2 pour lister\n";
               cout<<"3 pour modifier\n";
               cout<<"4 pour ajout\n";
    		   cout<<"5 sortie";
     
               cin>>choix;
     
     
        switch(choix)
        {
                     case 1:
     
    					 a->utilsearch(Tab);
                          break;
                     case 2:
    					 b->lister(Tab,cmax);
                          break;
                     case 3:
     
    					 d->modifier(Tab);
                          break;
                     case 4:
     
    					 f->ajouter(Tab);
                          break;
      }
    }while(choix!=5);
    en vous remerciant par avance pour votre aide

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut
    Le main ne doit pas être dans une classe, et tu ne peux en avoir qu'un pour ton projet (contrairement à Java par exemple).

    La manière correcte de déclarer ton tableau est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main()
    {
            anna::abonne Tab[cmax]={{"zzsss",7458},{"uuu",5555},{"ggg",2222},{"ooo",4444},{"îiij",8745}};
    }
    Il faut spécifier que abonne fait partie de anna.

    Ensuite fais gaffe à l'utilisation de "new", en C++ ça signifie que tu crées l'object dynamiquement et que tu devras toi-même libérer la mémoire avec un delete. Dans ton cas tu peux utiliser "anna a;" plutôt que "anna* a = new anna();".

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Cheps Voir le message
    Le main ne doit pas être dans une classe, et tu ne peux en avoir qu'un pour ton projet (contrairement à Java par exemple).

    La manière correcte de déclarer ton tableau est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main()
    {
            anna::abonne Tab[cmax]={{"zzsss",7458},{"uuu",5555},{"ggg",2222},{"ooo",4444},{"îiij",8745}};
    }
    Il faut spécifier que abonne fait partie de anna.

    Ensuite fais gaffe à l'utilisation de "new", en C++ ça signifie que tu crées l'object dynamiquement et que tu devras toi-même libérer la mémoire avec un delete. Dans ton cas tu peux utiliser "anna a;" plutôt que "anna* a = new anna();".

    MERCI CHEPS le code marche maintenant a merveille enfin je veux dire le compilo est plus aimable(0 ERREUR 0 AVERTISSEMENT).
    MERCI encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'un petit coup de pouce pour mon mémoire
    Par Nicolas_Mktg dans le forum Présentations
    Réponses: 0
    Dernier message: 28/06/2012, 17h56
  2. [Fortran 95] Besoin d'un coup de pouce pour démarrer
    Par R_sponge dans le forum Fortran
    Réponses: 3
    Dernier message: 26/09/2007, 21h47
  3. besoin d'un coup de pouce pour strcmp
    Par echantillon dans le forum C
    Réponses: 17
    Dernier message: 04/01/2007, 20h43
  4. Besoin d'1 coup de pouce pour realiser une importation de BD
    Par gizmorambo dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/08/2005, 14h07

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