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
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
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
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.
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.
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
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.
Le problème semble au delà de la programmation. Peut être un disque dur défectueux.
à la place de g++ essai gcc.
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)
*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)
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
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.
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.
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
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" ??
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" ??
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
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)
{
}.
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)
{
}.
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
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.
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
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 ^^.
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
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
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
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
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.
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
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à :
ou celui là (sans includes) :
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; }
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
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++
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++
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
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
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
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
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 ...
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 ...
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
28 févr. 2008 à 17:26
Re,
Commande de compilation !! vous voulez dire Alt+F9 ?? ou bien la commande Run ==> Run ??
Commande de compilation !! vous voulez dire Alt+F9 ?? ou bien la commande Run ==> Run ??
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
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
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
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
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.
je m'excuse pour le retard, je viens d'essayer la commande est pafff ça plante l'interface sans rien comme erreur.