Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
Marc Boyer wrote on 28/02/2007 10:46:Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
non, même en 2007, le compilo ne vérifie pas qu'au premier "%lf"
correspond bien un pointeur sur double.
(il a été indiqué qu'un oubli du modifier "l" est possible...)
Marc Boyer wrote on 28/02/2007 10:46:
Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
non, même en 2007, le compilo ne vérifie pas qu'au premier "%lf"
correspond bien un pointeur sur double.
(il a été indiqué qu'un oubli du modifier "l" est possible...)
Marc Boyer wrote on 28/02/2007 10:46:Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
non, même en 2007, le compilo ne vérifie pas qu'au premier "%lf"
correspond bien un pointeur sur double.
(il a été indiqué qu'un oubli du modifier "l" est possible...)
On Feb 26, 6:11 pm, Michel Decima wrote:On Mon, 26 Feb 2007 15:28:12 +0000 (UTC), Marc Boyer
:string s= "%%%{1,[2,0,0,0,0,2]%%%}+%%%{1,[1,0,0,1,0,2]%%%}";
int res= scanf("%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}+"
"%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}",
&coef,°re,
/// A continuer avec la sémantique de tes vars
C'est lourd, impossible à maintenir, et tout se casse la gueule si
jamais l'expression n'est pas fixe.
Sérieux ?
Et tu envisages quoi qui serait moins lourd, plus maintenable ?
Prèsque n'importe quoi. Côté maintenabilité : d'après la
sémantique qu'il a suggéré, ça ne m'étonnerait pas que certai nes
des valeurs, voire toutes, soient des flottants. Alors,
attention entre les %f et les %lf.
Le compilo émet des avertissements il me semble.
Sans parler des histoires de
localisation : s'il travaille avec une locale français (fort
probable vue la langue dans laquelle il a posté), les virgules
vont poser des problèmes s'il veut des flottants.
Ca, c'est un vrai problème. Mais une fois identifié, il
se résoud assez vite (remplacer les , par des :, les %
par des # tant qu'on y est, et les . par des ,).
On Feb 26, 6:11 pm, Michel Decima <michel.dec...@orange-ft.com> wrote:
On Mon, 26 Feb 2007 15:28:12 +0000 (UTC), Marc Boyer
<Marc.Bo...@enseeiht.yahoo.fr.invalid>:
string s= "%%%{1,[2,0,0,0,0,2]%%%}+%%%{1,[1,0,0,1,0,2]%%%}";
int res= scanf("%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}+"
"%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}",
&coef,°re,
/// A continuer avec la sémantique de tes vars
C'est lourd, impossible à maintenir, et tout se casse la gueule si
jamais l'expression n'est pas fixe.
Sérieux ?
Et tu envisages quoi qui serait moins lourd, plus maintenable ?
Prèsque n'importe quoi. Côté maintenabilité : d'après la
sémantique qu'il a suggéré, ça ne m'étonnerait pas que certai nes
des valeurs, voire toutes, soient des flottants. Alors,
attention entre les %f et les %lf.
Le compilo émet des avertissements il me semble.
Sans parler des histoires de
localisation : s'il travaille avec une locale français (fort
probable vue la langue dans laquelle il a posté), les virgules
vont poser des problèmes s'il veut des flottants.
Ca, c'est un vrai problème. Mais une fois identifié, il
se résoud assez vite (remplacer les , par des :, les %
par des # tant qu'on y est, et les . par des ,).
On Feb 26, 6:11 pm, Michel Decima wrote:On Mon, 26 Feb 2007 15:28:12 +0000 (UTC), Marc Boyer
:string s= "%%%{1,[2,0,0,0,0,2]%%%}+%%%{1,[1,0,0,1,0,2]%%%}";
int res= scanf("%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}+"
"%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}",
&coef,°re,
/// A continuer avec la sémantique de tes vars
C'est lourd, impossible à maintenir, et tout se casse la gueule si
jamais l'expression n'est pas fixe.
Sérieux ?
Et tu envisages quoi qui serait moins lourd, plus maintenable ?
Prèsque n'importe quoi. Côté maintenabilité : d'après la
sémantique qu'il a suggéré, ça ne m'étonnerait pas que certai nes
des valeurs, voire toutes, soient des flottants. Alors,
attention entre les %f et les %lf.
Le compilo émet des avertissements il me semble.
Sans parler des histoires de
localisation : s'il travaille avec une locale français (fort
probable vue la langue dans laquelle il a posté), les virgules
vont poser des problèmes s'il veut des flottants.
Ca, c'est un vrai problème. Mais une fois identifié, il
se résoud assez vite (remplacer les , par des :, les %
par des # tant qu'on y est, et les . par des ,).
Marc Boyer wrote on 28/02/2007 10:46:Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
non, même en 2007, le compilo ne vérifie pas qu'au premier "%lf"
correspond bien un pointeur sur double.
(il a été indiqué qu'un oubli du modifier "l" est possible...)
mais également que l'écriture from-rien-du-tout d'une classe stream
implémentant un extracteur d'entiers et/ou flotttants est un très bon
exercice qui pourra être mené en temps assez court.
Marc Boyer wrote on 28/02/2007 10:46:
Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
non, même en 2007, le compilo ne vérifie pas qu'au premier "%lf"
correspond bien un pointeur sur double.
(il a été indiqué qu'un oubli du modifier "l" est possible...)
mais également que l'écriture from-rien-du-tout d'une classe stream
implémentant un extracteur d'entiers et/ou flotttants est un très bon
exercice qui pourra être mené en temps assez court.
Marc Boyer wrote on 28/02/2007 10:46:Parce qu'il est extrèmement fragile en ce qui concerne les
paramètres, exigeant des pointeurs à des types bien précis ?
M'enfin bon, les compilos en 2007 font la vérification de
type il me semble, non ?
non, même en 2007, le compilo ne vérifie pas qu'au premier "%lf"
correspond bien un pointeur sur double.
(il a été indiqué qu'un oubli du modifier "l" est possible...)
mais également que l'écriture from-rien-du-tout d'une classe stream
implémentant un extracteur d'entiers et/ou flotttants est un très bon
exercice qui pourra être mené en temps assez court.
On Feb 28, 10:48 am, Marc BoyerOn Feb 26, 6:11 pm, Michel Decima wrote:On Mon, 26 Feb 2007 15:28:12 +0000 (UTC), Marc Boyer
:string s= "%%%{1,[2,0,0,0,0,2]%%%}+%%%{1,[1,0,0,1,0,2]%%%}";
int res= scanf("%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}+"
"%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}",
&coef,°re,
/// A continuer avec la sémantique de tes vars
C'est lourd, impossible à maintenir, et tout se casse la gueule si
jamais l'expression n'est pas fixe.
Sérieux ?
Et tu envisages quoi qui serait moins lourd, plus maintenable ?
Prèsque n'importe quoi. Côté maintenabilité : d'après la
sémantique qu'il a suggéré, ça ne m'étonnerait pas que certaines
des valeurs, voire toutes, soient des flottants. Alors,
attention entre les %f et les %lf.
Le compilo émet des avertissements il me semble.
La plupart non.
Et évidemment, ça serait plus maintenable de
construire la chaîne à partir des composants -- une chaîne separ
qui contient "%%%", par exemple -- au moyen des additions sur
des chaînes ; dans ce cas-là, je ne connais aucun compilateur
qui émet un avertissement.
Sans parler des histoires de
localisation : s'il travaille avec une locale français (fort
probable vue la langue dans laquelle il a posté), les virgules
vont poser des problèmes s'il veut des flottants.
Ca, c'est un vrai problème. Mais une fois identifié, il
se résoud assez vite (remplacer les , par des :, les %
par des # tant qu'on y est, et les . par des ,).
Ou en forçant la locale global à "C", et en le restituant par la
suite.
Ce n'est pas que ce n'est pas faisable, mais c'est bien une
lourdeur de plus, et un problème supplémentaire de maintenance.
On Feb 28, 10:48 am, Marc Boyer <Marc.Bo...@enseeiht.yahoo.fr.invalid>
On Feb 26, 6:11 pm, Michel Decima <michel.dec...@orange-ft.com> wrote:
On Mon, 26 Feb 2007 15:28:12 +0000 (UTC), Marc Boyer
<Marc.Bo...@enseeiht.yahoo.fr.invalid>:
string s= "%%%{1,[2,0,0,0,0,2]%%%}+%%%{1,[1,0,0,1,0,2]%%%}";
int res= scanf("%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}+"
"%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}",
&coef,°re,
/// A continuer avec la sémantique de tes vars
C'est lourd, impossible à maintenir, et tout se casse la gueule si
jamais l'expression n'est pas fixe.
Sérieux ?
Et tu envisages quoi qui serait moins lourd, plus maintenable ?
Prèsque n'importe quoi. Côté maintenabilité : d'après la
sémantique qu'il a suggéré, ça ne m'étonnerait pas que certaines
des valeurs, voire toutes, soient des flottants. Alors,
attention entre les %f et les %lf.
Le compilo émet des avertissements il me semble.
La plupart non.
Et évidemment, ça serait plus maintenable de
construire la chaîne à partir des composants -- une chaîne separ
qui contient "%%%", par exemple -- au moyen des additions sur
des chaînes ; dans ce cas-là, je ne connais aucun compilateur
qui émet un avertissement.
Sans parler des histoires de
localisation : s'il travaille avec une locale français (fort
probable vue la langue dans laquelle il a posté), les virgules
vont poser des problèmes s'il veut des flottants.
Ca, c'est un vrai problème. Mais une fois identifié, il
se résoud assez vite (remplacer les , par des :, les %
par des # tant qu'on y est, et les . par des ,).
Ou en forçant la locale global à "C", et en le restituant par la
suite.
Ce n'est pas que ce n'est pas faisable, mais c'est bien une
lourdeur de plus, et un problème supplémentaire de maintenance.
On Feb 28, 10:48 am, Marc BoyerOn Feb 26, 6:11 pm, Michel Decima wrote:On Mon, 26 Feb 2007 15:28:12 +0000 (UTC), Marc Boyer
:string s= "%%%{1,[2,0,0,0,0,2]%%%}+%%%{1,[1,0,0,1,0,2]%%%}";
int res= scanf("%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}+"
"%%%%%%{%d,[%d,%d,%d,%d,%d,%d]%%%%%%}",
&coef,°re,
/// A continuer avec la sémantique de tes vars
C'est lourd, impossible à maintenir, et tout se casse la gueule si
jamais l'expression n'est pas fixe.
Sérieux ?
Et tu envisages quoi qui serait moins lourd, plus maintenable ?
Prèsque n'importe quoi. Côté maintenabilité : d'après la
sémantique qu'il a suggéré, ça ne m'étonnerait pas que certaines
des valeurs, voire toutes, soient des flottants. Alors,
attention entre les %f et les %lf.
Le compilo émet des avertissements il me semble.
La plupart non.
Et évidemment, ça serait plus maintenable de
construire la chaîne à partir des composants -- une chaîne separ
qui contient "%%%", par exemple -- au moyen des additions sur
des chaînes ; dans ce cas-là, je ne connais aucun compilateur
qui émet un avertissement.
Sans parler des histoires de
localisation : s'il travaille avec une locale français (fort
probable vue la langue dans laquelle il a posté), les virgules
vont poser des problèmes s'il veut des flottants.
Ca, c'est un vrai problème. Mais une fois identifié, il
se résoud assez vite (remplacer les , par des :, les %
par des # tant qu'on y est, et les . par des ,).
Ou en forçant la locale global à "C", et en le restituant par la
suite.
Ce n'est pas que ce n'est pas faisable, mais c'est bien une
lourdeur de plus, et un problème supplémentaire de maintenance.
Ou en forçant la locale global à "C", et en le restituant par la
suite.
Ou en forçant la locale global à "C", et en le restituant par la
suite.
Ou en forçant la locale global à "C", et en le restituant par la
suite.
int main(){
float f;
double d;
scanf("%f", &f);
scanf("%lf", &f);
scanf("%f", &d);
scanf("%lf", &d);
return 0;
}
zeus|news> g++ fclc.c -W -Wall -pedantic
fclc.c: In function `int main()':
fclc.c:7: attention : format double, arg float (arg 2)
fclc.c:8: attention : format float, arg double (arg 2)
Alors apres, oui, on peut utiliser le langage sans demander
de Warning au compilo. C'est AMHA un usage aussi mauvais que
l'usage de gets ou l'usage de char* en lieu et place de
std::string.
Le C a une vieille histoire avec quelques scories, le C++
en herite de quelques unes.
mais je pense qu'a la maintenance, on prefere
l'usage de solutions standard que de solutions ad-hoc.
int main(){
float f;
double d;
scanf("%f", &f);
scanf("%lf", &f);
scanf("%f", &d);
scanf("%lf", &d);
return 0;
}
zeus|news> g++ fclc.c -W -Wall -pedantic
fclc.c: In function `int main()':
fclc.c:7: attention : format double, arg float (arg 2)
fclc.c:8: attention : format float, arg double (arg 2)
Alors apres, oui, on peut utiliser le langage sans demander
de Warning au compilo. C'est AMHA un usage aussi mauvais que
l'usage de gets ou l'usage de char* en lieu et place de
std::string.
Le C a une vieille histoire avec quelques scories, le C++
en herite de quelques unes.
mais je pense qu'a la maintenance, on prefere
l'usage de solutions standard que de solutions ad-hoc.
int main(){
float f;
double d;
scanf("%f", &f);
scanf("%lf", &f);
scanf("%f", &d);
scanf("%lf", &d);
return 0;
}
zeus|news> g++ fclc.c -W -Wall -pedantic
fclc.c: In function `int main()':
fclc.c:7: attention : format double, arg float (arg 2)
fclc.c:8: attention : format float, arg double (arg 2)
Alors apres, oui, on peut utiliser le langage sans demander
de Warning au compilo. C'est AMHA un usage aussi mauvais que
l'usage de gets ou l'usage de char* en lieu et place de
std::string.
Le C a une vieille histoire avec quelques scories, le C++
en herite de quelques unes.
mais je pense qu'a la maintenance, on prefere
l'usage de solutions standard que de solutions ad-hoc.
Marc Boyer wrote on 01/03/2007 09:27:
int main(){
float f;
double d;
scanf("%f", &f);
scanf("%lf", &f);
scanf("%f", &d);
scanf("%lf", &d);
return 0;
}
zeus|news> g++ fclc.c -W -Wall -pedantic
fclc.c: In function `int main()':
fclc.c:7: attention : format double, arg float (arg 2)
fclc.c:8: attention : format float, arg double (arg 2)
?!? jamais vu de tels messages - et je ne les attendais pas !
le mix français/anglais traduit le fait que c'est un plug-in (g++ très
spécifique) expérimental ?
ça marche aussi sur une construction aussi basique que:
struct floats {
float f1, f2;
double d;
};
int foo(floats& out, const char* in, const char* format)
{
return (in) ? sscanf(in, format, &out.f1, &out.f2, &out.d) : 0;
}
Alors apres, oui, on peut utiliser le langage sans demander
de Warning au compilo. C'est AMHA un usage aussi mauvais que
l'usage de gets ou l'usage de char* en lieu et place de
std::string.
personne n'a suggéré cela.
mais je pense qu'a la maintenance, on prefere
l'usage de solutions standard que de solutions ad-hoc.
hmm, "ad hoc" (ou idoine) signifie "convenant spécifiquement à la
situation", on y préfererait des solutions "standards" donc
généralistes, donc incluant plein de détails, options, subtilités,
inutiles et donc potentiellement confusants pour le problème traité ??
je ne suis pas sur de partager ce point de vue.
Marc Boyer wrote on 01/03/2007 09:27:
int main(){
float f;
double d;
scanf("%f", &f);
scanf("%lf", &f);
scanf("%f", &d);
scanf("%lf", &d);
return 0;
}
zeus|news> g++ fclc.c -W -Wall -pedantic
fclc.c: In function `int main()':
fclc.c:7: attention : format double, arg float (arg 2)
fclc.c:8: attention : format float, arg double (arg 2)
?!? jamais vu de tels messages - et je ne les attendais pas !
le mix français/anglais traduit le fait que c'est un plug-in (g++ très
spécifique) expérimental ?
ça marche aussi sur une construction aussi basique que:
struct floats {
float f1, f2;
double d;
};
int foo(floats& out, const char* in, const char* format)
{
return (in) ? sscanf(in, format, &out.f1, &out.f2, &out.d) : 0;
}
Alors apres, oui, on peut utiliser le langage sans demander
de Warning au compilo. C'est AMHA un usage aussi mauvais que
l'usage de gets ou l'usage de char* en lieu et place de
std::string.
personne n'a suggéré cela.
mais je pense qu'a la maintenance, on prefere
l'usage de solutions standard que de solutions ad-hoc.
hmm, "ad hoc" (ou idoine) signifie "convenant spécifiquement à la
situation", on y préfererait des solutions "standards" donc
généralistes, donc incluant plein de détails, options, subtilités,
inutiles et donc potentiellement confusants pour le problème traité ??
je ne suis pas sur de partager ce point de vue.
Marc Boyer wrote on 01/03/2007 09:27:
int main(){
float f;
double d;
scanf("%f", &f);
scanf("%lf", &f);
scanf("%f", &d);
scanf("%lf", &d);
return 0;
}
zeus|news> g++ fclc.c -W -Wall -pedantic
fclc.c: In function `int main()':
fclc.c:7: attention : format double, arg float (arg 2)
fclc.c:8: attention : format float, arg double (arg 2)
?!? jamais vu de tels messages - et je ne les attendais pas !
le mix français/anglais traduit le fait que c'est un plug-in (g++ très
spécifique) expérimental ?
ça marche aussi sur une construction aussi basique que:
struct floats {
float f1, f2;
double d;
};
int foo(floats& out, const char* in, const char* format)
{
return (in) ? sscanf(in, format, &out.f1, &out.f2, &out.d) : 0;
}
Alors apres, oui, on peut utiliser le langage sans demander
de Warning au compilo. C'est AMHA un usage aussi mauvais que
l'usage de gets ou l'usage de char* en lieu et place de
std::string.
personne n'a suggéré cela.
mais je pense qu'a la maintenance, on prefere
l'usage de solutions standard que de solutions ad-hoc.
hmm, "ad hoc" (ou idoine) signifie "convenant spécifiquement à la
situation", on y préfererait des solutions "standards" donc
généralistes, donc incluant plein de détails, options, subtilités,
inutiles et donc potentiellement confusants pour le problème traité ??
je ne suis pas sur de partager ce point de vue.
Ben, toujours question d'équilibre.
Là, pour parser une chaine du style
%%%{1,[2,0,0,0,0]%%%}+%%%{1,[2,0,0,0,0]%%%}
tu proposais d'écrire une classe istream spécifique, c'est bien ça ?
Ben, toujours question d'équilibre.
Là, pour parser une chaine du style
%%%{1,[2,0,0,0,0]%%%}+%%%{1,[2,0,0,0,0]%%%}
tu proposais d'écrire une classe istream spécifique, c'est bien ça ?
Ben, toujours question d'équilibre.
Là, pour parser une chaine du style
%%%{1,[2,0,0,0,0]%%%}+%%%{1,[2,0,0,0,0]%%%}
tu proposais d'écrire une classe istream spécifique, c'est bien ça ?
Marc Boyer wrote on 01/03/2007 16:59:
Ben, toujours question d'équilibre.
oui, appliquuons *la* règle ... au cas par cas ;)Là, pour parser une chaine du style
%%%{1,[2,0,0,0,0]%%%}+%%%{1,[2,0,0,0,0]%%%}
tu proposais d'écrire une classe istream spécifique, c'est bien ça ?
oui - le PO nous parle de coefficient et de degré (ce qu'il a appelé la
sémantique des valeurs extraites).
ce point me laisse penser que l'on ne cherchera ici à extraire les
valeurs en leur donnant un sens basé sur la position et/ou la syntaxe
(dans un {} pour le rang du coeff, dans un [] pour les exposants d'un
polynome (?)).
Marc Boyer wrote on 01/03/2007 16:59:
Ben, toujours question d'équilibre.
oui, appliquuons *la* règle ... au cas par cas ;)
Là, pour parser une chaine du style
%%%{1,[2,0,0,0,0]%%%}+%%%{1,[2,0,0,0,0]%%%}
tu proposais d'écrire une classe istream spécifique, c'est bien ça ?
oui - le PO nous parle de coefficient et de degré (ce qu'il a appelé la
sémantique des valeurs extraites).
ce point me laisse penser que l'on ne cherchera ici à extraire les
valeurs en leur donnant un sens basé sur la position et/ou la syntaxe
(dans un {} pour le rang du coeff, dans un [] pour les exposants d'un
polynome (?)).
Marc Boyer wrote on 01/03/2007 16:59:
Ben, toujours question d'équilibre.
oui, appliquuons *la* règle ... au cas par cas ;)Là, pour parser une chaine du style
%%%{1,[2,0,0,0,0]%%%}+%%%{1,[2,0,0,0,0]%%%}
tu proposais d'écrire une classe istream spécifique, c'est bien ça ?
oui - le PO nous parle de coefficient et de degré (ce qu'il a appelé la
sémantique des valeurs extraites).
ce point me laisse penser que l'on ne cherchera ici à extraire les
valeurs en leur donnant un sens basé sur la position et/ou la syntaxe
(dans un {} pour le rang du coeff, dans un [] pour les exposants d'un
polynome (?)).