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 :

probleme avec affichage de variable chaine de caractère


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut probleme avec affichage de variable chaine de caractère
    bonjour a tous
    dans le cadre d'un exercice a l'école, on doit programmer un petit logiciel en c++ permettant la saisie d'élève. Tous allait bien jusqu'au moment de l'affichage( procédure affiche élève) de l'ensemble des élèves( après saisie bien sur) ou la le programme me concatène le sexe de l'élève n°1 avec le nom de l'élève 2 par exemple. Je vous laisse mon code si quelqu'un a le temps de regarder j'ai verifié plusieurs fois mais je trouve rien, dsl pour le si peut de commentaire
    merci d'avance
    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
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    #include<stdio.h>
    #include<iostream.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<process.h>
     
    #define nbeleves 50
     
    struct Televe
    {
    	char nom[20];
    	char prenom[20];
    	char sexe[1];
    };
     
    int NB=0;
    Televe tabclasse[nbeleves]; //tableau d'élève
     
    void menu()//procédure pour afficher le menu
    {
    	cout<<"****************************************************"<<endl;
    	cout<<"			Menu									 "<<endl;
    	cout<<"****************************************************"<<endl;
    	cout<<"Que voulez vous faire?"<<endl;
    	cout<<"1.Ajouter les eleves de la classe"<<endl;
    	cout<<"2.Inserer un eleve"<<endl;
    	cout<<"3.Consulter la liste des eleves"<<endl;
    	cout<<"4.Supprimer un eleve"<<endl;
    	cout<<"5.Quitter"<<endl;
    }
     
    bool verif_saisie(int *reponse,char repo[20] )//vérifie la saisie d'un entier
    {
     
    *reponse=atoi(repo);
    if(reponse==0)
    {
    	return false;
    }
    else
    {
    	return true;
    }
     
    }
     
    bool verif_longueur(char chaine[20], int longeurmax)//vérifie la longueur d'une chaine de caractère
    {
    	int len=0;
    		len=strlen(chaine);
    	if(len>longeurmax)
    	{
    		return false;
    	}
    	else
    	{
    		return true;
    	}
    }
    /*
    void viderChaine( int nbcaractere, char chaine) procédure en commentaire car pas au point
    {
    	int i;
    	for(i=0; i<nbcaractere; i++)
    	{
    		strcpy(chaine[i]," ");
    	}
    }
    */
     
     
     
    /*
    void triEleve() procédure en commentaire car pas au point
    {
     
    int i;
    int j=0;
    bool drapeau=true;
    char temp[20];
    char temp2[1];
    do
    {
    	drapeau=false;
     
    		for (i = 0; i < NB; i++)
    		{
     
    			if(strcmp(tabclasse[i].nom, tabclasse[i+1].nom)>0)
    		{
    			drapeau=true;
    			strcpy(temp,tabclasse[i].nom);
    			strcpy(tabclasse[i].nom,tabclasse[i+1].nom);
    			strcpy(tabclasse[i+1].nom,temp);
    			memset (temp, 0, sizeof (temp));
    			//viderChaine(20, temp[20]);
     
    			strcpy(temp,tabclasse[i].prenom);
    			strcpy(tabclasse[i].prenom,tabclasse[i+1].prenom);
    			strcpy(tabclasse[i+1].prenom,temp);
    			memset (temp, 0, sizeof (temp));
    			//viderChaine(20, temp[20]);
     
    				strcpy(temp2,tabclasse[i].sexe);
    			strcpy(tabclasse[i].sexe,tabclasse[i+1].sexe);
    			strcpy(tabclasse[i+1].sexe,temp2);
    			memset (temp2, 0, sizeof (temp2));
    			//viderChaine(1, temp2[1]);
    		}
     
    	}
    }
    while(drapeau==false);
    }
    */
     
    void saisieEleve() //procédure permettant la saisie d'un éléve dans le tableau d'élèves
    {
    char result[1];
    int choix=0;
    do
    {
    	do
    	{
    		cout<<"veuillez saisir le nom de l'eleve Numero "<<NB<<endl;
    		cin>>tabclasse[NB].nom;
    		if(verif_longueur(tabclasse[NB].nom, 20)==false)
    		{
    			cout<<"veuillez rentrer un nom cohérent!"<<endl;
    		}
    	}	
    	while(verif_longueur(tabclasse[NB].nom, 20)==false);
     
    	do
    	{
    		cout<<"veuillez saisir le prenom de l'eleve Numero "<<NB<<endl;
    		cin>>tabclasse[NB].prenom;
    		if(verif_longueur(tabclasse[NB].nom, 15)==false)
    		{
    			cout<<"veuillez rentrer un prenom cohérent!"<<endl;
    		}
    	}	
    	while(verif_longueur(tabclasse[NB].prenom, 20)==false);
     
    	do
    	{
    		cout<<"veuillez saisir le sexe( H ou F) de l'eleve Numero "<<NB<<endl;
    		cin>>tabclasse[NB].sexe;
    		if((strcmp((tabclasse[NB].sexe), "F")==1) && (strcmp((tabclasse[NB].sexe), "H")==1))
    		{
    			cout<<"Vous devez saisir H ou F!"<<endl;
    		}
    	}	
    	while( (strcmp((tabclasse[NB].sexe), "F")==1) && (strcmp((tabclasse[NB].sexe), "H")==1) );
    	cout<<tabclasse[NB].sexe;
    //verif_longueur(tabclasse[NB].sexe, 1)==false &&
    	NB=NB+1;
    	do
    	{
    		cout<<"Voulez_vous saisir un autre eleve? (y/n)"<<endl;
    		cin>>result;
    		if( (strcmp(result,"y")==1) && (strcmp(result,"n")==1) )
    		{
    			cout<<"vous devez repondre y ou n"<<endl;
    		}
    	}
    	while( (strcmp(result,"y")==1) && (strcmp(result,"y")==1) );//&& verif_longueur(result, 1)==false 
    }
    while(strcmp(result, "y")==0);
    //triEleve();
    }
     
    void saisieUnEleve()
    {
    	do
    	{
    		cout<<"veuillez saisir le nom de l'eleve Numero "<<NB<<endl;
    		cin>>tabclasse[NB].nom;
    		if(verif_longueur(tabclasse[NB].nom, 20)==false)
    		{
    			cout<<"veuillez rentrer un nom cohérent!"<<endl;
    		}
    	}	
    	while(verif_longueur(tabclasse[NB].nom, 20)==false);
     
    	do
    	{
    		cout<<"veuillez saisir le prenom de l'eleve Numero "<<NB<<endl;
    		cin>>tabclasse[NB].prenom;
    		if(verif_longueur(tabclasse[NB].nom, 15)==false)
    		{
    			cout<<"veuillez rentrer un prenom cohérent!"<<endl;
    		}
    	}	
    	while(verif_longueur(tabclasse[NB].prenom, 20)==false);
     
    	do
    	{
    		cout<<"veuillez saisir le sexe( H ou F) de l'eleve Numero "<<NB<<endl;
    		cin>>tabclasse[NB].sexe;
    		if((strcmp((tabclasse[NB].sexe), "F")==1) && (strcmp((tabclasse[NB].sexe), "H")==1))
    		{
    			cout<<"Vous devez saisir H ou F!"<<endl;
    		}
    	}	
    	while( (strcmp((tabclasse[NB].sexe), "F")==1) && (strcmp((tabclasse[NB].sexe), "H")==1) );
    //verif_longueur(tabclasse[NB].sexe, 1)==false &&
    	NB=NB+1;
    //	triEleve();
     
    }
     
    void afficheEleve()// procédure permettant l'affichage d'un élèves, c'est elle qui me pose un problème
    {
    	int i=0;
    	while(i<NB)
    	{
     
    		cout<<"- eleve numero "<<i<<endl;
    		cout<<"nom : "<<tabclasse[i].nom<<endl;
    		cout<<"prenom : "<<tabclasse[i].prenom<<endl;
    		cout<<"sexe : "<<tabclasse[i].sexe<<endl;
    		i=i+1;
     
    	}
     
    }
     
    void supprimeEleve()// procédure pour supprimer un élève, pas encore tester
    {
    	int num;
    	char rep[20];
    	cout<<"quelle eleve voulez-vous suprimer?"<<endl;
    	afficheEleve();
    	do
    	{
    	cout<<"veuillez saisir le numero de l'Eleve a supprimer"<<endl;
    	cin>>rep;
    	if(num<0 || num>NB || verif_saisie(&num, rep))
    	{cout<<"Ce numero ne corresond a aucun eleve"<<endl;}
    	}
    	while(num<0 && num>NB);
    	strcpy(tabclasse[num].nom," ");
    	strcpy(tabclasse[num].prenom," ");
    	strcpy(tabclasse[num].sexe," ");
    }
     
     
    void main() //programme principal
    {
    	int choix=0;
    	char rep[20];
     
    		do
    	{
     
    	menu();
     
     
    	do
    		{
    		cout<<"Entrez votre choix"<<endl;
    		cin>>rep;
    		if(verif_saisie(&choix, rep)==false || choix<1 || choix>5)
    		{
    			cout<<"erreur de saisie votre choix doit etre compris entre 1 et 5"<<endl;
    		}
     
    		}
    	while(verif_saisie(&choix, rep)==false || choix<1 || choix>5);
     
    	if(choix==1)
    	{
    		saisieEleve();
    	}
     
    	else if(choix==2)
    	{
    		saisieUnEleve();
    	}
     
    	else if(choix==3)
    	{
    		afficheEleve();
    	}
     
    	else if(choix==4)
    	{
    		supprimeEleve();
    	}
     
    	}
    	while(choix!=5);
    }
    Balise Code rajoutée par Poukill, merci d'y penser à l'avenir !

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Pleins de chose à dire:
    * UTILISEZ LA BALISE CODE (le #) POUR PASTER VOS CODES !!!!!!

    *Aide nous à t'aider(en gros cible ton problème, là ou ca plante).
    J'ai la flemme de lire tout ce code.

    *c'est un affreux mélange de C et de C++. Choisi ton camp : l'un ou l'autre mais pas les deux.

    *Indente !!

    *on préfère un const int plutôt qu'un define

    *les std::string ca existe pour remplacer les tableau de char

    *bouh !! variable globales pas bien.

    *les std::vector ca existe. pour remplacer les tableaux statique

    *utilise plutôt une référence qu'un pointeur

    *Tes includes
    #include<stdio.h> //inutile en C++
    #include<iostream.h> //deprécié est devenu iostream
    #include<string.h> //inutile en C++
    #include<stdlib.h> //inutile en C++
    #include<math.h> //devient cmaths
    #include<process.h> //inutile en C++

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    +1

    La moindre des choses, c'est d'essayer de donner un ECM = Exemple Complet Minimal !

  4. #4
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    +1. Même si... soyez pas si dur visiblement il débute et peut être que les références et la STL seront vu dans la suite de son cours.

    Je rajouterai aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    bool verif_saisie(int *reponse,char repo[20] )//vérifie la saisie d'un entier
    {
     
    *reponse=atoi(repo);
    if(reponse==0)
    {
    	return false;
    }
    else
    {
    	return true;
    }
     
    }
    ce genre de chose s'écrit de façon beaucoup plus efficace et plus lisible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bool verif_saisie(int *reponse,char repo[20] )
    { 
    *reponse=atoi(repo);
    return reponse!=0;
    }
    (sans considérer le bien-fondé d'une telle fonction (int *reponse serai avantageusement remplacé pas int &reponse par exemple))

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(choix==1)
    	{
    		saisieEleve();
    	}
     
    	else if(choix==2)
    	{
    		saisieUnEleve();
    	}
    /*...*/
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    switch(choix)
    {
      case 1 :saisieEleve();break;
      case 2 : saisieUnEleve();break;
    /*...*/
    }

    Pour ton problème iniital tu dois nous montrer un exemple d'exécution en précisant bien là ou ça bug et si tu as une idée de où et pourquoi dans ton code.
    On gagnera du temps.
    Mais déjà simplifie ton code en utilisant au maximum les conseils de Davidbrcz

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par befalimpertinent Voir le message
    +1. Même si... soyez pas si dur visiblement il débute et peut être que les références et la STL seront vu dans la suite de son cours.
    Ce qui m'inquiète plus, c'est que c'est un cours de C++, et visiblement, ce cours ne commence pas par expliquer ce qu'est une classe, un conteneur ou une chaîne de caractère et les flux. Là, ce n'est pas bobby51 que je critique (loin de là) mais le responsable du cours, qui me semble un peu léger.

    Citation Envoyé par Davidbrcz
    bouh !! variable globales pas bien.
    Yep. A bas std::cout!

  6. #6
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    Merci pour tous ces conseil c'est sympa
    En ce qui concerne les conseils de Davidbrcz,
    * UTILISEZ LA BALISE CODE (le #) POUR PASTER VOS CODES !!!!!!: ?????? je vois pas ce qui veut dire, si quelqu'un veu bien m'expliquer, pour le melange de C et de C++, c'est comme ca que je l'ai appris pareil pour la déclaration des constantes et les variables globales servent a eviter de passer des paramètres a chaque fois
    enfin bon je crois que j'ai besoin d'un bon complément de cours
    pour en revenir au probleme, je pense qu'il se situe au niveau de la procédure afficheEleve

    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
    void afficheEleve()// procédure permettant l'affichage des élèves
    {
    	int i=0;
    	while(i<NB)
    	{
     
    		cout<<"- eleve numero "<<i<<endl;
    		cout<<"nom : "<<tabclasse[i].nom<<endl;
    		cout<<"prenom : "<<tabclasse[i].prenom<<endl;
    		cout<<"sexe : "<<tabclasse[i].sexe<<endl;
    		i=i+1;
     
    	}
     
    }
    je vous donne un exemple
    dans le programme je choisi l'option ajouter les élèves d'une classe
    veuilles saisir nom: gourdon
    prenom: julien
    sexe: H
    voulez vous saisir un autre élève(y/n)y

    veuilles saisir nom: durant
    prenom: romain
    sexe: H
    voulez vous saisir un autre élève(y/n)y

    veuilles saisir nom: guibert
    prenom: salomé
    sexe: F
    voulez vous saisir un autre élève(y/n)n
    retour au menu
    choix de l'option consulter la liste des élèves
    affichage:
    -eleve N°0
    nom: gourdon
    prenom: Julien
    sexe: Hdurant
    -eleve N°1
    nom: durant
    prenom: romain
    sexe: Hguibert
    -eleve N°2
    nom: guibert
    prenom: salomé
    sexe:F

    vous voyez donc le probleme ca concatène le sexe de l'eleve avec le nom de la personne qui la suit, j'ai reverifié mon code et nul part je vois une erreur qui saute aux yeux
    merci d'avance pour vos réponses

    P.S: tu as raison

  7. #7
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Ce qui m'inquiète plus, c'est que c'est un cours de C++, et visiblement, ce cours ne commence pas par expliquer ce qu'est une classe, un conteneur ou une chaîne de caractère et les flux. Là, ce n'est pas bobby51 que je critique (loin de là) mais le responsable du cours, qui me semble un peu léger.
    Alors là, je suis totalement d'accord avec toi.
    C'est quoi ces profs nom de diou !!! Je suis presque sûr que je ferai un meilleur cours qu'eux;

    Citation Envoyé par Emmanuel Deloget Voir le message

    Yep. A bas std::cout!
    Ok, owend là.
    Je voulais dire à bas les variables globales écritent par soi.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    ben qu'on apprenne le C puis le C++ ça me choque pas. Ce qui est important c'est de dire: "ça c'est du C", "maintenant ça c'est du C++".

    On évite les mélanges. Donc pour la partie C, tu as plus de chance de trouver des réponses sur le forum C.

  9. #9
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    En ce qui concerne ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct Televe
    {
    	char nom[20];
    	char prenom[20];
    	char sexe[2];
    };
    1 char pour 'F' ou 'H' et 1 char pour le 0 terminal des chaines.

  10. #10
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    merci diogène! le probleme est résolu, je croyai qu'en fesant cela je créant un tableau d'un caractère ,je savai pas qu'il fallait mettre 2 au lieu de 1
    sinon, il n'existe pas en C++ un type caractère( sans le [] et avec les quotes) comme en algo?

  11. #11
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par bobby51 Voir le message
    merci diogène! le probleme est résolu, je croyai qu'en fesant cela je créant un tableau d'un caractère ,je savai pas qu'il fallait mettre 2 au lieu de 1
    Tu crées un tableau avec le nombre de caractères spécifiés. Mais les chaînes de caractères style "chaîne C" se terminent par un caractère supplémentaire ( 0 ou '\0') et il faut prévoir la place pour le mettre.

    sinon, il n'existe pas en C++ un type caractère( sans le [] et avec les quotes) comme en algo?
    le type char (si j'ai compris ta question). Les constantes caractères se mettent entre guillemets simples : 'F'

  12. #12
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    je veux bien mais si je remplace mon char sexe[2] par un char sexe et je remplace mes variable " " concerné par ' ', j'ai en tout de 18 erreurs de type
    'strcmp' : cannot convert parameter 1 from 'char' to 'const char *'

  13. #13
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par bobby51 Voir le message
    je veux bien mais si je remplace mon char sexe[2] par un char sexe et je remplace mes variable " " concerné par ' ', j'ai en tout de 18 erreurs de type
    'strcmp' : cannot convert parameter 1 from 'char' to 'const char *'
    strcmp, strcpy,... ne marchent qu'avec des chaînes de caractères. Pour comparer deux caractères, c'est plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tabclasse[NB].sexe ==  'F')

  14. #14
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    merci a tous pour votre aide
    j'ai remplacé mes chaine de caractère de 1 caractère( completement inutile) par des caractères, cela marche a merveille.
    J'aurai juste deux derniers petite question a vous poser:
    -quand je demande de saisir un caractèe, si la personne en écrit plusieurs, le message d'erreur va s'afficher autant de fois qu'il y a de caractères, comment remedier à cela?
    - j'ai des conditionnelles et des boucles pour que l'utilisateur ecrive bien ce que je lui demande( un caractère, une chaine ou un entier par exemple), mais quand je lui demande un caractère spéicfique( par ex H ou F), ca marche quand il tape un caracère différent mais il accepte la saisie d'entier, y aurait-il un truc dans le genre d'atoi mais pour les caractères, voir les chaines de caractères?
    promis après j'arrete de vous embeter

Discussions similaires

  1. [XSLT] probleme avec if et variable
    Par jaktok dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/08/2006, 01h13
  2. [Configuration] probleme avec affichage photo
    Par arti2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 18/06/2006, 00h23
  3. Réponses: 3
    Dernier message: 01/06/2006, 20h45
  4. Probleme avec passage de variables par formulaires
    Par cortex007 dans le forum Langage
    Réponses: 5
    Dernier message: 17/12/2005, 15h08
  5. Probleme avec affichage de date
    Par Wongmaster dans le forum Access
    Réponses: 27
    Dernier message: 24/12/2004, 21h51

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