Tester valeur lors d'une lecture

MrKro Messages postés 4 Date d'inscription dimanche 9 octobre 2005 Statut Membre Dernière intervention 6 décembre 2006 - 10 nov. 2005 à 22:01
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 11 nov. 2005 à 15:16
Voila je doit faire un programme qui lit des infos dans un fichier et les traite par la suite, en fait c'est pour coder des graphes. Le morceau de code qui me pose problème est la suivante


int nom, x, y;
f >> nom >> x >> y;

if(x != NULL || y != NULL)
{
Sommet s1(nom, x, y);
sommets.push_back(s1);
}


Vous me direz rien de bien méchant mais en fait il se peut que les données x et y ne soit pas présente dans le fichier que je lit et dans ce cas je ne doit pas créer de sommet. Mon problème est de vérifier la présence de ces données. je ne voit pas trop comment faire, ici je le comparait a null ce qui est faut puisque elle sont initialisé dans la deuxième ligne, elle peuvent l'etre avec n'importe quoi mais elle le sont.
Si vous voyez comment je peut faire .... Help me

5 réponses

tigood42 Messages postés 3 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 19 novembre 2005
10 nov. 2005 à 22:47
ohhhh, je sais pas trop, deja faut pas mettre un 'ou'(||), mais un 'et'(&&) je pense ds ton teste. Autrement, tu peu essayer de tester si x est bien compris ds un intervalle donnée et pareil pr y...
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
11 nov. 2005 à 13:53
Simple hypothèse, si tu lit directement c'est information dans ton
fichier, ces données sont au format texte ( a moin que tu ne les
convertise avant) et donc ta condition !NULL ne sert a rien car NULL
0 et donc tu ne sait pas comparer une donnée char avec un bool(ou
entier) comme ca. je te conseilerai de faire y != "".



Bon code

++all
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
11 nov. 2005 à 13:55
Oups pour le double post. De plus NULL est une constante du C et non du C++, enfin bon juste pour info ;)





++all
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 nov. 2005 à 15:05
deck_bsd> y est un entier, donc ton y != "" n'a pas trop de sens.

MrKro> Tu ne sais pas si la lecture a marché, donc tu ne peux tester x et y. Voici comment faire:

int nom, x, y;
if((f >> nom) && (f >> x) && (f >> y))
{
Sommet s1(nom, x, y);
sommets.push_back(s1);
}
0

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

Posez votre question
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
11 nov. 2005 à 15:16
vecchio, oui désoler je l'ai vu par après mais bon si il la directement
affecté ca valeur ne sera pas l'entier voulai mais le code ascii des
caractères. enfin pour ce que j'en dit.
0
Rejoignez-nous