Pb de pointeurs !!

Utilisateur anonyme - 6 mars 2006 à 11:01
 Utilisateur anonyme - 6 mars 2006 à 15:54
Bonjour CPP ! (ici un p'tit nouveau deVB qui se met au C++)
Alors voila, dans ce petit programme, j'ai une erreur, je le lance, 0 erreur, mais lors de la demande voulez-vous continuer, si je met o, il bloque et fenetre d'erreur windows blabla.


#include
#include <string.h>


struct eleve {
char nom [20];
char prenom [20];
char classe [5];
char date[10];
float note [5];
};



void remplissage (eleve tab[])
{
int i=0;
int j=0;
char* rep;


do
{
cout << "entrez le nom de l'eleve" <<endl;
cin >> tab[i].nom;
cout << "entrez le prenom de l'eleve" <<endl;
cin >> tab[i].prenom;
cout << "entrez la classe de l'eleve" <<endl;
cin >> tab[i].classe;
cout << "entrez la date de naissance de l'eleve" <<endl;
cin >> tab[i].date;


for (j=0; j<5; j++)
{
cout << "entrez une note" <<endl;
cin >> tab[i].note[j];
}

cout << "voulez-vous continuer ? o/n" <<endl;
cin >> *rep;


while ((strcmp(rep,"o")) || (strcmp(rep,"n")))
{
cout << "erreur, veuillez repondre par o ou n"<<endl;
cin >> *rep;
}
i++;
}
while (strcmp (rep,"o"));
}



void main ()
{
int a=0;
eleve tablo[4];

for (a=0;a<5;a++)
{
remplissage (tablo);
}
}

12 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 mars 2006 à 11:21
Pour commencer :

for (a=0;a<4;a++)
{
remplissage (tablo[a]);
}

Ensuite:

void remplissage (eleve * mon_eleve)
{
...
}

Shell
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 mars 2006 à 11:24
Il faut aussi que tu remplaces tous les "tab[i]." par des "mon_eleve->"

Tu supprime aussi ta variable "int i;", ty ne gardes que le "int j;"

Après tout ca, ca devrait mieux aller. A toi de corriger les autres erreurs si nécéssaire.

Shell
0
Utilisateur anonyme
6 mars 2006 à 11:44
ca marche toujours pas lol



void remplissage (eleve tab[])

{

int i=0;

int j=0;

char* rep;

...........

while ((strcmp(rep,"o")) || (strcmp(rep,"n")))

{

cout << "erreur, veuillez repondre par o ou n"<<endl;

cin >> *rep;

}

i++;

}

while (strcmp (rep,"o"));

}



c'est au niveau de rep que ca marche pas, je sais pas quoi mettre: * & ...
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 mars 2006 à 11:49
char rep[2];
...
cin >> rep;

Shell
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
6 mars 2006 à 11:58
Bon deja avec ton char rep[2], windows ne plante plus,cool ;)
Mais j'ai: voulez vous continuer? o ou n, moi je tape o et il me dit: erreur veuillez repondre par o ou n, etc etc etc(mm si je tape o,n,a,k,e,etc), en fait il ne prend pas ma reponse je pense...?
0
Utilisateur anonyme
6 mars 2006 à 11:58
Bon deja avec ton char rep[2], windows ne plante plus,cool ;)
Mais j'ai: voulez vous continuer? o ou n, moi je tape o et il me dit: erreur veuillez repondre par o ou n, etc etc etc(mm si je tape o,n,a,k,e,etc), en fait il ne prend pas ma reponse je pense...?
0
Utilisateur anonyme
6 mars 2006 à 11:59
Bon deja avec ton char rep[2], windows ne plante plus,cool ;)
Mais j'ai: voulez vous continuer? o ou n, moi je tape o et il me dit: erreur veuillez repondre par o ou n, etc etc etc(mm si je tape o,n,a,x,etc), en fait il ne prend pas ma reponse je pense...?
0
Utilisateur anonyme
6 mars 2006 à 12:00
Bon deja avec ton char rep[2], windows ne plante plus,cool ;)
Mais j'ai: voulez vous continuer? o ou n, moi je tape o et il me dit: erreur veuillez repondre par o ou n, etc etc etc(mm si je tape o,n,a,x,etc), en fait il ne prend pas ma reponse je pense...?
0
Utilisateur anonyme
6 mars 2006 à 12:27
char rep[2];
..........
cout << "voulez-vous continuer ? o/n" <<endl;
cin >> rep;



while ((strncmp(rep,"o",1)!=0) && (strncmp(rep,"n",1)!=0))
{
cout << "erreur, veuillez repondre par o ou n"<<endl;
cin >> rep;
}
i++;
}
while (strncmp (rep,"o",1));
}

que je tape O ou N il continue !!!
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 mars 2006 à 14:24
Remplace les != par des = =

Shell
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 mars 2006 à 14:27
Ah non attant, j'ai loupé un truc.
strncmp est sensible a la casse. N est différent de n et pareil pour O et o

Shell
0
Utilisateur anonyme
6 mars 2006 à 15:54
oula j'ai eu un p'tit bug avant, je pensé pas que ca marchais mais en fait si, dsl pour les répétition lol. Bon revenons au problème, oui ne t'inquiete pas je fais la difference entre Oo et Nn, je tape o ou n et il continue.
J'essayerai ta solution mercredi, mais en tout cas merci pour tout !!!!
0
Rejoignez-nous