Il n'y aurait pas un autre opérateur caché que je pourrais
détourner du droit chemin ?
Il te faudrait, si j'ai bien compris, un opérateur binaire plus
prioritaire que +, -, *, /, mais moins que ().
D'après la table en bas de
http://www.cplusplus.com/doc/tutorial/operators.html
il n'y a que .* et ->* qui fassent l'affaire, mais ils font
partie des rares qui ne peuvent pas être surchargés. :)
Ceci dit, [] pourrait faire l'affaire...
Je ne suis sûrement pas le premier à écrire
une telle bibliothèque. Comment font les autres ?
Il n'y aurait pas un autre opérateur caché que je pourrais
détourner du droit chemin ?
Il te faudrait, si j'ai bien compris, un opérateur binaire plus
prioritaire que +, -, *, /, mais moins que ().
D'après la table en bas de
http://www.cplusplus.com/doc/tutorial/operators.html
il n'y a que .* et ->* qui fassent l'affaire, mais ils font
partie des rares qui ne peuvent pas être surchargés. :)
Ceci dit, [] pourrait faire l'affaire...
Je ne suis sûrement pas le premier à écrire
une telle bibliothèque. Comment font les autres ?
Il n'y aurait pas un autre opérateur caché que je pourrais
détourner du droit chemin ?
Il te faudrait, si j'ai bien compris, un opérateur binaire plus
prioritaire que +, -, *, /, mais moins que ().
D'après la table en bas de
http://www.cplusplus.com/doc/tutorial/operators.html
il n'y a que .* et ->* qui fassent l'affaire, mais ils font
partie des rares qui ne peuvent pas être surchargés. :)
Ceci dit, [] pourrait faire l'affaire...
Je ne suis sûrement pas le premier à écrire
une telle bibliothèque. Comment font les autres ?
Il est quand même plus courant en maths d'écrire pgcd(a,b)
et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée,
probablement parce que ^ est la puissance sur les
calculatrices.
Et puis aussi parce que ^, c'est l'exposant en LaTeX, et que
je pense qu'une vaste majorité des mathématiciens actuels
écrivent leurs papiers en LaTeX.
Il est quand même plus courant en maths d'écrire pgcd(a,b)
et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée,
probablement parce que ^ est la puissance sur les
calculatrices.
Et puis aussi parce que ^, c'est l'exposant en LaTeX, et que
je pense qu'une vaste majorité des mathématiciens actuels
écrivent leurs papiers en LaTeX.
Il est quand même plus courant en maths d'écrire pgcd(a,b)
et ppcm(a,b). C'est d'ailleurs la notation utilisée en lycée,
probablement parce que ^ est la puissance sur les
calculatrices.
Et puis aussi parce que ^, c'est l'exposant en LaTeX, et que
je pense qu'une vaste majorité des mathématiciens actuels
écrivent leurs papiers en LaTeX.
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'en reviens toujours -- cette fois-ci, je m'adresse à la
source:-).
D'où tiens-tu l'idée qu'en C++, ^ est l'opérateur exposant (ou
de puissance) ?
Si j'écris du texte en ASCII, j'utilise parfois
^ pour indiquer que ce qui suit est en superscript : surélevé et
plus petit. Parce que c'est la signification de ^ en LaTeX ;
j'utilise aussi parfois _ pour indiquer un subscript. Mais c'est
une convention de formattage de texte, et non un opérateur de
C++.
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Si X est un entier, ça doit compiler. C'est normal.
Si X est un type qui « ressemble » à un entier, il est aussi
normal de surcharger l'opérateur ^ pour qu'il se comporte comme
sur les entiers, c-à-d qu'il effectue un ou exclusif.
Si ce que tu veux, c'est X puissance 3, etc., en C++ (comme en
Polynome P = pow(X,3) - 6 * pow(X,2) + 9 * X - 4 ;
C'est du C++ ; en Fortran, je m'attendrais à quelque chose
comme :
P = X**3 - 6*X**2 + 9*X - 4
Mais ici, on ne considère que le C++.
Si je veux que ça se formatte comme une expression mathématique
habituelle, j'écrirais :
P = X^3 - 6X^2 + 9X - 4
et je passerais mon texte ASCII à LaTeX, pour avoir quelque
chose de joli. Mais il s'agit là d'une spécification de
présentation, non d'un opérateur (et évidemment, en C++, cette
notation pose d'autres problèmes).
En somme, chaque langage a ces conventions ; quand on travaille
dans un langage X, il vaut mieux suivre les conventions du
langage X, et non en inventer des nouvelles.
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Écrire du C++, et non du LaTeX. Si le fait qu'il faut écrire
9*X, et non simplement 9X, ne te gène pas, où est le problème
avec pow(X,3), plutôt que X^3 ?
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'en reviens toujours -- cette fois-ci, je m'adresse à la
source:-).
D'où tiens-tu l'idée qu'en C++, ^ est l'opérateur exposant (ou
de puissance) ?
Si j'écris du texte en ASCII, j'utilise parfois
^ pour indiquer que ce qui suit est en superscript : surélevé et
plus petit. Parce que c'est la signification de ^ en LaTeX ;
j'utilise aussi parfois _ pour indiquer un subscript. Mais c'est
une convention de formattage de texte, et non un opérateur de
C++.
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Si X est un entier, ça doit compiler. C'est normal.
Si X est un type qui « ressemble » à un entier, il est aussi
normal de surcharger l'opérateur ^ pour qu'il se comporte comme
sur les entiers, c-à-d qu'il effectue un ou exclusif.
Si ce que tu veux, c'est X puissance 3, etc., en C++ (comme en
Polynome P = pow(X,3) - 6 * pow(X,2) + 9 * X - 4 ;
C'est du C++ ; en Fortran, je m'attendrais à quelque chose
comme :
P = X**3 - 6*X**2 + 9*X - 4
Mais ici, on ne considère que le C++.
Si je veux que ça se formatte comme une expression mathématique
habituelle, j'écrirais :
P = X^3 - 6X^2 + 9X - 4
et je passerais mon texte ASCII à LaTeX, pour avoir quelque
chose de joli. Mais il s'agit là d'une spécification de
présentation, non d'un opérateur (et évidemment, en C++, cette
notation pose d'autres problèmes).
En somme, chaque langage a ces conventions ; quand on travaille
dans un langage X, il vaut mieux suivre les conventions du
langage X, et non en inventer des nouvelles.
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Écrire du C++, et non du LaTeX. Si le fait qu'il faut écrire
9*X, et non simplement 9X, ne te gène pas, où est le problème
avec pow(X,3), plutôt que X^3 ?
J'écris une bibliothèque de polynômes et j'ai
quelques problèmes avec l'opérateur exposant (^).
J'en reviens toujours -- cette fois-ci, je m'adresse à la
source:-).
D'où tiens-tu l'idée qu'en C++, ^ est l'opérateur exposant (ou
de puissance) ?
Si j'écris du texte en ASCII, j'utilise parfois
^ pour indiquer que ce qui suit est en superscript : surélevé et
plus petit. Parce que c'est la signification de ^ en LaTeX ;
j'utilise aussi parfois _ pour indiquer un subscript. Mais c'est
une convention de formattage de texte, et non un opérateur de
C++.
J'ai écrit toutes les surcharges nécessaires et
ceci par, exemple, compile:
Polynome P = (X^3) - 6 * (X^2) + 9 * X - 4;
Si X est un entier, ça doit compiler. C'est normal.
Si X est un type qui « ressemble » à un entier, il est aussi
normal de surcharger l'opérateur ^ pour qu'il se comporte comme
sur les entiers, c-à-d qu'il effectue un ou exclusif.
Si ce que tu veux, c'est X puissance 3, etc., en C++ (comme en
Polynome P = pow(X,3) - 6 * pow(X,2) + 9 * X - 4 ;
C'est du C++ ; en Fortran, je m'attendrais à quelque chose
comme :
P = X**3 - 6*X**2 + 9*X - 4
Mais ici, on ne considère que le C++.
Si je veux que ça se formatte comme une expression mathématique
habituelle, j'écrirais :
P = X^3 - 6X^2 + 9X - 4
et je passerais mon texte ASCII à LaTeX, pour avoir quelque
chose de joli. Mais il s'agit là d'une spécification de
présentation, non d'un opérateur (et évidemment, en C++, cette
notation pose d'autres problèmes).
En somme, chaque langage a ces conventions ; quand on travaille
dans un langage X, il vaut mieux suivre les conventions du
langage X, et non en inventer des nouvelles.
Par contre, ceci ne compile pas:
Polynome P = X^3 - 6 * X^2 + 9 * X - 4;
Par ailleurs X^2 - 1 compile et donne X.
Je n'ai donc pas la bonne priorité.
Y a-t-il moyen d'arranger ça ?
Écrire du C++, et non du LaTeX. Si le fait qu'il faut écrire
9*X, et non simplement 9X, ne te gène pas, où est le problème
avec pow(X,3), plutôt que X^3 ?
Je ne sais pas ce que font les autres, mais on peut imaginer:
Polynome P = X[2] - 1
Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants)
Polynome P = X<2>::value - 1 avec des template mais ça devient cryptique.
Polynome P = pow(X, 2) - 1
Je ne sais pas ce que font les autres, mais on peut imaginer:
Polynome P = X[2] - 1
Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants)
Polynome P = X<2>::value - 1 avec des template mais ça devient cryptique.
Polynome P = pow(X, 2) - 1
Je ne sais pas ce que font les autres, mais on peut imaginer:
Polynome P = X[2] - 1
Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants)
Polynome P = X<2>::value - 1 avec des template mais ça devient cryptique.
Polynome P = pow(X, 2) - 1
Ca permet d'écrire (1 + X) ** _2
Ca permet d'écrire (1 + X) ** _2
Ca permet d'écrire (1 + X) ** _2
/snip
Ca permet d'écrire (1 + X) ** _2
Ca me semble toujours assez obfuscé par rapport à pow(1+X, 2) mais c'est
rigolo
/snip
Ca permet d'écrire (1 + X) ** _2
Ca me semble toujours assez obfuscé par rapport à pow(1+X, 2) mais c'est
rigolo
/snip
Ca permet d'écrire (1 + X) ** _2
Ca me semble toujours assez obfuscé par rapport à pow(1+X, 2) mais c'est
rigolo
En fait j'ai trouvé la solution ultime:
Polynome p = "(1 + X)^2 - 4";
En fait j'ai trouvé la solution ultime:
Polynome p = "(1 + X)^2 - 4";
En fait j'ai trouvé la solution ultime:
Polynome p = "(1 + X)^2 - 4";
Je ne sais pas ce que font les autres, mais on peut imaginer:
Polynome P = X[2] - 1
Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants)
Polynome P = X<2>::value - 1 avec des template mais ça devient
cryptique.
Polynome P = pow(X, 2) - 1
On peut aussi imaginer ca :
struct pow
{
pow(int exp)
: exp(exp)
{ }
int exp;
};
Polynome operator * (const Polynome& p, const pow& e)
{
return pow(p, e.exp);
}
Ca permet d'écrire X * pow(2)
Ensuite on peut définir
template<int n> pow* getPow() { static pow p(n); return &p; }
const pow* _0 = getPow<0>();
const pow* _1 = getPow<1>();
const pow* _2 = getPow<2>();
const pow* _3 = getPow<3>();
...
Ca permet d'écrire (1 + X) ** _2
Ca me semble toujours assez obfuscé par
rapport à pow(1+X, 2) mais c'est rigolo
Je ne sais pas ce que font les autres, mais on peut imaginer:
Polynome P = X[2] - 1
Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants)
Polynome P = X<2>::value - 1 avec des template mais ça devient
cryptique.
Polynome P = pow(X, 2) - 1
On peut aussi imaginer ca :
struct pow
{
pow(int exp)
: exp(exp)
{ }
int exp;
};
Polynome operator * (const Polynome& p, const pow& e)
{
return pow(p, e.exp);
}
Ca permet d'écrire X * pow(2)
Ensuite on peut définir
template<int n> pow* getPow() { static pow p(n); return &p; }
const pow* _0 = getPow<0>();
const pow* _1 = getPow<1>();
const pow* _2 = getPow<2>();
const pow* _3 = getPow<3>();
...
Ca permet d'écrire (1 + X) ** _2
Ca me semble toujours assez obfuscé par
rapport à pow(1+X, 2) mais c'est rigolo
Je ne sais pas ce que font les autres, mais on peut imaginer:
Polynome P = X[2] - 1
Polynome P = X_2 - 1 (avec X_N définit pour les N les plus courants)
Polynome P = X<2>::value - 1 avec des template mais ça devient
cryptique.
Polynome P = pow(X, 2) - 1
On peut aussi imaginer ca :
struct pow
{
pow(int exp)
: exp(exp)
{ }
int exp;
};
Polynome operator * (const Polynome& p, const pow& e)
{
return pow(p, e.exp);
}
Ca permet d'écrire X * pow(2)
Ensuite on peut définir
template<int n> pow* getPow() { static pow p(n); return &p; }
const pow* _0 = getPow<0>();
const pow* _1 = getPow<1>();
const pow* _2 = getPow<2>();
const pow* _3 = getPow<3>();
...
Ca permet d'écrire (1 + X) ** _2
Ca me semble toujours assez obfuscé par
rapport à pow(1+X, 2) mais c'est rigolo
"kanze" a écrit ...
Etienne Rousee wrote:
Si j'écris du texte en ASCII, j'utilise parfois ^ pour
indiquer que ce qui suit est en superscript : surélevé et
plus petit. Parce que c'est la signification de ^ en LaTeX ;
j'utilise aussi parfois _ pour indiquer un subscript. Mais
c'est une convention de formattage de texte, et non un
opérateur de C++.
Oui.
Sur fr.sci.math, on utilise ^ pour l'exposant.
Sur ma calculatrice aussi.
Ce qui explique que j'en ai l'habitude.
Si ce que tu veux, c'est X puissance 3, etc., en C++ (comme en
Polynome P = pow(X,3) - 6 * pow(X,2) + 9 * X - 4 ;
Ben oui, mais je trouve que ce n'est pas très beau.
Je sais, c'est subjectif.
C'est du C++ ; en Fortran, je m'attendrais à quelque chose
comme :
P = X**3 - 6*X**2 + 9*X - 4
Je trouve que c'est déjà un peu plus joli.
Mais ici, on ne considère que le C++.
Si je veux que ça se formatte comme une expression mathématique
habituelle, j'écrirais :
P = X^3 - 6X^2 + 9X - 4
C'est ce que j'aurai voulu.
Pour le moment, j'ai:
P = (X^3) - 6.0 * (X^2) + 9.0 * X - 4.0
qui fonctionne, bien sûr.
C'est juste ma notion personnelle de l'esthétique.
"kanze" <kanze@gabi-soft.fr> a écrit ...
Etienne Rousee wrote:
Si j'écris du texte en ASCII, j'utilise parfois ^ pour
indiquer que ce qui suit est en superscript : surélevé et
plus petit. Parce que c'est la signification de ^ en LaTeX ;
j'utilise aussi parfois _ pour indiquer un subscript. Mais
c'est une convention de formattage de texte, et non un
opérateur de C++.
Oui.
Sur fr.sci.math, on utilise ^ pour l'exposant.
Sur ma calculatrice aussi.
Ce qui explique que j'en ai l'habitude.
Si ce que tu veux, c'est X puissance 3, etc., en C++ (comme en
Polynome P = pow(X,3) - 6 * pow(X,2) + 9 * X - 4 ;
Ben oui, mais je trouve que ce n'est pas très beau.
Je sais, c'est subjectif.
C'est du C++ ; en Fortran, je m'attendrais à quelque chose
comme :
P = X**3 - 6*X**2 + 9*X - 4
Je trouve que c'est déjà un peu plus joli.
Mais ici, on ne considère que le C++.
Si je veux que ça se formatte comme une expression mathématique
habituelle, j'écrirais :
P = X^3 - 6X^2 + 9X - 4
C'est ce que j'aurai voulu.
Pour le moment, j'ai:
P = (X^3) - 6.0 * (X^2) + 9.0 * X - 4.0
qui fonctionne, bien sûr.
C'est juste ma notion personnelle de l'esthétique.
"kanze" a écrit ...
Etienne Rousee wrote:
Si j'écris du texte en ASCII, j'utilise parfois ^ pour
indiquer que ce qui suit est en superscript : surélevé et
plus petit. Parce que c'est la signification de ^ en LaTeX ;
j'utilise aussi parfois _ pour indiquer un subscript. Mais
c'est une convention de formattage de texte, et non un
opérateur de C++.
Oui.
Sur fr.sci.math, on utilise ^ pour l'exposant.
Sur ma calculatrice aussi.
Ce qui explique que j'en ai l'habitude.
Si ce que tu veux, c'est X puissance 3, etc., en C++ (comme en
Polynome P = pow(X,3) - 6 * pow(X,2) + 9 * X - 4 ;
Ben oui, mais je trouve que ce n'est pas très beau.
Je sais, c'est subjectif.
C'est du C++ ; en Fortran, je m'attendrais à quelque chose
comme :
P = X**3 - 6*X**2 + 9*X - 4
Je trouve que c'est déjà un peu plus joli.
Mais ici, on ne considère que le C++.
Si je veux que ça se formatte comme une expression mathématique
habituelle, j'écrirais :
P = X^3 - 6X^2 + 9X - 4
C'est ce que j'aurai voulu.
Pour le moment, j'ai:
P = (X^3) - 6.0 * (X^2) + 9.0 * X - 4.0
qui fonctionne, bien sûr.
C'est juste ma notion personnelle de l'esthétique.