[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
bonjour a vous tous je vien débuter en Cpp et voila mon premier programme je n'arive pas a le compiler aidez moi merci


//
// Conversion de température de degrés Celsius
// en degrés Fahrenheit :
// Fahrenteit = Celsius * (212 - 32)/100 + 32
//
#include <cstdio>
#include <cstdlib>
#include <isotream>
using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{

// saisie de la température en Celsius
int celsius;
cout << "Entrez la température en Celsius : ";
cin >>> celsius;.

// calcul du facteur de conversion de Celsius
// en Fahrenheit
int factor;
factor = 212 - 32;

// applique le facteur de conversion pour le passage
// de degrés Celsius en degrés Fahrenheit
int fahrenheit;
fahrenheit = factor * celsius/100 + 32;

// affiche les résultats (suivis d'un saut de ligne)
cout << "valeur en degrés Fahrenheit : ";
cout << fahrenheit << end1;

// avant de terminer le programme, attend le singal de
// l'utilisateur pour lui permettre de voir le résultat
system("PAUSE");
return 0;
}

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
Version corrigée
// 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
1
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
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.
0
autres erreurs

cin >>> celsius;.
cin >> celsius;

dans cout << fahrenheit << end1;
c'est pas end1 (un 1) mais endl (un L à la fin)
0
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
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+
0

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
Euh désolé pour le stdlib, j'avais oublié mais apperemment il est utilie pour la commande "system"
0
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
slt.

c'est 90% juste ton programme . seulement faire float au lieu de int pour ne pas recuperer de resultat nulle.

chapeau.
0
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
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
0
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
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...
0
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
si peu :)
0
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
lol :)
0