Problem C++

Fermé
maroctech Messages postés 115 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 7 novembre 2008 - 26 févr. 2008 à 22:34
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 3 mars 2008 à 08:34
Bonjour,

Je suis vraiment débutant sur C++ et j'essaie de commençer avec les plus simple programme, (Calcul de TTC) :

/* mon premier programme en C++ */
#include <iostream.h>
#define TVA 20

int main(void)

{
float HT,TTC; // on d‚clare deux variavles (HT et TTC)
cout<<"veuillez entrer le prix HT : " ;
cin>>HT;
TTC=HT*(1+(TVA/100));
cout<<"prix TTC est de : "<<TTC<<"/n;
}


J'utilise Borland C++ et quand je compile ca me renvoi presque 25 erreurs (Declaration syntax error) Sur iostream.h
J'ai eu la meme erreure avec Turbo C++.

Pouvez vous m'expliquez d'ou ça peut venir ? et merçi

15 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
27 févr. 2008 à 08:36
salut,
Ton programme ne comporte pas tant d'erreur que ça, mais disons qu'il est écris dans un vieux style.
La plupart des remarques de JulienZ sont pertinante. Une petit réserve sur le #define, dont l'utilisation est discutable. Il est clair qu'il vaut mieux utiliser un const int, mais moi je l'aurai mi en dehors du main.
D'ailleur, ton main devrai retourner une valeur, il est de bon ton de mettre return 0; à la fin du programme, cette valeur est récupérer par l'OS (%ERRORLEVEL% sous windows) Pour déterminer si le programme a rencontrer des erreurs ou non.
Maintenant, un conseil de type, lorsque tu fait TVA/100 TVA est un int, et 100 est détecter comme un int par le compilateur, et 20/100=0 car le résultat doit être entier. Pour résoudre ce prblème, soit tu défini TVa comme un reel soit tu met 100.0 à la place de 100 pour lui indiquer que le résultat doit être réel (moi, je fait les deux pour être sur)
le endl à la place du "\n", c'est pareil, ça se discute car ça n'a pas la même signification. "\n" fait juste un retour à la ligne alors que endl vide en plus le buffer de cout; ce qui n'est pas forcement recherché.
Pour finir, ton erreur de IOSTREAM introuvable, si tu utilise une vieille version de C++, peut être faut il encore inclure <iostream.h>; sinon le problème est plus sérieux.
1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
3 mars 2008 à 08:34
Houlà. étrange.
Le problème semble au delà de la programmation. Peut être un disque dur défectueux.
à la place de g++ essai gcc.
1
ton programme est bourré de fautes (même si je ne m'y connais pas en C++):
*cout<<"prix TTC est de : "<<TTC<<"/n; , c'est quoi ça ?
*pourquoi le type FLOAT , utilises le INT pour déclarer les entiers
*...
Pour apprendre le C++ , je te conseille cette page utile (consulte un tutoriel aléatoirement)
0
JulienZ Messages postés 42 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 22 avril 2009 4
26 févr. 2008 à 23:20
Salut,

ton code comporte en effet de nombreuses erreurs. La bibliothèque iostream est mal déclaré, contrairement au C, tu n'as pas à mettre le .h ainsi <iostream> suffit. Les #define sont des mots clefs à réserver au C vu qu'il s'agit d'un appel au préprocésseur. Utilise plutôt le mot clef "const".

Pour finir un \n se place entre guillement vu qu'il s'agit d'un code réprésentant un caractère. En C++, endl le remplace trés bien si tu utilise cout.

#include <iostream>

using namespace std; //Pour utiliser cout à la place de std::cout

int main(void)
{
const int TVA =20;
float HT,TTC; // on d‚clare deux variavles (HT et TTC)
cout<<"veuillez entrer le prix HT : " ;
cin>>HT;
TTC=HT*(1+(TVA/100));
cout<<"prix TTC est de : "<<TTC<<endl;
}


Bon courage pour la suite.
0
maroctech Messages postés 115 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 7 novembre 2008 17
26 févr. 2008 à 23:59
Re,
Merçi JulienZ pour tes explications et l'exemple corrigé, je l'es mis mais maintenant ça me donne
Unable to open include file "IOSTREAM" ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 11:03
salut,
oui comme dis Char Snipeur, il faut garder le .h dans inclure <iostream.h> mais par contre il y a pas de ";" apres
et apres j'aurai plutot mis
void main()
{

}
que
int main(void)
{

}.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
27 févr. 2008 à 11:13
Ce que tu écris est valable habituellement RDB77, mais c'est une mauvasie pratique en C++. la norme prévoit que int renvoie un entier, toujours.
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 11:17
Oui c'est vrai mais vu qu'il commence le c++ autant qu'il prenne quelque chose qui marche pour tout et non quelque chose qu'il peut utilise que dans un cas spécial enfin c'est ce que je pense ^^.
0
maroctech Messages postés 115 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 7 novembre 2008 17
27 févr. 2008 à 12:27
Bonjour tt le monde,
Ben je vous remercie puor vos réponses, j'apprécie vos conseils mais jusqu'au maintenant j'arrive pas a compiler ce tt petit simple programme dont le code est déja presenté et la version modifiée de JulienZ, toujours l'erreur de Can't open include file IOSTREAM.H . J'ai essayé avec le H et sans le H, c'est pareil sous Turbo C++ et sous G++ et sous Borland C++. Je crois que c'est un blém en dehors des déclarations ni les INT ni FLOAT puisque la compilation s'arrete meme au niveau du fichier inclu (IOSTREAM.H), J'ai bien verifié que IOSTREAM se trouve sur le dossier INCLUDE et meme j'ai telechargé une version originale sur le NET.
Merçi
PS : J'ai déja les notions comme étant un ancien user de PAscal et actuel user confirmé de PHP qui est derivé du C
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 12:33
Alors la je vois pas pourquoi sa plante sur le iostream alors que la bibliothèque y est, c'est bizare.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
27 févr. 2008 à 12:42
le message d'erreur est étrange, il dit qu'il ne peux l'ouvrir et non qu'il ne peux le trouver.
Sinon, j'aurai dit qu'il s'agisait d'un problème d'option de compilation. (-I[chemin]/include sous gcc)
Mais là...
C'est quoi ton OS, XP ? il ne devrais pas y avoir de problème.
à par des problèmes de droit de lecture peut être.
essai ce programme là :
#include <stdio.h>
const float TVA=20.0;
int main()
{
     float HT;
     scanf("%f",&HT);
     printf("le prix hrs taxe est de %e soit avec une TVA, un prix tout compris de %e\n",HT,HT*(1.+TVA/100.));
     return 0;
} 

ou celui là (sans includes) :
const float TVA=20.0;
int main()
{
     float HT=30;
     float TTC=HT*(1.+TVA/100.);
     return 0;
} 

0
maroctech Messages postés 115 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 7 novembre 2008 17
27 févr. 2008 à 21:25
Re,
J'ai testé ce que vous m'avez dit et ça marche nickel avec l'ensemble des compilateurs, pourquoi alors ils acceptent pas iostream.h ??

PS : j'utilise WinXP avec Turbo C++ et Borland C++ et aussi Linux avec G++
0
JulienZ Messages postés 42 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 22 avril 2009 4
27 févr. 2008 à 23:35
Salut,

Je ne sais pas du tout pourquoi tes compilateurs ne trouvent pas iostream.
En tout cas, j'ai compilé le code que je t'ai fourni sur DevC++, et il trouve bien iostream.

Peut être ton environnement de développement est mal configuré pour le développement en C++...
Vu que le code fourni par char snipeur (qui est un code purement C) se compile sans problème, et que celui que tu voulais faire à la base était C++. Ca me paraît quand même bizarre...

Julien
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
28 févr. 2008 à 08:40
Là ce que je trouve vraiment étrange, c'est que ça merde sous XP et Linux.
Bon, à tout hasard, donne nous ta commande de compilation avec borland et gcc (g++).
Donne aussi le chemin de iostream.
Je sens la merdouille du genre le source est en .c et pas en .cpp ...
0
maroctech Messages postés 115 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 7 novembre 2008 17
28 févr. 2008 à 17:26
Re,
Commande de compilation !! vous voulez dire Alt+F9 ?? ou bien la commande Run ==> Run ??
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
28 févr. 2008 à 21:18
bon, ba voilà, ça peut expliquer.
Alors, tu prend tes mimines et tu compile en mode console, comme ça, on y verra plus clair.
g++ prog.cpp -c -I[chemin]/include
0
maroctech Messages postés 115 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 7 novembre 2008 17
1 mars 2008 à 16:24
Bjr,
je m'excuse pour le retard, je viens d'essayer la commande est pafff ça plante l'interface sans rien comme erreur.
0