Bonjour
J'ai un petit problème.
Ecrire un programme (Pascal) qui calcule et affiche A puissance n (sans utiliser l'opération de puissance ni de multiplication) (A et n sont des entiers).
Bonjour
J'ai un petit problème.
Ecrire un programme (Pascal) qui calcule et affiche A puissance n (sans utiliser l'opération de puissance ni de multiplication) (A et n sont des entiers).
j'ai trouvé la methode, mais je ne sais pas comment la traduire en pascal
ex: 2^5=32
2²=2+2=4
2^3=4+4=8
2^4=8+8=16
2^5=16+16=32
salut ,
je pense que tu peux calculer la puissance d'une façon récursive
exemple
2^5=16+16=32 =2*(2^4)
2^4=8+8=16=2*(2^3)
2^3=4+4=8 =2*(2^2)
(2^2)=2+2=4=2*(2^1)
(2^1)=2=2*(2^0)
(2^0)=1
Genre en pseudo-code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function myPow(int p, int n): int begin if(n == 0) return 1; if(n < 0) error; int tmp = myPow(p, n-1); int result = 0; for(int i=0; i<p; i++) { result += tmp; } return result; end;
et tu peux pas te faire ta fonction multiplier avec des +. comme ça, tu n'utilise ni les * ni les puissance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 program puissance; uses crt, function multiplication(a,b : integer) : integer; //que des entiers var i : integer; resultat : integer; begin for i := 1 to b do begin inc(resultat,a); end; multiplication := resultat; end; function puissance(a,b : integer) : integer; i,resultat : integer; begin for i := 1 to b do begin resultat = multiplication(resultat,a); end; puissance := resultat; end; begin writeln(puissance(4,3)); end.
je sais pas si t'a le droit, mais comme tu fabriques tes fonctions, peut être que ça passe.
Dam oui, j'ai pas compiler et j'ai fais ça en mangeant, du coup j'ai pas initialisé resultat. Mais dans mon code, il est égal à 1 pour la multiplication et à 0 pour l'addition. De plus, j'aurais eu un warning.
Par contre, ça fais longtemps que je me demande :
Y'a une logique, ou c'est 3 lettres au hasard ?
je déclare forfait pour le défi pascal 2012
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager