Les réels sont systématiquement ramenés à leurs parties entières.
Le même programme fonctionne parfaitement sous un autre système unix
(SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un
forum linux, plutôt que sur forum C++
Le compilateur est GCC 3.3.5, le système est un Red Hat 9.
Voici le source du prog:
#include <stdlib.h>
#include <stream.h>
int main()
{
float r;
cout << "Entrez un reel a virgule : ";
cin >> r;
cout << " le reel entre est : " << r << endl;
char t[10];
cout << "Entrez un 2eme reel a virgule : ";
cin >> t;
cout << " la chaine est : " << t << endl;
r = atof(t);
cout << " le reel entre est : " << r << endl;
return 1;
}
Et voici le résultat:
1er essai :
Entrez un reel a virgule : 2,3
le reel entre est : 2
Entrez un 2eme reel a virgule : la chaine est : ,3
le reel entre est : 0
Dans cet essai, le programme exécuté ne s'arrête pas pour la saisie de
la variable chaîne. L'affichage de cette variable est donc aléatoire.
2eme essai :
Entrez un reel a virgule : 5
le reel entre est : 5
Entrez un 2eme reel a virgule : 2,35
la chaine est : 2,35
le reel entre est : 2
Si quelqu'un pouvait me denner une idée, une piste...
Merci d'avance.
--
Vincent Marchal
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Julien BLACHE
Vincent Marchal wrote:
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
locales.
JB.
-- ST: L'intelligence et la connerie ne sont pas incompatibles. PG: La bêtise et la connerie non plus. -+- in: Guide du Cabaliste Usenet - Des imbéciles heureux -+-
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Vincent Marchal <marchal@crai.archi.fr> wrote:
Entrez un reel a virgule : 2,3
le reel entre est : 2
Entrez un 2eme reel a virgule : la chaine est : ,3
le reel entre est : 0
locales.
JB.
--
ST: L'intelligence et la connerie ne sont pas incompatibles.
PG: La bêtise et la connerie non plus.
-+- in: Guide du Cabaliste Usenet - Des imbéciles heureux -+-
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
locales.
JB.
-- ST: L'intelligence et la connerie ne sont pas incompatibles. PG: La bêtise et la connerie non plus. -+- in: Guide du Cabaliste Usenet - Des imbéciles heureux -+-
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Vincent Bernat
OoO Pendant le temps de midi du mardi 02 août 2005, vers 12:22, Vincent Marchal disait:
Entrez un reel a virgule : 2,3
Cela nécessite de faire entrer en jeu la locale pour savoir que la virgule est le séparateur des décimales. Je dirais que ça doit être automatique, mais que donne le programme quand tu rentres 2.3 ? -- I AM SO VERY TIRED I AM SO VERY TIRED I AM SO VERY TIRED -+- Bart Simpson on chalkboard in episode AABF20
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
OoO Pendant le temps de midi du mardi 02 août 2005, vers 12:22,
Vincent Marchal <marchal@crai.archi.fr> disait:
Entrez un reel a virgule : 2,3
Cela nécessite de faire entrer en jeu la locale pour savoir que la
virgule est le séparateur des décimales. Je dirais que ça doit être
automatique, mais que donne le programme quand tu rentres 2.3 ?
--
I AM SO VERY TIRED
I AM SO VERY TIRED
I AM SO VERY TIRED
-+- Bart Simpson on chalkboard in episode AABF20
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
OoO Pendant le temps de midi du mardi 02 août 2005, vers 12:22, Vincent Marchal disait:
Entrez un reel a virgule : 2,3
Cela nécessite de faire entrer en jeu la locale pour savoir que la virgule est le séparateur des décimales. Je dirais que ça doit être automatique, mais que donne le programme quand tu rentres 2.3 ? -- I AM SO VERY TIRED I AM SO VERY TIRED I AM SO VERY TIRED -+- Bart Simpson on chalkboard in episode AABF20
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
GERBIER Eric
Vincent Marchal wrote:
Bonjour,
J'ai un problème de programation en C sous linux.
Les réels sont systématiquement ramenés à leurs parties entières.
Le même programme fonctionne parfaitement sous un autre système unix (SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un forum linux, plutôt que sur forum C++
Le compilateur est GCC 3.3.5, le système est un Red Hat 9.
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
c'est un probleme de separateur : il faut saisir 2.3 ( deux point trois)
si tu tiens a la virgule, il faudra bricoler les locales (LC_NUMERIC ? )
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Vincent Marchal wrote:
Bonjour,
J'ai un problème de programation en C sous linux.
Les réels sont systématiquement ramenés à leurs parties entières.
Le même programme fonctionne parfaitement sous un autre système unix
(SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un
forum linux, plutôt que sur forum C++
Le compilateur est GCC 3.3.5, le système est un Red Hat 9.
Entrez un reel a virgule : 2,3
le reel entre est : 2
Entrez un 2eme reel a virgule : la chaine est : ,3
le reel entre est : 0
c'est un probleme de separateur : il faut saisir 2.3 ( deux point trois)
si tu tiens a la virgule, il faudra bricoler les locales (LC_NUMERIC ? )
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Les réels sont systématiquement ramenés à leurs parties entières.
Le même programme fonctionne parfaitement sous un autre système unix (SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un forum linux, plutôt que sur forum C++
Le compilateur est GCC 3.3.5, le système est un Red Hat 9.
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
c'est un probleme de separateur : il faut saisir 2.3 ( deux point trois)
si tu tiens a la virgule, il faudra bricoler les locales (LC_NUMERIC ? )
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Bastien Durel
Vincent Marchal wrote:
Bonjour,
J'ai un problème de programation en C sous linux.
Les réels sont systématiquement ramenés à leurs parties entières.
Le même programme fonctionne parfaitement sous un autre système unix (SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un forum linux, plutôt que sur forum C++
Le compilateur est GCC 3.3.5, le système est un Red Hat 9.
Voici le source du prog:
#include <stdlib.h> #include <stream.h>
int main() { float r; cout << "Entrez un reel a virgule : "; cin >> r; cout << " le reel entre est : " << r << endl;
char t[10]; cout << "Entrez un 2eme reel a virgule : "; cin >> t;
cout << " la chaine est : " << t << endl; r = atof(t); cout << " le reel entre est : " << r << endl;
return 1; }
Et voici le résultat:
1er essai :
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
Dans cet essai, le programme exécuté ne s'arrête pas pour la saisie de la variable chaîne. L'affichage de cette variable est donc aléatoire.
2eme essai :
Entrez un reel a virgule : 5 le reel entre est : 5 Entrez un 2eme reel a virgule : 2,35 la chaine est : 2,35 le reel entre est : 2
Si quelqu'un pouvait me denner une idée, une piste... Merci d'avance.
Bonjour,
Essaye avec un point plutôt qu'une virgule ...
:/tmp$ g++ test.cpp :/tmp$ ./a.out Entrez un reel a virgule : 5.4 le reel entre est : 5.4 Entrez un 2eme reel a virgule : -42.8 la chaine est : -42.8 le reel entre est : -42.8
:/tmp$ ./a.out Entrez un reel a virgule : 5,4 le reel entre est : 5 Entrez un 2eme reel a virgule : la chaine est : ,4 le reel entre est : 0 C'est normal, ',' ne fait pas partie d'un nombre, donc "5" est le nombre, et ",4" est gardé en cache. Par contre, c'est une chaîne, donc il est utilisé (avec le '4' qui suit), mais atof ne sait pas traduire ",4" donc renvoie 0.
-- Bastien Durel.
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Vincent Marchal wrote:
Bonjour,
J'ai un problème de programation en C sous linux.
Les réels sont systématiquement ramenés à leurs parties entières.
Le même programme fonctionne parfaitement sous un autre système unix
(SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un
forum linux, plutôt que sur forum C++
Le compilateur est GCC 3.3.5, le système est un Red Hat 9.
Voici le source du prog:
#include <stdlib.h>
#include <stream.h>
int main()
{
float r;
cout << "Entrez un reel a virgule : ";
cin >> r;
cout << " le reel entre est : " << r << endl;
char t[10];
cout << "Entrez un 2eme reel a virgule : ";
cin >> t;
cout << " la chaine est : " << t << endl;
r = atof(t);
cout << " le reel entre est : " << r << endl;
return 1;
}
Et voici le résultat:
1er essai :
Entrez un reel a virgule : 2,3
le reel entre est : 2
Entrez un 2eme reel a virgule : la chaine est : ,3
le reel entre est : 0
Dans cet essai, le programme exécuté ne s'arrête pas pour la saisie de
la variable chaîne. L'affichage de cette variable est donc aléatoire.
2eme essai :
Entrez un reel a virgule : 5
le reel entre est : 5
Entrez un 2eme reel a virgule : 2,35
la chaine est : 2,35
le reel entre est : 2
Si quelqu'un pouvait me denner une idée, une piste...
Merci d'avance.
Bonjour,
Essaye avec un point plutôt qu'une virgule ...
bastien@arrakeen:/tmp$ g++ test.cpp
bastien@arrakeen:/tmp$ ./a.out
Entrez un reel a virgule : 5.4
le reel entre est : 5.4
Entrez un 2eme reel a virgule : -42.8
la chaine est : -42.8
le reel entre est : -42.8
bastien@arrakeen:/tmp$ ./a.out
Entrez un reel a virgule : 5,4
le reel entre est : 5
Entrez un 2eme reel a virgule : la chaine est : ,4
le reel entre est : 0
C'est normal, ',' ne fait pas partie d'un nombre, donc "5" est le nombre, et
",4" est gardé en cache. Par contre, c'est une chaîne, donc il est utilisé (avec
le '4' qui suit), mais atof ne sait pas traduire ",4" donc renvoie 0.
--
Bastien Durel.
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Les réels sont systématiquement ramenés à leurs parties entières.
Le même programme fonctionne parfaitement sous un autre système unix (SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un forum linux, plutôt que sur forum C++
Le compilateur est GCC 3.3.5, le système est un Red Hat 9.
Voici le source du prog:
#include <stdlib.h> #include <stream.h>
int main() { float r; cout << "Entrez un reel a virgule : "; cin >> r; cout << " le reel entre est : " << r << endl;
char t[10]; cout << "Entrez un 2eme reel a virgule : "; cin >> t;
cout << " la chaine est : " << t << endl; r = atof(t); cout << " le reel entre est : " << r << endl;
return 1; }
Et voici le résultat:
1er essai :
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
Dans cet essai, le programme exécuté ne s'arrête pas pour la saisie de la variable chaîne. L'affichage de cette variable est donc aléatoire.
2eme essai :
Entrez un reel a virgule : 5 le reel entre est : 5 Entrez un 2eme reel a virgule : 2,35 la chaine est : 2,35 le reel entre est : 2
Si quelqu'un pouvait me denner une idée, une piste... Merci d'avance.
Bonjour,
Essaye avec un point plutôt qu'une virgule ...
:/tmp$ g++ test.cpp :/tmp$ ./a.out Entrez un reel a virgule : 5.4 le reel entre est : 5.4 Entrez un 2eme reel a virgule : -42.8 la chaine est : -42.8 le reel entre est : -42.8
:/tmp$ ./a.out Entrez un reel a virgule : 5,4 le reel entre est : 5 Entrez un 2eme reel a virgule : la chaine est : ,4 le reel entre est : 0 C'est normal, ',' ne fait pas partie d'un nombre, donc "5" est le nombre, et ",4" est gardé en cache. Par contre, c'est une chaîne, donc il est utilisé (avec le '4' qui suit), mais atof ne sait pas traduire ",4" donc renvoie 0.
-- Bastien Durel.
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
news
Vincent Marchal wrote:
1er essai :
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
Avec 2.3 ca fonctionne (chez moi, oui)? Je soupconne un probleme d'internalisation...
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Vincent Marchal wrote:
1er essai :
Entrez un reel a virgule : 2,3
le reel entre est : 2
Entrez un 2eme reel a virgule : la chaine est : ,3
le reel entre est : 0
Avec 2.3 ca fonctionne (chez moi, oui)?
Je soupconne un probleme d'internalisation...
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
Avec 2.3 ca fonctionne (chez moi, oui)? Je soupconne un probleme d'internalisation...
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Michel Arboi
On Tue Aug 02 2005 at 12:22, Vincent Marchal wrote:
Le même programme fonctionne parfaitement sous un autre système unix (SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un forum linux, plutôt que sur forum C++
AMHA, ton problème vient des "locale". J'ai essayé de mettre LC_ALL ou LC_NUMERIC à "fr_FR", mais ça ne change rien.
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
Si tu entres 2.3 et .3, ça marche. Avec des virgules au lieu de points, ça foire.
Hopant avoir helpé...
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
On Tue Aug 02 2005 at 12:22, Vincent Marchal wrote:
Le même programme fonctionne parfaitement sous un autre système unix
(SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un
forum linux, plutôt que sur forum C++
AMHA, ton problème vient des "locale". J'ai essayé de mettre LC_ALL
ou LC_NUMERIC à "fr_FR", mais ça ne change rien.
Entrez un reel a virgule : 2,3
le reel entre est : 2
Entrez un 2eme reel a virgule : la chaine est : ,3
le reel entre est : 0
Si tu entres 2.3 et .3, ça marche. Avec des virgules au lieu de
points, ça foire.
Hopant avoir helpé...
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
On Tue Aug 02 2005 at 12:22, Vincent Marchal wrote:
Le même programme fonctionne parfaitement sous un autre système unix (SGI sous irix 6.5), c'est pourquoi je préfère poser la question sur un forum linux, plutôt que sur forum C++
AMHA, ton problème vient des "locale". J'ai essayé de mettre LC_ALL ou LC_NUMERIC à "fr_FR", mais ça ne change rien.
Entrez un reel a virgule : 2,3 le reel entre est : 2 Entrez un 2eme reel a virgule : la chaine est : ,3 le reel entre est : 0
Si tu entres 2.3 et .3, ça marche. Avec des virgules au lieu de points, ça foire.
Hopant avoir helpé...
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.