Oruk
Messages postés28Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention19 février 2006
-
19 févr. 2006 à 00:55
Oruk
Messages postés28Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention19 février 2006
-
19 févr. 2006 à 23:19
Bonjour à tous
Je suis debutant en c++.Je viens de fabrique un petit prog pour choisir entre la convertion des euros en francs ou des francs en euros mais quand je compile, mon compilateur s'arrete sur la ligne ou il y a endl;
#include <cstdio>
#include <cstdlib>
#include
using namespace std;
int main()
{
int c, c2, exit;
float euros, francs;
printf("convertir");
printf("\n\n 1 - les euros en francs");
printf("\n 2 - les francs en euros");
printf("\n 3 - les euros en francs");
printf("\n\n\t Choix:\t");
scanf("%d", &c);
switch(c)
{
case 1:
printf("\n\n entrer la somme en euros");
scanf("%f", &euros);
printf("la valeur en francs est est: %f", francs=euros * 6.55957, francs);
endl:
return main();
}
break;
switch(c2)
{
case 2:
printf("\n\n entrer la somme en francs");
scanf("%f", &francs);
printf("la valeur en euros est est: %f", euros=francs/6.55957, euros);
endl;
return main();
}
break;
case 3:
printf("\n\nAppuyez sur un touche pour continuer...\n");
scanf("%d", &exit);
break;
default:
printf("\n\n Choix non valide\n\n\n");
return main();
}
return 0;
}
Au debut j'avais utiliser cin et cout pout mon prog mais ont m'a dit que printf etait mieux.La je suis un peut perdu en plus il y a des "signesé que je ne comprend pas trop comme %f.Normalent % c'est pas modulo?
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 19 févr. 2006 à 14:28
c'est ça !!
voila le même programme avec une conversion en plus (un cas en plus) :
Et comme les martiens sont un peu tatillons sur leur monnaie, on est
obligé de convertir avec 5 chiffres après la virgule (d'où le %.5f dans
le cas 3)
Et tu n'a pas besoin de déclarer une nouvelle variable (donner un nom a
float) pour faire fonctionner le programme, il suffit de rajouter un
cas de traitement dans la boucle switch (il a fallu decaler la valeur
de sortie Reponse = 4 pour inserer le traitement de la nouvelle
conversion)
int main(int argc, char* argv[]) {
int Reponse = 0;
float euros, francs;
while (Reponse != 4) {
printf("convertir");
printf("\n\n 1 - les euros en francs");
printf("\n 2 - les francs en euros");
printf("\n 3 - les francs en ecus martiens");
printf("\n 4 - quitter");
printf("\n\n\t Choix:\t");
scanf("%d", &Reponse);
switch(Reponse) {
case 1:
printf("\n\n entrer la somme en euros : ");
scanf("%f", &euros);
printf("la valeur en francs de %f euros est : %.2f
francs\n", euros, euros * 6.55957);
break;
case 2:
printf("\n\n entrer la somme en francs : ");
scanf("%f", &francs);
printf("la valeur en euros de %f francs est : %.2f
euros\n", francs, francs/6.55957);
break;
case 3:
printf("\n\n entrer la somme en francs : ");
scanf("%f", &francs);
printf("la valeur en ecus martiens de %f francs est
: %.5f ecus martiens\n", francs, francs*194.23456);
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 19 févr. 2006 à 01:25
tout dabord le switch :
switch(val) {
case X :
//instructions
break;
case ...
default :
//instr2
}
equivaut a :
if (val == X) {
//instructions
} else if (val == ...) {
}else {
//instr2
}
ensuite,
printf(motif, vars, ...)
remplace les % du motif par les vars. si par exemple tu as 2 "%d" dans ton motif, il faudra que tu mette 2 int dans les vars (printf("var1=%d et var2=%d\n", var1, var2); ou var1 et var2 sont des int).
enfin le "return main()" n'est pas bien, ton programme fera des appels recursifs qui ne sont pas necessaires dans ton cas (couts supplementaires). remplace par un while qui sarrete quand tu rentre la valeur d'arret.
ton prog donnerai ca:
int main()
{
int c, exit, arret;
float euros, francs;
arret=0;
while( ! arret) {
printf("convertir");
printf("\n\n 1 - les euros en francs");
printf("\n 2 - les francs en euros");
printf("\n 3 - quitter");
printf("\n\n\t Choix:\t");
scanf("%d", &c);
switch(c)
{
case 1:
printf("\n\n entrer la somme en euros");
scanf("%f", &euros);
francs=euros * 6.55957;
printf("la valeur en francs est est: %f\n", francs);
break;
case 2:
printf("\n\n entrer la somme en francs");
scanf("%f", &francs);
euros=francs/6.55957;
printf("la valeur en euros est est: %f\n", euros);
break;
case 3:
printf("\n\nAppuyez sur un touche pour continuer...\n");
scanf("%d", &exit);
arret = 1;
break;
default:
printf("\n\n Choix non valide\n\n\n");
}
return 0;
}
}
vincemail
Messages postés79Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 8 décembre 2006 19 févr. 2006 à 01:26
C'est parce que tu as mis "endl:" au lieu de "endl;" Sinon je sais pas qui t'as dit ca mais cin et cout sont mieux que printf qui est une fonction du C "deprecated". A ta place j'utiliserais cout et cin... enfin ca n'est pas très important. Sinon % c'est bien le modulo mais %f indique au programme qu'on attend un flottant, c'est à admettre :)
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 19 févr. 2006 à 01:53
Une autre solution :
int main(int argc, char* argv[]) {
int Reponse = 0;
float euros, francs;
while (Reponse != 3) {
printf("convertir");
printf("\n\n 1 - les euros en francs");
printf("\n 2 - les francs en euros");
printf("\n 3 - quitter");
printf("\n\n\t Choix:\t");
scanf("%d", &Reponse);
switch(Reponse) {
case 1:
printf("\n\n entrer la somme en euros : ");
scanf("%f", &euros);
printf("la valeur en francs de %f euros est : %.2f
francs\n", euros, euros * 6.55957);
break;
case 2:
printf("\n\n entrer la somme en francs : ");
scanf("%f", &francs);
printf("la valeur en euros de %f francs est : %.2f
euros\n", francs, francs/6.55957);
break;
case 3:
printf("Au revoir\n");
return (0);
break;
default:
break;
}
}
}
Les %f et %d sont appelées des chaines de format. C'est une
syntaxe utilisé avec les fonctions de la famille printf (sprintf,
vprintf...) pour permettre une mise en forme plus précise des sorties.
ainsi %f indique qu'il faut imprimer un chiffre à virgule dans le
format par défaut (5 ou 6 chiffres après la virgule mais ça dépend.),
tandis que %.2f indique qu'il faut afficher uniquement 2 chiffres après
la virgule (c'est plus joli pour des valeurs monétaires). Par contre si
tu avais voulu imprimer un résultat de type scientifique, tu aurais pu
écrire %.6f, ce qui induerait un résultat avec 6 chiffre après la
virgule. Il existe pleins de possibilités dans l'utilisation des
chaines de format et une bonne lecture d'un bon livre de C t'en
apprendra beaucoup plus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Oruk
Messages postés28Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention19 février 2006 19 févr. 2006 à 12:28
Merci à vous je viens de tester et sa marche nickel, j'ai enfin compri à quoi serve %.Si j'ai bien compri pour ajouter par exemple une nouvelle monnaie j'aurais à ajouter un nom a flaot, une ligne avec printf et ajouter une case?
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 19 févr. 2006 à 21:06
Les widgets et les trucs qui clignotent, c'est pour faire beau, c'est du cosmétique...
Un programme est utile s'il fonctionne avec le moins d'erreurs
possibles. S'il est beau ton programme mais qu'il convertit les euros
en dollar quand tu lui demande des francs, les widgets ça ne sert à
rien...
Le mieux c'est de bien commencer par comprendre la puissance du langage
C et des mécanismes qu'il permet de mettre en oeuvre. Le graphisme
c'est la cerise sur le gateau.
Oruk
Messages postés28Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention19 février 2006 19 févr. 2006 à 21:27
Merci pour ta reponse.C'est vrai que je prefere mieux, avant de me lancer dans dans les graphismes, comprendre et bien maitriser le c++(il y a de quoi faire).Je vais encore etre embetant mais avez-vous des idées pour que je puisse m'excercer sur des chapitres tel que les surcharges, les pointeurs ou encore des constructeurs?
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 19 févr. 2006 à 21:52
Le langage C++ est un sur ensemble du langage C. Il est né de la mode
des langages objet, mais ce n'en est pas vraiment un. Si tu veux
maitriser le C++, tu dois d'abord maitriser le langage C, qui lui est
un langage procédural. Le meilleur livre que je connaisse sur le
langage C est à mon avis encore un des plus lus, c'est le livre écrit
par ses concepteurs. "Introduction au langage C" de D. Ritchie et BW
Kernighan. Il est un peu dur à la lecture, mais la richesse des ses
exercices font vraiment aller au fond du langage (expressions,
fonctions, pointeurs...). Si tu lis ce livre, et que tu réalises une
bonne partie de ses exercices, tu pourras réellement entamer le C++
(Classes, méthodes, surcharges...). Parce que pour l'instant, ce que
nous avons fait sur ce fil c'est juste un programme en C. Il n'y a pas
de C++ dedans... Pour le C++ je ne connais aucun livre bien, je te
déconseille celui de son concepteur (B. Stroustrup), sauf si tu sens
l'âme d'un théoricien en informatique.
Oruk
Messages postés28Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention19 février 2006 19 févr. 2006 à 22:18
j'ai appri les base du c++ avec un livre qui s'appele le c++ pour le nul(comme moi lol)qui est vraiment pas mal pour les debutant avec des exemples telechargeables.Sinon on m'a preté plusieurs bouquin que se soit sur le c++ ou le c.Je vais te citer les noms.Mode d'emploie c(bruce hunter), le language c 2eme edition(de b.w kernighan et de d.m ritchie) et atelier visual c++(david kruglinski).Pour l'instant je n'ai lu que le c++ pour les nuls.Les autres livres qu'on ma passer vienne d'une amie qui a fait un dut info mais qui sont a mon avis reservé un peut plus pour les pro.Je sais pas si sa vaut le coup de lire si c'est pour me perdre dans une masse d'information.Et ont m'a dit que si on apprenait le c avant le c++ on pouvait acquerir de mauvaises habitudes donc c'est pour cela que j'ai direct commencer par le c++.
Je sais pas ce que t'en pense.A toi de me guider dans le droit chemin de la programmation lol.
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 19 févr. 2006 à 22:45
Le language c 2eme edition(de b.w kernighan et de d.m ritchie). Le seul à lire mais surtout à comprendre.
Quand à ceux qui te disent que comprendre le C c'est une mauvaise
habitude, il faut que tu saches que la plupart des programmeurs C++
font du procedural en croyant faire de l'objet (ils font du c dans un
environnement de travail c++, ou encore ils font du c en mettant
"class" devant).
Dans un programme C++, tout ce qui fait la puissance d'expression,
appartient au langage C (expressions ternaire, expressions régulières,
raccourcis de langage, pointeurs, chaines de format...).
Bien sur tu peux apprendre la langage c++ sans vraiment comprendre le
langage c. Le C++ apporte les notions de classes et de methodes. Mais
les tournures de langages principales du C++ sont en fait du C. A mon
avis sauter des étapes, c'est moyen.
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 19 févr. 2006 à 23:03
connais pas...
Juste pour la petite histoire, le langage c est né du langage b... On
peut dire que, côté littérature, les informaticiens n'ont pas beaucoup
d'imagination...