Algorithme pour resoudre l'exposent

bjdcduicfdsu -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai un exercice d'algo don't je n'ai pas compris comment je dois proceder pour le savoir.
Mon exercice est le suivant:
Ecrire un algorithme qui saisit X et n, l’algorithme calcul X exposent n puis affiche la valeur sur l’écran. On suppose que l’utilisateur fournie des entiers naturels (négatif, nulle et positif) pour X et n.

J'ai commence par le basic:
Variable X,n en Numerique
Debut
Ecrire "Donner X et n"
Lire X,n

3 réponses

baladur13 Messages postés 47805 Date d'inscription   Statut Modérateur Dernière intervention   13 688
 
Bonsoir,
öur débloquer la suite...
Voir
https://fr.wikipedia.org/wiki/Puissance_d%27un_nombre
0
bjdcduicfdsu
 
je sais comment resoudre la puissance mais je ne connais pas comment l'ecrire dans un exercice d'algo.
0
baladur13 Messages postés 47805 Date d'inscription   Statut Modérateur Dernière intervention   13 688 > bjdcduicfdsu
 
une piste :
élever un nombre X à la puissance n (si n est positif) c'est multiplier ce nombre X par lui même n fois.
je vous invite à chercher ce qu'il faut faire si n'est négatif, (ne pas oublier le cas ou n est nul).
0
bjdcduicfdsu
 
donc je dois continuer de la façon suivante:

Si n==0 Alors
X exp n ==1
SiNonSi n>0 Alors
X exp n <-- X*X*X....*X
SiNon
Ecrire "Error"
FinSi
0
baladur13 Messages postés 47805 Date d'inscription   Statut Modérateur Dernière intervention   13 688 > bjdcduicfdsu
 
error ? les exposants négatifs cela existent. Non ?
autre question qui se pose comment on calcule le résultat de X*X*X....*X
0
bjdcduicfdsu > baladur13 Messages postés 47805 Date d'inscription   Statut Modérateur Dernière intervention  
 
je ne sait pas comment l'ecrire autre que ça :/
0
einstein66 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Voici une solution :

Algorithme Exposant
var X,n,tmp,i:entier
Debut
afficher("Entrez deux valeurs : ")
saisir(X,n)
tmp=X
Pour( i <-- 1 à n) faire
tmp=tmp*X
finPour
afficher("X^n =",tmp)
Fin
0
baladur13 Messages postés 47805 Date d'inscription   Statut Modérateur Dernière intervention   13 688
 
La boucle n'est pas correcte X ¹ = X et pas X² (x*x)
0
einstein66 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   > baladur13 Messages postés 47805 Date d'inscription   Statut Modérateur Dernière intervention  
 
Propose ta correction
0
einstein66 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int x,n,tmp,i;
printf("Votre nbre: ");
scanf("%d%d",&x,&n);
tmp=x;
for(i=1;i<n;i++)
{
tmp=tmp*x;
}
printf("%d^%d=%d",x,n,tmp);
return 0;
}

Compilez ceci et vous me direz si la boucle n'est pas correcte
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Et la récursivité dans tout ça ?

double power(double x, int n) {
    return (n == 0) ? 1 : x * power(x, n - 1);
}

Je vous laisse gérer les cas particuliers...

NB. Pour optimiser le calcul rappelons que
x^(2*n) = (x^2)^n


PS. Pour les exercices n'oubliez pas Google !
0