 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
patrice brassard Guest
|
Posted: Fri Jul 22, 2005 11:34 pm Post subject: Probléme de boucle ? |
|
|
Mon prog est sensé effectué la tâche suivante, mais un problème, peut-être
avec la boucle
dans le main, l'empêche de bien l'accomplir. Est-ce que quelqu'un peut
m'aider à le débugger
svp.
Merci de votre collaboration!
Le programme doit afficher le menu suivant :
.. Appuyez sur 1 pour non-fumeurs
.. Appuyez sur 2 pour fumeurs
Si la réponse est 1, le programme attribue un siège dans un autobus de
non-fumeurs (1 à 40).
Dans le cas contraire, il attribue un siège dans un autobus de fumeurs (1 à
40). De plus, le
programme devrait afficher à l'écran un document de voyage qui indique si le
passager est
dans un autobus de fumeurs ou de non-fumeurs et combien de passagers il y a
dans l'autobus
//autobus.h
#ifndef AUTOBUS_H
#define AUTOBUS_H
#include <iostream>
using namespace std;
const int FUMEUR = 1;
const int NONFUMEUR = 2;
class autobus {
public:
autobus (int statutf) : statut (statutf),
nb_siege (40),
nb_siege_alloue (0) {
}
~autobus() {
}
int isFumeur () {
return statut;
}
int siegeAlloue() {
return nb_siege_alloue;
}
int reserverSiege() {
return (nb_siege - nb_siege_alloue ? nb_siege_alloue++ : 0);
}
private:
int nb_siege;
int nb_siege_alloue;
int statut ;
};
#endif
//Reservation.h
#ifndef RESERVATION_H
#define RESERVATION_H
#include "autobus.h"
#include <iostream>
using namespace std;
class Reservation {
public:
Reservation() {
autobus_fumeur = new autobus (FUMEUR);
autobus_non_fumeur = new autobus (NONFUMEUR);
}
~Reservation () {
delete autobus_fumeur;
delete autobus_non_fumeur;
}
int reserver_fumeur() {
return autobus_fumeur->reserverSiege();
}
int reserver_non_fumeur() {
return autobus_non_fumeur->reserverSiege();
}
int siege_alloue_fumeur() {
return autobus_fumeur->siegeAlloue();
}
int siege_alloue_non_fumeur() {
return autobus_non_fumeur->siegeAlloue();
}
private:
autobus* autobus_fumeur;
autobus* autobus_non_fumeur;
};
#endif
//file1.cpp
#include <iostream>
#include "reservation.h"
using namespace std;
int main(int argc, char **argv) {
Reservation reserv;
int reponse = 0;
int nb_siege;
char g;
//while (reponse != 3) {
do {
(reponse = 0);
cout << "Appuyez sur 1 pour Non-fumeurs "<< endl;
cout << "Appuyez sur 2 pour Fumeurs "<< endl;
cin >> reponse;
if (reponse == 1) {
nb_siege = reserv.reserver_non_fumeur();
}
if (nb_siege > 0) {
cout << "Non-fumeurs " << nb_siege << endl;
}
if (reponse == 2) {
nb_siege = reserv.reserver_fumeur();
}
//if (nb_siege > 0) {
if (nb_siege > 1) {
cout << "Fumeurs " << nb_siege << endl;
}
if (reponse == 3) {
cout << "Reponse invalide" << endl;
}
std::cout << "Appuyez sur une touche..." << std::endl;
std::cin >> g;
} while (reponse != 3);
return 0;
}
|
|
| Back to top |
|
 |
benoitB Guest
|
Posted: Mon Jul 25, 2005 3:06 am Post subject: Re: Probléme de boucle ? |
|
|
patrice brassard a écrit :
| Quote: | Mon prog est sensé effectué la tâche suivante, mais un problème, peut-être
avec la boucle
dans le main, l'empêche de bien l'accomplir. Est-ce que quelqu'un peut
m'aider à le débugger
svp.
Merci de votre collaboration!
Le programme doit afficher le menu suivant :
. Appuyez sur 1 pour non-fumeurs
. Appuyez sur 2 pour fumeurs
Si la réponse est 1, le programme attribue un siège dans un autobus de
non-fumeurs (1 à 40).
Dans le cas contraire, il attribue un siège dans un autobus de fumeurs (1 à
40). De plus, le
programme devrait afficher à l'écran un document de voyage qui indique si le
passager est
dans un autobus de fumeurs ou de non-fumeurs et combien de passagers il y a
dans l'autobus
//autobus.h
#ifndef AUTOBUS_H
#define AUTOBUS_H
#include <iostream
using namespace std;
const int FUMEUR = 1;
const int NONFUMEUR = 2;
class autobus {
public:
autobus (int statutf) : statut (statutf),
nb_siege (40),
nb_siege_alloue (0) {
}
~autobus() {
}
int isFumeur () {
return statut;
}
int siegeAlloue() {
return nb_siege_alloue;
}
int reserverSiege() {
return (nb_siege - nb_siege_alloue ? nb_siege_alloue++ : 0);
}
private:
int nb_siege;
int nb_siege_alloue;
int statut ;
};
#endif
//Reservation.h
#ifndef RESERVATION_H
#define RESERVATION_H
#include "autobus.h"
#include
using namespace std;
class Reservation {
public:
Reservation() {
autobus_fumeur = new autobus (FUMEUR);
autobus_non_fumeur = new autobus (NONFUMEUR);
}
~Reservation () {
delete autobus_fumeur;
delete autobus_non_fumeur;
}
int reserver_fumeur() {
return autobus_fumeur->reserverSiege();
}
int reserver_non_fumeur() {
return autobus_non_fumeur->reserverSiege();
}
int siege_alloue_fumeur() {
return autobus_fumeur->siegeAlloue();
}
int siege_alloue_non_fumeur() {
return autobus_non_fumeur->siegeAlloue();
}
private:
autobus* autobus_fumeur;
autobus* autobus_non_fumeur;
};
#endif
//file1.cpp
#include <iostream
#include "reservation.h"
using namespace std;
int main(int argc, char **argv) {
Reservation reserv;
int reponse = 0;
int nb_siege;
char g;
//while (reponse != 3) {
do {
(reponse = 0);
cout << "Appuyez sur 1 pour Non-fumeurs "<< endl;
cout << "Appuyez sur 2 pour Fumeurs "<< endl;
cin >> reponse;
if (reponse == 1) {
nb_siege = reserv.reserver_non_fumeur();
}
if (nb_siege > 0) {
cout << "Non-fumeurs " << nb_siege << endl;
}
if (reponse == 2) {
nb_siege = reserv.reserver_fumeur();
}
//if (nb_siege > 0) {
if (nb_siege > 1) {
cout << "Fumeurs " << nb_siege << endl;
}
if (reponse == 3) {
cout << "Reponse invalide" << endl;
}
std::cout << "Appuyez sur une touche..." << std::endl;
std::cin >> g;
} while (reponse != 3);
return 0;
}
Deux choses : |
1. A la place de :
int reserverSiege() {
return (nb_siege - nb_siege_alloue ? nb_siege_alloue++ : 0);
}
j'écrirai :
int reserverSiege ()
{
return (nb_siege_alloue < nb_siege ? nb_siege_alloue++ : 0);
}
2. J'écrirai le main ainsi :
int main(int argc, char** argv)
{
Reservation reserv;
int reponse = 0;
int nb_siege;
do {
cout << "Appuyez sur 1 pour Non-fumeurs "<< endl;
cout << "Appuyez sur 2 pour Fumeurs "<< endl;
cout << "(3 pour quitter...)"<< endl;
cin >> reponse;
if( reponse == 1 )
{
nb_siege = reserv.reserver_non_fumeur();
if( nb_siege > 0 )
cout << "Non-fumeurs " << nb_siege << endl;
else
cout << "Bus non-fumeur plein..." << endl;
}
if( reponse == 2 )
{
nb_siege = reserv.reserver_fumeur();
if( nb_siege > 0 )
cout << "Fumeurs " << nb_siege << endl;
else
cout << "Bus fumeur plein..." << endl;
}
cout << "Appuyez sur une touche..." << endl;
cin >> reponse;
}while( reponse != 3 );
return 0;
}
|
|
| Back to top |
|
 |
patrice brassard Guest
|
Posted: Tue Jul 26, 2005 6:52 pm Post subject: Re: Probléme de boucle ? |
|
|
"benoitB" <nordsudestouest (AT) voila (DOT) fr> a écrit dans le message de news:
42e45636$0$22275$8fcfb975 (AT) news (DOT) wanadoo.fr...
| Quote: | patrice brassard a écrit :
Mon prog est sensé effectué la tâche suivante, mais un problème,
peut-être avec la boucle
dans le main, l'empêche de bien l'accomplir. Est-ce que quelqu'un peut
m'aider à le débugger
svp.
Merci de votre collaboration!
Le programme doit afficher le menu suivant :
. Appuyez sur 1 pour non-fumeurs
. Appuyez sur 2 pour fumeurs
Si la réponse est 1, le programme attribue un siège dans un autobus de
non-fumeurs (1 à 40).
Dans le cas contraire, il attribue un siège dans un autobus de fumeurs (1
à 40). De plus, le
programme devrait afficher à l'écran un document de voyage qui indique si
le passager est
dans un autobus de fumeurs ou de non-fumeurs et combien de passagers il y
a dans l'autobus
//autobus.h
#ifndef AUTOBUS_H
#define AUTOBUS_H
#include <iostream
using namespace std;
const int FUMEUR = 1;
const int NONFUMEUR = 2;
class autobus {
public:
autobus (int statutf) : statut (statutf),
nb_siege (40),
nb_siege_alloue (0) {
}
~autobus() {
}
int isFumeur () {
return statut;
}
int siegeAlloue() {
return nb_siege_alloue;
}
int reserverSiege() {
return (nb_siege - nb_siege_alloue ? nb_siege_alloue++ : 0);
}
private:
int nb_siege;
int nb_siege_alloue;
int statut ;
};
#endif
//Reservation.h
#ifndef RESERVATION_H
#define RESERVATION_H
#include "autobus.h"
#include
using namespace std;
class Reservation {
public:
Reservation() {
autobus_fumeur = new autobus (FUMEUR);
autobus_non_fumeur = new autobus (NONFUMEUR);
}
~Reservation () {
delete autobus_fumeur;
delete autobus_non_fumeur;
}
int reserver_fumeur() {
return autobus_fumeur->reserverSiege();
}
int reserver_non_fumeur() {
return autobus_non_fumeur->reserverSiege();
}
int siege_alloue_fumeur() {
return autobus_fumeur->siegeAlloue();
}
int siege_alloue_non_fumeur() {
return autobus_non_fumeur->siegeAlloue();
}
private:
autobus* autobus_fumeur;
autobus* autobus_non_fumeur;
};
#endif
//file1.cpp
#include <iostream
#include "reservation.h"
using namespace std;
int main(int argc, char **argv) {
Reservation reserv;
int reponse = 0;
int nb_siege;
char g;
//while (reponse != 3) {
do {
(reponse = 0);
cout << "Appuyez sur 1 pour Non-fumeurs "<< endl;
cout << "Appuyez sur 2 pour Fumeurs "<< endl;
cin >> reponse;
if (reponse == 1) {
nb_siege = reserv.reserver_non_fumeur();
}
if (nb_siege > 0) {
cout << "Non-fumeurs " << nb_siege << endl;
}
if (reponse == 2) {
nb_siege = reserv.reserver_fumeur();
}
//if (nb_siege > 0) {
if (nb_siege > 1) {
cout << "Fumeurs " << nb_siege << endl;
}
if (reponse == 3) {
cout << "Reponse invalide" << endl;
}
std::cout << "Appuyez sur une touche..." << std::endl;
std::cin >> g;
} while (reponse != 3);
return 0;
}
Deux choses :
1. A la place de :
int reserverSiege() {
return (nb_siege - nb_siege_alloue ? nb_siege_alloue++ : 0);
}
j'écrirai :
int reserverSiege ()
{
return (nb_siege_alloue < nb_siege ? nb_siege_alloue++ : 0);
}
2. J'écrirai le main ainsi :
int main(int argc, char** argv)
{
Reservation reserv; int reponse = 0;
int nb_siege;
do {
cout << "Appuyez sur 1 pour Non-fumeurs "<< endl;
cout << "Appuyez sur 2 pour Fumeurs "<< endl;
cout << "(3 pour quitter...)"<< endl;
cin >> reponse;
if( reponse == 1 )
{
nb_siege = reserv.reserver_non_fumeur();
if( nb_siege > 0 )
cout << "Non-fumeurs " << nb_siege << endl;
else
cout << "Bus non-fumeur plein..." << endl;
}
if( reponse == 2 )
{
nb_siege = reserv.reserver_fumeur();
if( nb_siege > 0 )
cout << "Fumeurs " << nb_siege << endl;
else
cout << "Bus fumeur plein..." << endl;
}
cout << "Appuyez sur une touche..." << endl;
cin >> reponse;
}while( reponse != 3 );
return 0;
}
|
Merci pour ta réponse. Le main ne se comporte pas comme je le souhaiterais.
Lorsque l'usager appuie sur 1, l'affichage ne devrait pas afficher au départ
que l'autobus non-fumeur est plein. Il devrait afficher Non-fumeurs 1
Si l'usager appuie de nouveau sur 1, l'affichage indiquerait Non-fumeurs 2
Merci !
Patrice
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|