Pb de pointeurs !!

Signaler
-
 Utilisateur anonyme -
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

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Pour commencer :

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

Ensuite:

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

Shell
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
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

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: * & ...
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
char rep[2];
...
cin >> rep;

Shell

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...?

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...?

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...?

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...?

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 !!!
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Remplace les != par des = =

Shell
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
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

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 !!!!