Comparaison d'entiers

Résolu
Utilisateur anonyme - 8 avril 2006 à 20:36
 Utilisateur anonyme - 9 avril 2006 à 11:52
Bonjour,
Alors petit problème facile pour vous je pense :

struct cd
{
char realisateur [64];
char titre [64];
char date [20];
char duree [64];
};


void remplissage (struct cd tab[], int* pcpt)
{
char rep [2];



do
{


cout << "Titre du film ? "<<endl;
gets (tab[*pcpt].titre);


cout << "Nom du realisateur ?"<<endl;
gets (tab[*pcpt].realisateur );

cout << "Date de sortie ? (jj/mm/aaaa)"<<endl;
gets (tab[*pcpt].date);

cout << "duree du film ? (min)" << endl;
gets (tab[*pcpt].duree);

comment je fais pour vérifier que la durée rentrer soit comprise entre [0,300] (j'ai essayé un strcmp mais je galère avec le pointeur)

tant que tab.duree < 0 ou tab.duree >300
saisir "erreur veuillez retaper une durée", tab.duree
fin tant que

20 réponses

nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
8 avril 2006 à 21:01
//Pour récupérer l'entier à partir de la chaîne :
int iDuree = atoi(tab[*pcpt].duree);

if((iDuree < 0) || (iDuree > 300))
{
cout << "Erreur de duree !" << endl;
exit(1);
}

Je pense que ça devrait marcher.
3
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
8 avril 2006 à 21:27
ah j'ai compris : met dans ta boule après le gets :
iDuree = atoi(tab[*pcpt].duree);

En fait tu changait la durée, mais pas iDuree ^^
3
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
8 avril 2006 à 21:42
Pour le problème des caractères, c'est car je pense que quand il n'y a pas un entier valide, la fonction renvoie 0.

Ta boucle devrait donc-être :

int iDuree = atoi(tab[*pcpt].duree);

while ((iDuree <= 0) || (iDuree > 300))
{
cout << "Erreur de duree !" << endl;
gets(tab[*pcpt].duree);
iDuree = atoi(tab[*pcpt].duree);
}

Mais le problème, c'est que tu ne peut plus avoir une durée égale à 0...
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 avril 2006 à 21:00
Bon oki. Si tu essaillait de mettre duree en int et à la place de gets tu fait
cin >> tab[*pcpt].duree
alors après tu pourra faire if((tab[*pcpt].duree < 0) !! (tab[*pcpt].duree > 300))

___________________________________________
Les plus grands esprits trouvent toujours une solution
0

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

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 avril 2006 à 21:01
if((tab[*pcpt].duree < 0) || (tab[*pcpt].duree > 300)) pardon j'avais mit des !!

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 avril 2006 à 21:03
A ouais ya aussi la métode de nightlord666

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
Utilisateur anonyme
8 avril 2006 à 21:15
ha oui tiens je me suis trompé j'ai déclarer duree en char XD
0
Utilisateur anonyme
8 avril 2006 à 21:23
int iDuree = atoi(tab[*pcpt].duree);


while ((iDuree < 0) || (iDuree > 300))
{
cout << "Erreur de duree !" << endl;
gets(tab[*pcpt].duree);
}

il ne veut pas sortir de la boucle, ou plutot quoi que je tape il y rentre !?
ps: j'ai fais cin ca marche pas, j'ai declarer duree en int ca marche pas a cause du pointeur snifff
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
8 avril 2006 à 21:26
Pourquoi tu utilises un pointeur ?
0
Utilisateur anonyme
8 avril 2006 à 21:36
Ben j'utilise des pointeurs parce que ça c'est une fonction, que j'appelerais plus tard dans mon Main, et je veux travaillé sur du reel et que ca enregistre ce que je tape donc j'use le pointeur pour ecrire.
(C'est ca je crois...?)
0
Utilisateur anonyme
8 avril 2006 à 21:39
par contre dernier probleme, si je tape a,b,c,... il passe a la suite, faudrais que taper un caractere ou une chaine de caractere ca me fasse rentrer dans la boucle
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
8 avril 2006 à 21:39
Si tu veut travailler sur du réel, il faudrait plutôt déclarer ton tableau de structures en pointeur, et laisser l'entier normal.

void remplissage (struct cd** tab, int pcpt)
0
Utilisateur anonyme
8 avril 2006 à 21:58
La ca marche, et puis j'ai plus le 0 c'est pas un drame, de tte facon un film qui dure 0 minute,c'est louche ^^
Pour les pointeurs, si je fais ta méthode ca ne marche pas, j'ai des erreurs partout left of '.xxxxxx' must have class/struct/union type, etc etc etc
Alors que ca marche très bien comme je l'ai fais, tu penses que ce n'est pas la bonne méthode si je veux travailler sur du reel ?
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
8 avril 2006 à 21:59
Au lieu d'un point c'est une flèche (->) car c'est un pointeur !
0
Utilisateur anonyme
8 avril 2006 à 22:01
//void remplissage (struct cd tab[], int *pcpt)
//void remplissage (struct cd *tab, int *pcpt)

les 2 fonctionnent
0
Utilisateur anonyme
8 avril 2006 à 22:03
de quoi un . ou une -> ??
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
8 avril 2006 à 22:06
struct cd* tab ----> C'est un tableau de cd (comme struct cd tab[])
int* pcpt ----> Inutile

La bonne solution pour travailler sur du réel :
struct cd** tab, int pcpt (avec des -> au lieu des .)
struct cd& tab[], int pcpt (je suis pas sur, mais ne nécessite aucun changement dans ton code)
0
Utilisateur anonyme
8 avril 2006 à 22:24
si tu le dis lol, je verrais ça lundi avec mon prof d'algo ^^ (parce que la ca me créer des erreurs tout partout)
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
9 avril 2006 à 01:22
On dit partout parce que y'a déjà le tout dans partout :(

if(!Meilleur("Joky")) return ERREUR;<
0
Utilisateur anonyme
9 avril 2006 à 11:52
tout partout partout partout ! mais bon c'était de l'humour laisse tombé
0
Rejoignez-nous