Comment éléver un nombre à la puissance?

Résolu
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008 - 11 juil. 2008 à 09:46
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017 - 18 août 2008 à 08:43
Bonjour à tous,

j'ai un souci sur mon algorithme qui fait des calculs. En effet, quand j'essaie d'éléver un nombre à la puissance d'un autre le message d'erreur suivant apparait: "Type pointer requis".
Voici un exemple:
je veus faire par exemple B à la puissance C avec B,A et C de type extended. (B=15.5 et C=5.1235)
Donc je fais A:=B^C mais le message d'erreur sort toujous et le curseur se met après le C.

Merci de m'aider a resoudre ce problème.

Bien Cordialement.
A voir également:

16 réponses

yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
11 juil. 2008 à 11:55
w = x^y

q ln(w) y.ln(x)

w = exp(q)

ou alors power(x,y) // avec math en user

yvessimon
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
11 juil. 2008 à 13:30
le symbole "^" en Delphi correspond a un pointeur.

var
  pX : ^integer;
begin
  New(pX);
  pX^ := 10;
  Dispose(pX);
end;

pour une puissance on utilise la fonction "Power"

Elève Base àn'importe quelle puissance.

Unité
Math

Catégorie
routines arithmétiques

Syntaxe Delphi :
function Power(const Base,Exponent: Extended): Extended;

3
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
11 juil. 2008 à 10:37
Bonjour,
Ça fait quelques temps que j'ai quitté l'école, mais de mémoire, il me semble qu'une puissance est un nombre entier...

Simon
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
11 juil. 2008 à 11:40
Merci Simon, de la formulation de ta réponse.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
11 juil. 2008 à 14:07
Ok, merci à vous (Yvessimon, f0xi).

Je vais le faire avec power.
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
11 juil. 2008 à 20:02
Bonjour,


@edlain


Si tu as eu des réponses qui répondaient à ton problème, pense à cliquer sur "réponse acceptée"!
Cela aidera les autres membres.
Merci.
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
11 juil. 2008 à 21:50
Bonsoir à tous,

J'ai essayé avec Power(base, exposant) et ça marché; ce qui est interrassant c'est que ça marche avec n'importe quelle puissance.

Merci encore!
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 juil. 2008 à 02:30
"J'ai essayé avec Power(base, exposant) et ça marché; ce qui est
interrassant c'est que ça marche avec n'importe quelle puissance."


La satisfaction du développeur débutant qui réussi quelque chose est toujours amusante a voir.
c'était ton micro-everest a toi.

0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
12 juil. 2008 à 11:48
Bonjour ,

excusez moi du derrangement que je vous cause depuis le debut de cette semaine; En fait j'ai le message d'erreur suivant lorsque je compile mon programme: "opération en virgule flottante incorrecte".
et voici un bout de mon programme:

var

r, some,some1,some2,lambda:extended;
begin
           .......
           ............
       r:=sqrt((power(some,some2)+(sqr(some1))+sqr(some2))));
           ..................
      lambda:=arctan(some1/some2);
..............
end;

le problème se situe au niveau de l'expression du  'r'. (NB: some, some1, some2 renvoient plus haut dans mes calcules des nombres à virgules). Mais lambda et les autres n'ont aucun problème.

Merci de me guider.
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
12 juil. 2008 à 12:54
Salut,

Dans Sqrt(Expression), il est probable que Expression soit négatif dans ton code.

Pour sécuriser ton code, tu dois faire:



if Expression >= 0 then r := Sqrt( Expression )
  else showmessage('Calcul de la racine carrée d''un nombre négatif impossible!');


De même :



if some2 <> 0 then  lambda := arctan(some1/some2)
  else showmessage('Division par zéro !');
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
13 juil. 2008 à 11:49
Je suis heureux que vous me comtiez parmis vous!
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 juil. 2008 à 18:53
tu peu utiliser ArcTan2 (unit math) ce sera plus rapide et pas de soucis de division par zero

ArcTan2(Y, X);

pour Sqrt tu peu ajouter ABS pour eviter le probleme du signe negatif.

Sqrt( Abs( Expression ) );

soit :

r := sqrt( abs( power(some,some2) + sqr(some1) + sqr(some2) ));

lambda := arctan2(some1, some2);

0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
15 juil. 2008 à 09:14
Bonjour,

Effectivement un test est nécessaire pour les nombres négatif.
Ce test dépend de ton calcul.
Avec sqrt(ABS(x)) tu es sûr d'avoir un resultat. Par contre est-ce logique pour ton calcul ?

Un test est nécessaire pour chaque division par zéro .
pour x^y un test est necessaire pour x<0 et y décimal

Salutations
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
15 juil. 2008 à 10:26
Bonjour Yvessimon,

Effectivement pour mes calculs je ne peux pas utiliser sqrt(ABS(X)) car ici je prend la valeur absolue de X alors que j'ai des coordonnées négatives; ce qui fait que si je prend abs(x) je fausse tous mes calculs.

excellente journée.
0
cs_edlain Messages postés 21 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 15 août 2008
15 août 2008 à 18:36
Bonjour à tous,

Tout d'abord, bonne fête d'assomption à tous. Je voudrais s'il vous plait savoir  comment affiche t-on une partie réelle et une partie imaginaire d'un complexe en delphi?
Exemple: si j'ai le complexe z = 5 - 2i
dans un premier temps je voudrais afficher la partie réelle donc a= 5 et dans un second temps, la partie réelle b= -2

Merci à tous.
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
18 août 2008 à 08:43
Bonjour,

utilise les varians
regarde dans l'aide de delphi :
function VarComplexCreate(const AReal, AImaginary: Double): Variant; overload;
Tu peux faire des additions ....


si non tu rées une table réelle de dimention 2 . Le 1er élément est la partie réelle l'autre l'imaginaire.
Puis créer les différente fonctions d'atdition multiplication ....
si non voir des exemples sur le site

Salutations
0
Rejoignez-nous