Comment éléver un nombre à la puissance? [Résolu]

Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
- - Dernière réponse : yvessimon
Messages postés
647
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.
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
647
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
3
Merci
w = x^y

q ln(w) y.ln(x)

w = exp(q)

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

yvessimon

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de yvessimon
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
33
3
Merci
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;

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
17
0
Merci
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
Commenter la réponse de sp40
Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
0
Merci
Merci Simon, de la formulation de ta réponse.
Commenter la réponse de cs_edlain
Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
0
Merci
Ok, merci à vous (Yvessimon, f0xi).

Je vais le faire avec power.
Commenter la réponse de cs_edlain
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
26 juillet 2018
13
0
Merci
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.
Commenter la réponse de Caribensila
Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
0
Merci
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!
Commenter la réponse de cs_edlain
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
33
0
Merci
"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.

Commenter la réponse de f0xi
Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
0
Merci
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.
Commenter la réponse de cs_edlain
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
26 juillet 2018
13
0
Merci
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 !');
Commenter la réponse de Caribensila
Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
0
Merci
Je suis heureux que vous me comtiez parmis vous!
Commenter la réponse de cs_edlain
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
33
0
Merci
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);

Commenter la réponse de f0xi
Messages postés
647
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
0
Merci
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
Commenter la réponse de yvessimon
Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
0
Merci
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.
Commenter la réponse de cs_edlain
Messages postés
21
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
15 août 2008
0
Merci
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.
Commenter la réponse de cs_edlain
Messages postés
647
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
0
Merci
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
Commenter la réponse de yvessimon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.