Voir la version complète : Probleme dans ma source C++ SVP !!!
Bonjour j'ai tout essayé, j'ai passé une soirée à faire un programme de caisse de magasin en C++, mais mon compilateur refuse compiler mon programme, il me dit qu'il contient plein d'erreur.Si quelqu'un pouvait m'aider :00000012:
Nom du compilateur: Dev-C++
Langage:C++
Nom de fichier:reference.exe
Source:
if (int ref == '0001')
{
char produit[10] = "Trousse\n";
float prix = "5,50";
}
else if (int ref == '0002')
{
char produit[10] = "Livre\n";
float prix = "8,25";
}
else if (int ref == '0003')
{
char produit[10] = "Montre\n";
float prix = "6,20";
}
else if(ref == 'fin')
{
}
else {
cout <<"Cette reference n'existe pas !"<<end1;
system("pause>nul");
system("quit");
}
char ticket[] = ticket + produit;
float somme = somme + prix;
system("reference.exe");
merci d'avance
Quel est le message d'erreur ?
deathangel
08/09/2005, 21h42
if (int ref....
tu peux pas déclarer une variable dans ta condition.
version juste :
if (ref==1)
ensuite dans les float, pour une affectation, ce n'est pas entre "" qu'il faut le mettre, tu dois mettre directement la valeur
prix=5.5;
pour la concaténation (char ticket[] = ticket + produit;) tu ne peux pas faire un +, le C++ est différent du VB.
Il faut te servir de fonctions plus avancées de String.h
et aussi le :
else if(ref == 'fin')
{
}
ne marchera pas si ref est un int
Vu le nombre d'erreurs ( :00000032: ) tu a vraiment de grosses lacunes , il faudrai que tu te replonge dans ton bouquin de c++
Si c'est là ton code source entieret non juste un morceau, il te manque la base : la fonction main. Sans ça tu vas pas aller tres loin.
Corriger ton code ne t'aiderai pas, car tu ne semble pas avoir aqui les bases (ne serait-ce que les type de variables, vu comment tu les manipule)
Voici le lien vers la page c++ sur le wiki : http://www.games-creators.org/wiki/C_plus_plus
Bon courrage ;)
C'est un troll? :00000032:
Quel est le message d'erreur ?
Pas besoin d'etre un compilateur pour voir ce qui ne va pas dans son code... :00000003:
tu peux pas déclarer une variable dans ta condition.
ah bon c'est nouveau ca.
il te manque la base : la fonction main.
Je crois que la base qui lui manque c'est plutot le typage des variables.
Sinon pour repondre au message initial, vérifie le typage de tes variables.
Quelques exemples de déclaration.
int i = 24;
char c = 'f';
std::string = "toto"; (absolument prendre l'habitude d'utiliser la stl si tu veux faire du c++).
float f = 5.606f;
etc...
deathangel
09/09/2005, 09h04
C'est un troll? :00000032:
tu peux pas déclarer une variable dans ta condition.
ah bon c'est nouveau ca.
c'était dans le sens ou ca n'a pas grand intérêt dans son cas
int ref; t'initialise ta variable à ce qui se trouve en mémoire donc n'importe quoi....donc il a beau tester avec ==, le résultat sera toujours faux.
et même faire un : if ((int a=1) == 0) j'y vois pas trop l'intêret
Merci pour votre aide, mais le programme ne fonctionne toujours pas :00000021:
voici les donnes:
Nom du compilateur:Dev-C++
Erreur:
12:12: warning: multi-character character constant
18:17: warning: multi-character character constant
24:17: warning: multi-character character constant
In function `int main()':
32: error: `string' undeclared (first use this function)
32: error: (Each undeclared identifier is reported only once for each function it appears in.)
32: error: expected `;' before "ticket"
33: error: `prix' undeclared (first use this function)
35: error: `ticket' undeclared (first use this function)
40: error: `end1' undeclared (first use this function)
44: error: `produit' undeclared (first use this function)
Code source:
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int ref;
cout <<"Entrez la reference du produit:";
cin>>ref;
if (ref == '0001')
{
char produit[10] = "Trousse\n";
float prix = 5.50;
float somme = somme + prix;
}
else if (ref == '0002')
{
char produit[10] = "Livre\n";
float prix = 8.25;
float somme = somme + prix;
}
else if (ref == '0003')
{
char produit[10] = "Montre\n";
float prix = 6.20;
float somme = somme + prix;
}
else if(ref == '0')
{
string ticket = ticket + produit;
float somme = somme + prix;
cout<<"Le client a achete:\n"<<ticket<<"\nPour une somme de:"<<somme<<"¤";
system("pause>nul");
system("quit");
}
else {
cout <<"Cette reference n'existe pas !"<<end1;
system("pause>nul");
system("quit");
}
char ticket[] = ticket + produit;
float somme = somme + prix;
system("reference.exe");
}
Ok merci, j'ai trouvé mon programme est compilé sauf qu'il y a une erreur dans la calcul du prix:
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
unsigned long int ref;
std::string produit;
float prix;
float somme;
cout <<"Entrez la reference du produit:";
cin>>ref;
if (ref == 0001)
{
produit = "Trousse\n5.50\n";
prix = 5.50;
}
else if (ref == 0002)
{
produit = "Livre\n8.25\n";
prix = 8.25;
}
else if (ref == 0003)
{
produit = "Montre\n6.20\n";
prix = 6.20;
}
else if(ref == 0)
{
cout<<"Le client a depense:\n"<<prix<<"Euros";
system("pause>nul");
}
else {
cout <<"Cette reference n'existe pas !\n";
system("pause>nul");
system("close");
}
//char ticket[] = ticket + produit;
somme = somme + prix;
prix + prix;
cout<<""<<produit<<"\n";
system("reference.exe");
}
Le programme ne donne jamais de bon prix !
Une petite correction de ton programme :
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
//On déclare et initialise les variables
int ref = 0; // Reference du produit
std::string produit; //Nom du produit
float prix = 0; //Prix du produit
float somme = 0; //Pris total des achats
bool quit = false; //L'utilisateur veut il quitter ?
//Boucle While()
//Cette boucle s'executera tant que (while) la condition n'est pas vérifiée
while(quit == false)
{
cout <<"Entrez la reference du produit (0 pour valider la commande) :";
cin>>ref;
if (ref == 1)
{
produit = "Trousse\n5.50\n";
prix = 5.50;
cout<<produit<<"\n";
//Il faut mettre la somme a jour a chaque achat
//Si un seul achat cela fonctionne car elle a ete initialisé a 0
somme = somme + prix;
quit = false;
}
if (ref == 2)
{
produit = "Livre\n8.25\n";
prix = 8.25;
cout<<produit<<"\n";
somme = somme + prix;
quit = false;
}
if (ref == 3)
{
produit = "Montre\n6.20\n";
prix = 6.20;
cout<<produit<<"\n";
somme = somme + prix;
quit = false;
}
if(ref == 0)
{
cout<<"Le client a depense:\n"<<somme<<"Euros\n"; //Il faut ici afficher la somme et non le prix
quit = true;
}
}
system("pause");
return 0;
}
Principales modification :
- evite les boucles if else de trop grande taille, ca nuit a la lisibilité, préfere les petits blocs de code.
- Le calcul de ton prix etait fait d'une maniere bien etrange, regarde comment je l'ai arrangé et n'hésite pas si tu ne comprend pas
- La fin du programme : j'ai rajouté une boucle While() pour executer ton programme, car je ne suis pas sur que ta methode fonctionnai. De meme un return 0 est conseillé car ton main est de type int.
Ce doit etre a peu pres tout, n'hesite pas a demander des explications si tu ne comprend pas comment j'ai fais, et essaye peut etre quelque chose d'un peu plus simple pour commencer :) Juste le temps d'acquérir les bases.
Bon courage a toi
cin>>ref;
if (ref == 1)
{
produit = "Trousse\n5.50\n";
prix = 5.50;
cout<<produit<<"\n";
//Il faut mettre la somme a jour a chaque achat
//Si un seul achat cela fonctionne car elle a ete initialisé a 0
somme = somme + prix;
quit = false;
}
if (ref == 2)
{
produit = "Livre\n8.25\n";
prix = 8.25;
cout<<produit<<"\n";
somme = somme + prix;
quit = false;
}
if (ref == 3)
{
produit = "Montre\n6.20\n";
prix = 6.20;
cout<<produit<<"\n";
somme = somme + prix;
quit = false;
}
if(ref == 0)
{
cout<<"Le client a depense:\n"<<somme<<"Euros\n"; //Il faut ici afficher la somme et non le prix
quit = true;
}
}
system("pause");
return 0;
}
berk berk berk ! Utilise un switch !
Merci de tout coeur a tout ceux qui m'ont aidé c'est tres gentil ! :00000023:
berk berk berk ! Utilise un switch !
En temps normal c'est ce que j'aurai fait... J'ai juste voulu reprendre son programme en essayant de garder au maximum sa logique :)
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org