[c++]

bonjour, je viens de débuter le C++ en cours aujourd’hui (je suis en BTS IG), nous avons travailler sur Visual C++ 6.0, et en rentrant chez moi, j’ai voulu ré-essayer sur Visual C++ 2005 express; mais des erreurs sont apparues. Voici le code :

[codebox]include
#define PrixVache 250
#define PrixMouton 120
void main()
{int NbVaches, NbMoutons;
float PrixTroupeau;
//saisie des deux valeurs
cout<<“nombre de vaches \n”;
cin>>NbMoutons;
cout <<“nombre de vaches \n”;
cin>>NbMoutons;
PrixTroupeau=PrixVachesNbVaches+PrixMoutonsNbMoutons;
cout<<“Montant du troupeau”<<PrixTroupeau<<“euros”<<endl;
cout<<“au revoir”;
}[/codebox]

Sur Visual 6.0 je devais mettre #include<iostream.h>, alors que là visiblement je dois mettre avec 2005 express.
De plus, ça me met qu’il y a 5 erreurs quand je le compile :
-ligne 8: ‘cout’ : identificateur non déclaré
-ligne 9: ‘cin’ : idem
-ligne 12 : ‘PrixMoutons’ : idem
-ligne 12 : ‘PrixVaches’ : idem
-ligne 12 : ‘endl’ : idem

Sur 6.0 ça marchait bien, mais sur 2005 ça bug, quelqu’un pourrait m’aider svp?

Et revoilà le problème de Visual C++ 6.0…

Pour faire cour Visual C++ 6.0 a un compilo C++ pas standard du tout, et du code compilant avec lui a de très forte chance de pas compiler sur un compilateur C++ moderne (au hasard Visual C++ 2005). Pour passer de l’un à l’autre : les header standards du C++ perdent leur .h et les header de la librairie C (stdlib/stdio & cie) doivent être inclu avec au lieu de <NomHeader.h>. En plus toute la librairie standard est contenue dans un ‘namespace’ que tu doit préciser au début de chaque identifiant de ce ‘namespace’, donc typiquement : std::cout (sous VS2005), ou faire un “using namespace std;” sous le "#include " qui va te permettre d’y acceder (si tu comprends pas tout de suite c’est pas grave, fou juste le using). Sinon PrixMoutons et PrixVaches ne sont pas déclarés B)

Avec gcc :

Donc ça, c’est fait B)

Sinon, je ne m’y connais pas du tout en C++ B)

[quote=“TwinSidE, post:2, topic: 45963”]Et revoilà le problème de Visual C++ 6.0…

Pour faire cour Visual C++ 6.0 a un compilo C++ pas standard du tout, et du code compilant avec lui a de très forte chance de pas compiler sur un compilateur C++ moderne (au hasard Visual C++ 2005). Pour passer de l’un à l’autre : les header standards du C++ perdent leur .h et les header de la librairie C (stdlib/stdio & cie) doivent être inclu avec au lieu de <NomHeader.h>. En plus toute la librairie standard est contenue dans un ‘namespace’ que tu doit préciser au début de chaque identifiant de ce ‘namespace’, donc typiquement : std::cout (sous VS2005), ou faire un “using namespace std;” sous le "#include " qui va te permettre d’y acceder (si tu comprends pas tout de suite c’est pas grave, fou juste le using). Sinon PrixMoutons et PrixVaches ne sont pas déclarés B)[/quote]

Concretement, ajoute un “using namespace std” en dessous de tes includes.
Sinon les define en C++ c’est plutôt mal.
Tu peux utiliser des constantes (genre const int prix = << prix >>).

Merci pour vos conseils B)
Sinon quelqu’un pourrait me donner le corrigé de mon code pour aider ma compréhension? B)

Non, si tu n’y arrives pas avec les informations qui t’ont été données ici, c’est de la mauvaise volonté. Relis, et si c’est pas clair, pose d’autres questions et on se fera un plaisir d’expliquer.

main() ne doit pas retourner quelque chose en C++ ?

Oui et non B)

main() doit être de type int, et non pas de type void. Par contre, il n’est pas nécessaire de faire un return explicite, auquel cas 0 est renvoyé par défaut.

http://www.research.att.com/~bs/bs_faq2.html#void-main

J’ai demandé ça car ce n’était pas clair, désolé de ne pas comprendre… Si maintenant on se fait engueuler quand on demande de l’aide, je comprends encore moins…

[quote=“TwinSidE, post:2, topic: 45963”]- un “using namespace std;” sous le "#include "

  • PrixMoutons et PrixVaches ne sont pas déclarés B)[/quote]

Tout est dit B)

[HS] Vu que t’es étudiant, tu peux récupérer gratuitement VS Pro. Plus d’infos ici [/HS]

En fait la logique est la même que partout : on ne fait pas les devoirs des gens.
C’est pour que que Drealmer t’as dit que tu pouvais poser d’autres questions, pour que tu saisisse, mais tu n’aura pas de solution tout cuite.
(quoi que mon poste précédent y ressemble B))

Je pirate le thread car je suis un peu dans la même situation: au labo on utilise Visual 6.0, et sur mon pc j’ai pris Visual 2005 Express, mais mon problème est différent: je code mon programme pouet (en C), je génère, puis quand je veux débugguer (enfin lancer le programme) il me dit que pouet.exe est introuvable (effectivement il n’est pas créé). Savez-vous comment je peux lui faire créer pouet.exe?

Menu Build -> Build solution ?

Comme je l’ai dit je Génère la solution (équivalent de build j’imagine, c’est la version française) mais ça crée pas l’exe

Oui, mais ca te dit forcement quelque chose entre temps ? aucune erreur de compilation, de linking ? verifie bien que ton projet est pas foireux, genre des repertoires a l’ouest, ou manquants (meme si il devrait les creer).

Ne t’aurait-il pas créé par le plus grand des hasards un pouet.dll (le malandrin!)

Voilà ma procédure: je crée un nouveau projet (application Win32 console), je crée le fichier pouet.c, je rajoute les librairies dont j’ai besoin, tout est dans le même dossier. Je code, je génère, mais quand je fais F5 j’ai un message "impossible de lancer le programme blablabla. Le fichier (.exe) est introuvable

Edit: pas de fichier dll

Si il n’y a pas eu d’erreur à la compilation, c’est que l’exécutable a bien été généré. Si c’est le cas, as-tu vérifié dans les propriétés du projet, le chemin de sortie du projet ? (sait-on jamais) Vérifie aussi le chemin de l’exécution. Bizarre ton histoire… B)

De plus en plus bizarre! Finalement il a bien voulu compiler et me sortir le fichier .exe, mais seulement pour le projets en .cpp, pas en .c

Maintenant il fait aussi les fichiers .c, bref ça fonctionne (enfin!).

Par contre ça m’emm****** un peu de toujours devoir rajouter les librairies à la main, j’aimerais bien qu’il en inclue certaines dès que je crée un nouveau projet, mais je cherche encore le bon réglage pour ça.