Aide pour programme

Aide pour programme - C++ - Programmation

Marsh Posté le 12-06-2005 à 17:09:04    

Salut à tous,
 
Je debute depuis ce matin dans le c++, et j'essais de créer un prog....
 
Voici les lignes:
 

Code :
  1. #include <iostream.h>
  2. void main()
  3. {
  4. //Deffinition des variables
  5. int choix;
  6. double a, b , c, d;
  7. //But du programme
  8. cout<<"Ceci est une calculatrice qui peut additionner, soustraire, multiplier ou diviser jusqu'a 4 nombre ensemble"<<endl;
  9. //Retour à la ligne
  10. cout<<endl;
  11. //Choix entre les multiplication division soustraction ou addition
  12. cout<<"Je veux:\n1-Additionner\n2-Soustraire\n3-Multiplier\n4-Diviser"<<endl;
  13. //Choix à taper
  14. cout<<endl;
  15. cout<<endl;
  16. cout<<endl;
  17. char fin;
  18. cout<<"Appuyer sur une touche pour quitter"<<endl;
  19. cin>>fin;
  20. }


 
Le probleme est que je ne sais pas comment continuer pour faire le choix entre 1/2/3/4 pour les different modes de calculs....
 
Et ensuite, quand on fait un choix, que sa renvois vers quelque chose....
 
Si vous pouvez m'aider....
 
Merci d'avance! [:athlonxp2100+]


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 17:09:04   

Reply

Marsh Posté le 12-06-2005 à 17:12:32    

et 15€ et un mars aussi ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-06-2005 à 17:13:45    

Ben nan c'est simplement que je demande de l'aide, je pensait qu'un forum était fais pour sa...
non?


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 17:21:22    

Dis, tu as cherché dans les pages d'or ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-06-2005 à 17:21:38    

Les pages d'or?


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 17:22:33    

c'est un expression :o
 
fait un recherche (google, koders, forums) avant de poser un question :o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-06-2005 à 17:23:15    

bin tu utilises cin pour recuperer l'entrée utilisateur et tu fais un switch dessus

Reply

Marsh Posté le 12-06-2005 à 17:27:19    

no comment.


Message édité par subshadow le 12-06-2005 à 19:23:23

---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 17:27:29    

Merci chris!


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 17:27:56    

vla que je vais encore me faire gueuler dessus alors que j'aide [:pingouino]

Reply

Marsh Posté le 12-06-2005 à 17:27:56   

Reply

Marsh Posté le 12-06-2005 à 17:29:55    

Non chris, c'est pas toi! ;)
 
C'est kangoOl qui m'envois vers google! ;)


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 19:18:29    

Taz a vu ce topic ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 12-06-2005 à 19:19:02    

on s'en fout non ?

Reply

Marsh Posté le 12-06-2005 à 19:25:38    

Chrisbk, sa m'a bien aidé ce que tu m'a dis...
 
J'ai reussi à faire la fonction switch, et j'ai appris pas mal de chose....
 
Mais la, malgres mes recherches, je ne trouve pas comment allez plus loins...
 
C'est à dire, dans mon switch, j'ai 4 case,  donc qui doivent renvoyer vers quelque chose, mais comment faire ces quelques choses?
 
Comment les introduire je veux dire....
 
Tu vois comment faire?


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 19:30:18    

switch(monInt) {
 case 1 :
    ...  
    break;
 case 2 :  
    ...
    break;
}
 
 
tu remplace les ... par ce qui t'interesse

Reply

Marsh Posté le 12-06-2005 à 19:58:21    

Code :
  1. //Choix entre les multiplication division soustraction ou addition
  2. cout<<"Je veux:\n1-Additionner\n2-Soustraire\n3-Multiplier\n4-Diviser"<<endl;
  3. //Choix à taper
  4. cin>>choix;
  5. //Switch pour le choix
  6. switch (choix)
  7. {
  8. case 1 : choix = 1;
  9. case 2 : choix = 2;
  10. case 3 : choix = 3;
  11. case 4 : choix = 4;
  12. default : cout<<"Erf, t'es con ou quoi? Tu sais pas compter jusqu'a 4?";
  13. }


 
C'est ce que j'avais fais justement, mais c'est après que je ne sais pas comment faire....
Si je tape "1" par exemple, je devrais allé à la sous categorie: addition, mais comment faire cette sous categorie?
 
PS: Et à quoi sers le break? Je n'ai pas d'erreur de compil sans sa....
 
Encore merci de ton aide!


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 20:02:24    

Le break permet de sortir du switch une fois que tu as fini avec le cas en cours.
Sinon, il exécutera tout à partir du cas trouvé, jusqu'à la fin du switch.

Reply

Marsh Posté le 12-06-2005 à 20:05:21    

A oki je vois, donc il est très necessaire.
Merci l'ami! ;)


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 20:05:44    

1- Tes catégories, tu les mets dans les "case" [:pingouino]
2- Le break... le switch-case du C/C++ utilise le principe du fall-through.
Qu'est-ce que ça veut dire?
Tout simplement que quand tu arrives à la fin du "case 1", le programme va continuer non pas parce ce qui se trouve à la fin du switch mais par le "case 2".
 
Donc dans ton code si on rentre "1", le programme va exécuter:

Code :
  1. choix=1;
  2. choix=2;
  3. choix=3;
  4. choix=4;
  5. cout<<"Erf, t'es con ou quoi? Tu sais pas compter jusqu'a 4?";


et non pas simplement

Code :
  1. choix = 1;


J'ajouterais que les commandes sont quelque peu inutiles, dans la mesure où à chaque fois tu réaffectes dans "choix" la valeur qui y est déjà -_-
 
Donc ce que tu dois faire:

Code :
  1. switch(choix)
  2. {
  3.     case 1:
  4.         // Traitement en cas d'addition
  5.         break; // pour ne pas utiliser le fall-through
  6.     case 2:
  7.         // Traitement en cas de soustraction
  8.         break;
  9.     case 3:
  10.         // Traitement en cas de multiplication
  11.         break;
  12.     case 4:
  13.         // Traitement en cas de division
  14.         break;
  15.     default:
  16.         // Traitement en cas d'erreur de saisie
  17. }
  18. // Suite du code


subshadow a écrit :

A oki je vois, donc il est très necessaire.
Merci l'ami! ;)


Il n'est pas nécessaire.
Il est important de savoir l'utiliser, nuance, mais on peut vouloir utiliser le fall-through, par exemple si on a des traitements qui s'effectuent sur plusieurs branches du switch.


Message édité par Normad le 12-06-2005 à 20:06:51

---------------
[Masklinn intérimaire Vediorbis] Kami-sama wa Ecchi ga dai-kirai desu!
Reply

Marsh Posté le 12-06-2005 à 20:13:00    

Merci beaucoup normad! :jap:
 
Par contre, j'ai quelques difficultées la!!!
 
Enfait, le "case 1" veux dire "choix=1"???
 
Traitement en cas d'addition, etc, sa veus dire quoi traitement?  
 
Desolé de toutes ces questions, mais je debute... :sweat:  


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 20:18:57    

subshadow a écrit :

Merci beaucoup normad! :jap:
 
Par contre, j'ai quelques difficultées la!!!
 
Enfait, le "case 1" veux dire "choix=1"???


Oui
switch(xyz) va dire au compilateur "teste les valeurs de xyz"
et les "case ijk" signifient "si la valeur testée [dans le switch] est ijk alors fait ça"
 
Donc quand t'as

Code :
  1. switch(x) { case 1: /* code */ }


ben le /* code */ va s'effectuer si x==1

Citation :

Traitement en cas d'addition, etc, sa veus dire quoi traitement?


Le traitement, ce sont les opérations que tu effectues.
Tu as une entrée, tu traites ton entrée (effectue des traitements dessus > des calculs par exemples) et tu récupères une sortie.


---------------
[Masklinn intérimaire Vediorbis] Kami-sama wa Ecchi ga dai-kirai desu!
Reply

Marsh Posté le 12-06-2005 à 20:21:19    

Si tu es dans le case 1, ça veut dire que l'utilisateur veut faire une addition, donc à toi de l'amener à faire une addition, par exemple :
 
demander a,demander2,retourner a+b.
 

Code :
  1. case 1:
  2. int a,b;
  3. cin>>a;
  4. cin>>b;
  5. cout<<"Resultat de l'addition :"<<a<<" + "<<b<<" = "<<a+b;


 

Reply

Marsh Posté le 12-06-2005 à 20:21:45    

subshadow a écrit :

Merci beaucoup normad! :jap:
 
Par contre, j'ai quelques difficultées la!!!
 
Enfait, le "case 1" veux dire "choix=1"???
 
Traitement en cas d'addition, etc, sa veus dire quoi traitement?  
 
Desolé de toutes ces questions, mais je debute... :sweat:


Oui, apparement "case 1" veut dire "choix=1" et le traitement en cas d'addition, c'est ce que le programme va faire si l'utilisateur choisi de faire une addition : tu demande à l'utilisateur de rentrer deux chiffres successivement, et après le programme additionne les deux entrées. :)


---------------
Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Reply

Marsh Posté le 12-06-2005 à 21:16:18    

Oki merci à tous, j'essais sa!
Mais mon but de faire avec 4 termes, sa va etre très dur....


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2005 à 22:28:29    

Sa y es j'ai reussi! :)
Merci à tous!
 
Seulement, encore besoin de votre aide....
 

Code :
  1. case 1 :
  2.     cout<<"Entrer les termes a additionner:"<<endl;
  3.     //Definition de la valeur des termes
  4.     cout<<"a=";
  5.     cin>>a;
  6.     cout<<"b=";
  7.     cin>>b;
  8.     cout<<"c=";
  9.     cin>>c;
  10.     cout<<"d=";
  11.     cin>>d;


 
Voila, enfait, l'utilisateur est obliger de rentrer 4 termes à additionner, mais je voudrais qu'il puisse en rentrer  2 3 ou 4 comme il veux....
 
J'ai pensé refaire un switch par dessus, mais bon....
 
Alors, qu'en pensez vous?


---------------
Mon Topic à Upper
Reply

Marsh Posté le 13-06-2005 à 00:51:35    

Esce que tu prefere qu'il dise à l'avance le nombre de termes qu'il souhaite entrer ou es ce qu'une fin de saisie de terme se caracterise par quelque chose de particulier (comme un caractère * ou ce que tu veux) ?
 
Sinon ce que je peux te conseiller c'est pas un switch (lol ca risque d'etre super lourd) mais de faire une boucle où le nombre d'executions correspond au nombre de termes (ou au nombre de termes -1, tout dépend de comment tu fais ton algo).
 
Enfin mon principal conseil serait quand même de bien penser l'algorithme de ton programme plutot que de vouloir sortir des switch à chaque coin de rue  ;)
 
EDIT: Un autre petit conseil: une addition de 4 termes n'implique pas la présence de 4 variables, imagine je veux additionner 1000 termes... tu crois que je vais m'amuser à déclarer 1000 variables ?


Message édité par mcyrb le 13-06-2005 à 01:07:29
Reply

Marsh Posté le 13-06-2005 à 07:45:13    

Merci!!!!
 
Mais non, je prefere le caractere * ou autre qui designe qu'il n'ya pas de nombre....
 
Je pense que ce sera plus court.....
 
Et pour ton edit, j'ai pas tout compris....?


---------------
Mon Topic à Upper
Reply

Marsh Posté le 13-06-2005 à 12:28:09    

subshadow a écrit :

Merci!!!!
 
Mais non, je prefere le caractere * ou autre qui designe qu'il n'ya pas de nombre....
 
Je pense que ce sera plus court.....
 
Et pour ton edit, j'ai pas tout compris....?


 
Mon edit signifie que:

Code :
  1. cout << "a=";
  2. cin >> a;
  3. cout << "b=";
  4. cin >> b;
  5. cout << "c=";
  6. cin >> c;
  7. cout << "d=";
  8. cin >> d;
  9. int resultat = a + b + c + d;
  10. cout << "Résultat : " << resultat << endl;


Equivaut à:

Code :
  1. cout << "a=";
  2. cin >> a;
  3. cout << "b=";
  4. cin >> b;
  5. a = a + b;
  6. cout << "c=";
  7. cin >> b;
  8. a = a + b;
  9. cout >> "d=";
  10. cin >> b;
  11. a = a + b;
  12. cout << "Résultat : " << a << endl;


Meme résultat avec 2 variables.
Et une addition de 1000 termes se fait aussi avec 2 variables.
 
Enfin j'avais mal lu le post de fhr donc si comme lui tu veux réécrire littéralement l'addition à la fin ca change tout ce que je viens de dire  ;)  
 
Sinon je te laisse de débrouiller si t'as compris ce que je voulais dire avec mon histoire de boucle.


Message édité par mcyrb le 13-06-2005 à 12:34:23
Reply

Marsh Posté le 13-06-2005 à 12:56:49    

J'ai pas super bien compris, mais je vais essayer de chercher....
PArce que j'ai pas compris ta technique est plus longue, donc quel interet?
Mais merci beaucoup....
 


---------------
Mon Topic à Upper
Reply

Marsh Posté le 13-06-2005 à 13:32:40    

C'est pas le nombre de lignes qui compte ;)
 
Et puis ma méthode vu que c'est toujours la mm chose qui se repete tu peux la transformer en boucle qui tournera autant que necessaire... (et qui peut tourner 1000 fois pour une addition de 1000 termes).
Je serais curieux de voir comment tu programmerais une addition de 1000 termes.


Message édité par mcyrb le 13-06-2005 à 13:35:49
Reply

Marsh Posté le 13-06-2005 à 23:36:29    

LOL!
 
Je debut juste, faut se rappeller! :D
 
Merci beaucoup de ton aide!
 
J'avance graçe à tout le monde!


---------------
Mon Topic à Upper
Reply

Marsh Posté le 14-06-2005 à 12:03:37    

le mieux c'est de faire une boucle while qui continue tant qu'on a pas rentré '*' par exemple, et de mettre tous les termes de l'addition dans un tableau. Et on fait l'addition à la sortie de la boucle, ou à chaque occurence de la boucle, au choix.
Voila, je te laisse chercher "boucle" et "tableau"

Reply

Marsh Posté le 15-06-2005 à 19:32:33    

Merci beaucoup!
 
Je viens de commander: "C++ pour les nuls", un petit livre sympatique qui devrait bien m'inicier au c++! :)


---------------
Mon Topic à Upper
Reply

Marsh Posté le 15-06-2005 à 19:56:40    

[:le poney de mr pink]  
 
Je pense que tu aurais mieux fait de commander Le langage C++, de Bjarne Stroustrup.
C'est le monsieur qui est à l'origine du C++.


Message édité par Elmoricq le 15-06-2005 à 19:58:03
Reply

Marsh Posté le 16-06-2005 à 02:07:23    

Ouai mais c'set pas le même price, et peut etre pas la même fasson d'expliquer, alors que l'autre edition, je connais! ;)
Sa je connaissait pas! :)


---------------
Mon Topic à Upper
Reply

Marsh Posté le 12-06-2008 à 18:24:28    

y a pas une edition pour les tres nuls...parce que ca risque d'etre compliqué...
:d:d:d

Reply

Marsh Posté le 14-06-2008 à 17:10:00    

inblack a écrit :

y a pas une edition pour les tres nuls...parce que ca risque d'etre compliqué...
:d:d:d


 
En même temps vu le code qui est présent dans ton thread, c'est un peu osé de se moquer des débutants.
 
Bonne chance Subshadow. edit de la pelle  :pt1cable:


Message édité par kyntriad le 15-06-2008 à 02:52:17

---------------
You can't start a fire with moonlight
Reply

Marsh Posté le 14-06-2008 à 21:34:57    

Pelle d'or of teh day.
 
http://hfr-rehost.net/www.nextgeneration.fr/docs/hfr/magiccards/deterrage.png


Message édité par Elmoricq le 14-06-2008 à 21:35:32
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed