Précédent   Forum des professionnels en informatique > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 22h20   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Calculer A puissance n sans utiliser ni puissance ni multiplication

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).
adelkobe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 22h29   #2
Invité de passage
 
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 0
Points : 0
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
adelkobe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 23h54   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 13
Points : 14
Points : 14
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
extrem-alpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 21h38   #4
Modérateur
 
Avatar de Andnotor
 
Inscription : septembre 2008
Messages : 2 232
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2 232
Points : 2 904
Points : 2 904
shl ?
Andnotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 17h30   #5
Expert Confirmé
 
Inscription : août 2006
Messages : 3 195
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 195
Points : 3 342
Points : 3 342
Gae,
Citation:
Envoyé par Andnotor Voir le message
shl ?
Attention à ne pas se polariser sur les puissances de 2 (à ce titre, l'exemple choisi par adelkobe n'est pas très judicieux).
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 17h51   #6
Membre confirmé
 
Homme Benjamin
Consultant informatique
Inscription : août 2007
Messages : 160
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 160
Points : 248
Points : 248
Genre en pseudo-code :
Code :
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;
bhamp0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 18h42   #7
Membre confirmé
 
Avatar de titeeee
 
Homme Titouan Créac'h
Lycéen
Inscription : mai 2009
Messages : 193
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 18
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2009
Messages : 193
Points : 257
Points : 257
et tu peux pas te faire ta fonction multiplier avec des +. comme ça, tu n'utilise ni les * ni les puissance.

Code :
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.
titeeee est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2011, 19h56   #8
Expert Confirmé
 
Inscription : août 2006
Messages : 3 195
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 195
Points : 3 342
Points : 3 342
Fia,
Citation:
Envoyé par bhamp0 Voir le message
Genre en pseudo-code :
Code :
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;
Même en pseudo-code, tu devrais vérifier ce que tu as écrit.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 19h57   #9
Expert Confirmé
 
Inscription : août 2006
Messages : 3 195
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 195
Points : 3 342
Points : 3 342
Qua,
Citation:
Envoyé par titeeee Voir le message
et tu peux pas te faire ta fonction multiplier avec des +. comme ça, tu n'utilise ni les * ni les puissance.

Code :
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.
Attention a bien initialiser les variables avant utilisation (resultat dans la fonction multiplication, dans l'état actuel, résultat faux garanti).
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/12/2011, 20h38   #10
Membre confirmé
 
Avatar de titeeee
 
Homme Titouan Créac'h
Lycéen
Inscription : mai 2009
Messages : 193
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 18
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2009
Messages : 193
Points : 257
Points : 257
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 :

Citation:
Envoyé par droggo Voir le message
Qua,
Y'a une logique, ou c'est 3 lettres au hasard ?
titeeee est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2011, 20h55   #11
Rédacteur/Modérateur
 
Avatar de wormful_sickfoot
 
Inscription : avril 2002
Messages : 2 134
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2002
Messages : 2 134
Points : 2 389
Points : 2 389
Citation:
Envoyé par titeeee Voir le message
Y'a une logique, ou c'est 3 lettres au hasard ?
Non y'a effectivement une logique, suffit de trouver laquelle. Ca pourrait faire l'objet du Défi 2012 hein ?
__________________
wormful_sickfoot - Rédacteur et Modérateur Pascal
wormful_sickfoot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2011, 21h01   #12
Membre confirmé
 
Avatar de titeeee
 
Homme Titouan Créac'h
Lycéen
Inscription : mai 2009
Messages : 193
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 18
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2009
Messages : 193
Points : 257
Points : 257
je déclare forfait pour le défi pascal 2012
titeeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 09h34   #13
Membre confirmé
 
Homme Benjamin
Consultant informatique
Inscription : août 2007
Messages : 160
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 160
Points : 248
Points : 248
Citation:
Envoyé par droggo Voir le message
Même en pseudo-code, tu devrais vérifier ce que tu as écrit.
Et tu pourrais m'expliquer où j'ai faux ?
J'ai fait du (Turbo)Pascal il y a très longtemps, donc je sais que ça n'en est pas. Mais en pseudo-code, je ne vois pas d'erreurs particulières.
bhamp0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 14h43   #14
Expert Confirmé
 
Inscription : août 2006
Messages : 3 195
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 195
Points : 3 342
Points : 3 342
Weu,
Citation:
Envoyé par bhamp0 Voir le message
Et tu pourrais m'expliquer où j'ai faux ?
J'ai fait du (Turbo)Pascal il y a très longtemps, donc je sais que ça n'en est pas. Mais en pseudo-code, je ne vois pas d'erreurs particulières.
Eh bien, relis et teste ton code manuellement.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h16.


 
 
 
 
Partenaires

Hébergement Web