PDA

Voir la version complète : probleme


Le-Des,Ali
18/07/2005, 15h19
bonjour voila je fais un petit programme en c
et j'ai une erreur et je c pas pourquoi alors voila le fichier source

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int choix;
float nombre_de_Bonjour;
float nombre1 ;
float nombre2 ;
int opperateur ;
int Bonjour = 1;

int main(void)
{
printf("machine de politesse\n\n\n");
printf("bienvenue dans mon jeu\n");
printf("choix: \n");
printf("dire bonjour.......1\n");
printf("dire bonsoir.......2\n\n");
scanf("%d", &choix) ;
switch (choix){
case 1:
printf("Bienvenue dans Bonjour mode\n");
printf ("Entrez le nombre de bonjour désirer:\n");
scanf ("%f", &nombre1) ;
}

switch (choix){
case 1 :
opperateur = 1 ;
break ;
}
if
{
nombre_de_Bonjour = Bonjour*nombre1;
prinf("nombre_de_Bonjour");
}
getch();
return 0;
}
c'est normale qu'il n'ya pas encore de choix numéro 2

deathangel
18/07/2005, 15h32
ton erreur, c'est à la compile ou à l'exec.
Rajoute le message de l'erreur aussi, ca sera plus simple :D

Le-Des,Ali
18/07/2005, 15h35
32 C:\Documents and Settings\\Mes documents\SansNom2.cpp expected `(' before '{' token

C:\Documents and Settings\\Mes documents\SansNom2.cpp In function `int main()':

32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

3 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream.h:31, from C:\Documents and Settings\alidou\Mes documents\SansNom2.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from

C:\Documents and Settings\\Mes documents\SansNom2.cpp

Le-Des,Ali
18/07/2005, 15h40
Pour
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
j'ai enlever #include <iostream.h> et il me reste encore deux erreur:
C:\Documents and Settings\\Mes documents\SansNom2.cpp In function `int main()':

31 C:\Documents and Settings\\Mes documents\SansNom2.cpp expected `(' before '{' token

Lenolian
18/07/2005, 15h51
Tu as mis un if sans condition :

if
{
nombre_de_Bonjour = Bonjour*nombre1;
prinf("nombre_de_Bonjour");
}

Soit tu enlèves le if complètement (je vois pas trop à quoi il sert dans ton prog), soit tu lui mets une condition.


Remplace la partie de ton code par çà :

nombre_de_Bonjour = Bonjour*nombre1;
prinf("nombre_de_Bonjour");

ou çà : (mettre une condition valide quand même)

if( /*condition ici*/ )
{
nombre_de_Bonjour = Bonjour*nombre1;
prinf("nombre_de_Bonjour");
}

HanLee
18/07/2005, 17h16
scanf("%d", &choix) ;
switch (choix){
case 1:
printf("Bienvenue dans Bonjour mode\n");
printf ("Entrez le nombre de bonjour désirer:\n");
scanf ("%f", &nombre1) ;
}

switch (choix){
case 1 :
opperateur = 1 ;
break ;
}



Tu testes 2 fois "choix" avec tes deux switch. Ya pas une erreur ? ce serait pas "nombre1" dans le deuxieme switch ?

Le-Des,Ali
18/07/2005, 18h11
il y a plus de message d'erreur mais au lieu de me marquer Xfois de bonjour il mette nombre_de_Bonjour

Aznam
18/07/2005, 19h19
Ce sujet ne seraitil pas mieux dans la catégorie c/c++ ?

Aller tiens : regarde l'erreur se trouve là ;) : printf("nombre_de_Bonjour");

Ca serait tellement mieux sans "".

HanLee
18/07/2005, 20h08
Ce sujet ne seraitil pas mieux dans la catégorie c/c++ ?

Aller tiens : regarde l'erreur se trouve là ;) :

Ca serait tellement mieux sans "".

Nan, c'est printf("%f", &nombre_de_Bonjour); :] il me semble (paske moi j'utilise cout)

Aznam
18/07/2005, 20h45
Oui moi aussi, pour cela que je peux pas l'aider. Je c'est juste que son problème est là. Je code en c++ pas en C ;)

Bahamut
19/07/2005, 11h05
C'est bien ca :)

printf("Le nombre de bonjour est :%d\n", &nombre_de_Bonjour);

Notez la présence du \n. C'est assez utilise quand on utilise le printf
(\n == endl en c++)

pchiter
19/07/2005, 11h09
Et comme c'est un programme en C, pourquoi inclu tu iostream.h et conio.h ?

sinon pour main, mets juste

int main() { ....
...
getchar();
return 0;
}


Sinon je comprend pas bien ce que t'essaie de faire mais ce que bahamut a mis est correct.

Bahamut
19/07/2005, 11h34
Sinon je comprend pas bien ce que t'essaie de faire mais ce que bahamut a mis est correct.


Lol... même pas ^^
Il y a deux erreurs. (J'aurai du regarder la déclaration de la variable nombre_de_bonjour :D

il s'agit d'un float.... donc pas de & !! Sinon on retourne la valeur du pointeur (caca que l'on ne souhaite pas afficher.)

Le fait que ce soit un float...le flag %d va tronquer la valeur à 0.
Donc la bonne solution :

float nombre_de_Bonjour = 15.0f;
printf("Le nombre de bonjour est :%0.0f\n", nombre_de_Bonjour);
le %0.0f va tronquer la partie flottante.

Seconde solution :
float nombre_de_Bonjour = 15.0f;
printf("Le nombre de bonjour est :%d\n", (int)nombre_de_Bonjour);
--> on cast la valeur..mais on perd du temps machine pour caster un float en int

Troisieme solution :
short nombre_de_Bonjour = 15;
printf("Le nombre de bonjour est :%d\n", nombre_de_Bonjour);
--> utilisation des entiers...c'est la solution la plus propre pour moi puisque la partie flottante est inexistante dans le cas du nombre de bonjours à apporter ^^
nombre_de_Bonjour = 10,7852; --> impensable :D

Le-Des,Ali
19/07/2005, 12h13
ok merci

Drekorig
24/02/2006, 14h55
On ressort les vieux sujet :d


le %0.0f va tronquer la partie flottante


J'ai quelque soucis pour tronquer une valeur : avec %0.0f ou %.0f je n'obtiens pas de décimal mais mon entier est arrondis :s

Mon 8,57 deviens un 9, et moi je veux 8 a l'affichage ...

Edit : Bon, j'ai partiellement trouvé, il faut s'amuser avec l'opérateur % pour obtenir le reste d'un quotient de 2 entier, ensuite il faut poser des équations pour retrouver la partie entiere.

Maintenant nouveau probleme, je declare un floatant qui contient l'opération 3600/7 et quand je l'affiche avec un printf il me sort 514,00000 ... Pourquoi je n'ai pas ma partie décimale ???

Loulou
25/02/2006, 14h30
J'ai quelque soucis pour tronquer une valeur : avec %0.0f ou %.0f je n'obtiens pas de décimal mais mon entier est arrondis :s

Mon 8,57 deviens un 9, et moi je veux 8 a l'affichage ...
Dans ce cas mieux vaut passer par la conversion en entier, là tu auras une vraie troncature.

Maintenant nouveau probleme, je declare un floatant qui contient l'opération 3600/7 et quand je l'affiche avec un printf il me sort 514,00000 ... Pourquoi je n'ai pas ma partie décimale ???
3600 / 7 est une division entière et donnera un résultat entier. 3600.0 / 7 par contre sera une division réelle.