[C++] prgrammation
Résolu/Fermé
massi92
Messages postés
30
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2008
-
19 juil. 2007 à 15:18
Thiby Messages postés 10 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 20 juillet 2007 - 19 juil. 2007 à 19:52
Thiby Messages postés 10 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 20 juillet 2007 - 19 juil. 2007 à 19:52
10 réponses
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
19 juil. 2007 à 17:29
19 juil. 2007 à 17:29
Version corrigée
Version épurée :
Bonne chance
// Conversion de température de degrés Celsius // en degrés Fahrenheit : // Fahrenteit = Celsius * (212 - 32)/100 + 32 // //#include <cstdio> // inutile //#include <cstdlib> // inutile //#include <isotream> // faux iostream = "input/output stream" #include <iostream> // Ok dans un cpp mais jamais dans un hpp. Je le commente parce // que c'est pas forcément une bonne habitude // using namespace std; // Tu n'utilises pas d'arguments pour lancer ton programme, donc on peut les dégager //int main(int nNumberofArgs, char* pszArgs[]) int main() { // saisie de la température en Celsius int celsius; std::cout << "Entrez la température en Celsius : "; // cin >>> celsius;. // operateur >> et pas >>>, pas de ., rajouter le std:: std::cin >> celsius; // calcul du facteur de conversion de Celsius // en Fahrenheit // int factor; // factor = 212 - 32; const int factor = 180; // applique le facteur de conversion pour le passage // de degrés Celsius en degrés Fahrenheit int fahrenheit = factor * celsius/100 + 32; // affiche les résultats (suivis d'un saut de ligne) std::cout << "valeur en degrés Fahrenheit : "; //cout << fahrenheit << end1; std::cout << fahrenheit << std::endl; // avec un L au bout comme end of line // avant de terminer le programme, attend le singal de // l'utilisateur pour lui permettre de voir le résultat // system("PAUSE"); getchar(); // beaucoup plus propre car indépendant de windows return 0; }
Version épurée :
// Conversion de température de degrés Celsius // en degrés Fahrenheit : // Fahrenteit = Celsius * (212 - 32)/100 + 32; // #include <iostream> inline int celsius2fahrenheit(const int & celsius){ return 180*celsius/100 +32; } int main(){ int celsius; std::cout << "Entrez la température en Celsius : "; std::cin >> celsius; std::cout << "valeur en degrés Fahrenheit : " << celsius2fahrenheit(celsius) << std::endl; getchar(); return 0; }
Bonne chance
Thiby
Messages postés
10
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
20 juillet 2007
1
19 juil. 2007 à 16:52
19 juil. 2007 à 16:52
Salut massi92
et bienvenue dans le merveileux monde du cpp (même si dans ton exemple on pourrait se borner à rester dans le c)
Pour ton problème, en fai tj'en vois plusieurs...
1 -> #include <isotream> ??? ce serait plutot : #include <iostream>
2 -> int main(int nNumberofArgs, char* pszArgs[]) ... hum c'est plutot : int main(int argc, char **argv)
3 -> rien a voir avec un probleme de compilation mais a mon avis ton programme ne fera pas ce qu'il doit faire : fahrenheit = factor * celsius/100 + 32;
Sachant que toutes tes variable sont déclarées en "int" tu auras normalement : fahrenheit = 0 pour toutes temperatures celsius < 100, car celsius/100 te retourne "0" (valeur entiere), il te faut donc les déclarer en "float" voir en "double"
4 -> Je suis peut etre passé dessus, mais à quoi sert l'inclusion de cstdlib?
Après j'ai peut etre pas tout vu, mais ce serait bien de nous montrer le rapport de compilation.
et bienvenue dans le merveileux monde du cpp (même si dans ton exemple on pourrait se borner à rester dans le c)
Pour ton problème, en fai tj'en vois plusieurs...
1 -> #include <isotream> ??? ce serait plutot : #include <iostream>
2 -> int main(int nNumberofArgs, char* pszArgs[]) ... hum c'est plutot : int main(int argc, char **argv)
3 -> rien a voir avec un probleme de compilation mais a mon avis ton programme ne fera pas ce qu'il doit faire : fahrenheit = factor * celsius/100 + 32;
Sachant que toutes tes variable sont déclarées en "int" tu auras normalement : fahrenheit = 0 pour toutes temperatures celsius < 100, car celsius/100 te retourne "0" (valeur entiere), il te faut donc les déclarer en "float" voir en "double"
4 -> Je suis peut etre passé dessus, mais à quoi sert l'inclusion de cstdlib?
Après j'ai peut etre pas tout vu, mais ce serait bien de nous montrer le rapport de compilation.
autres erreurs
cin >>> celsius;.
cin >> celsius;
dans cout << fahrenheit << end1;
c'est pas end1 (un 1) mais endl (un L à la fin)
cin >>> celsius;.
cin >> celsius;
dans cout << fahrenheit << end1;
c'est pas end1 (un 1) mais endl (un L à la fin)
zabbi
Messages postés
35
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
19 juil. 2007 à 17:08
19 juil. 2007 à 17:08
slt.
moi je crois que t'a rendu ton programme trop compliqué . pour un debutant.
d'abord ta besoin seulment de iostream come biblio.
en plus ta pas besoin de faire de arguments pour main et aussi pas la peine de mettre une valeur de retour.
fais seulment main()
ce syntaxe est faux :cin >>> celsius;.
seulment 2 >> et pas de . à la fin
essais.
a+
moi je crois que t'a rendu ton programme trop compliqué . pour un debutant.
d'abord ta besoin seulment de iostream come biblio.
en plus ta pas besoin de faire de arguments pour main et aussi pas la peine de mettre une valeur de retour.
fais seulment main()
ce syntaxe est faux :cin >>> celsius;.
seulment 2 >> et pas de . à la fin
essais.
a+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Thiby
Messages postés
10
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
20 juillet 2007
1
19 juil. 2007 à 17:21
19 juil. 2007 à 17:21
Euh désolé pour le stdlib, j'avais oublié mais apperemment il est utilie pour la commande "system"
zabbi
Messages postés
35
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
19 juil. 2007 à 17:37
19 juil. 2007 à 17:37
slt.
c'est 90% juste ton programme . seulement faire float au lieu de int pour ne pas recuperer de resultat nulle.
chapeau.
c'est 90% juste ton programme . seulement faire float au lieu de int pour ne pas recuperer de resultat nulle.
chapeau.
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
19 juil. 2007 à 17:49
19 juil. 2007 à 17:49
J'ai mis un int parce que tu utilisais des int en fait :) Pusique ton problème semble résolu, je le clos.
Bonne chance
Bonne chance
Thiby
Messages postés
10
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
20 juillet 2007
1
19 juil. 2007 à 18:08
19 juil. 2007 à 18:08
En fait pour etre plus precis, l'impact du int est mineur puisque que ca ne supprime qu'un chiffre derriere la virgule du fait que le programme réalise d'abord la multiplication par "factor" qui vaut "190". donc meme si la temperature est de 1° on obtient 190/100+32 = 1 + 32 = 33 ...
mais bon la je pinaille...
mais bon la je pinaille...
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
19 juil. 2007 à 19:15
19 juil. 2007 à 19:15
si peu :)
Thiby
Messages postés
10
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
20 juillet 2007
1
19 juil. 2007 à 19:52
19 juil. 2007 à 19:52
lol :)