IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[Algo] A à la puissance B


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut [Algo] A à la puissance B
    Bonjour,

    Voila j'ai fait un petit algo pour mettre un nombre A^B.
    J'aimerai savoir si cette algo est correct ou non, il me semble que j'ai repris "tous" les cas pour les puissances d'un entier.

    Voila l'algo en question (il s'agit d'une fonction)
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Fonction puissance (E: A,B : entier) : entier
     
    Déclaration
    I, Pows, Z : entier
     
    Début
    Pows = A
     
    Si A ! = 0 et B = 0
    	Alors Retourner 1
    	Sinon 
    	Si A = 0 et B > 0
    		Alors 
    		Retourner 0
    	Sinon 
    	Si (A = 0 et B = 0) ou (A = 0 et B < 0)
    		Alors 
    		Retourner "Je ne sais pas quoi mettre car il faut un entier or c'est une forme inderterminée"						
    	Sinon 
    	Si A > 0 et B > 0
    		Alors
    			Pour I allant de 1 à B faire
    				Pows <- Pows*A
    			Fin Pour
    		Retourner Pows			
    	Sinon
    	Si A > 0 et B < 0
    		Alors
    			Z = B * -1
    			Pour I allant de 1 à Z faire
    				Pows <- Pows/A
    			Fin Pour
    		Retourner Pows	
    	Sinon
    		Si A < 0 et B < 0
    			Alors
    				Pour I allant de 1 à -B faire
    					Pows <- Pows/A
    				Fin Pour
    			Retourner Pows	
    	Sinon
    	Si A < 0 et B > 0
    		Alors
    			Pour I allant de 1 à B faire
    				Pows <- Pows*A
    			Fin Pour
    			Retourner Pows	
    	Fin Si		
    	Fin Si		
    	Fin Si	
    	Fin Si	
    	Fin Si		
    	Fin Si		
    Fin Si	
     
    Fin puissance
    Les questions que je me pose sont les suivantes:
    Es-ce que l'algo est correcte ?
    Es-ce qu'il n'y a pas plus simple pour calculer des puissances d'entier en "intératif" ?

    J'ai aussi un problème pour la forme indeterminée que ce que je peux renvoyer car c'est de l'entier or il faudrait retourner une chaîne de caractère.

    Il est vrai que je me suis inspiré d'un programme en C pour faire l'algo (je suis une bille en algo et encore plus en math )

    Merci de votre aide .

    Cordialement,
    Darkenshin.

    .: Edit :.
    Correction au niveau de l'initisalition et de la pagination

  2. #2
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Moi je te propse ceci, qui devrait marcher et est plus simple, il y a une erreur dans ton algo, tu n'initialiser jamais pows ! donc tu auras toujours 0 comme résultat !

    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
     
    I,Resultat : entier
    Resultat = A 
     
    Si A = 0 
    	si B <= 0
    		EXCEPTION //en algo je sais pas lever d'exception moi :cry: 
    	Fin si
    	retourner 0
    Sinon
    	si B = 0 
    		retourner 0
    	sinon
    		pour I = 1 à (B - 1 )			
    			Resultat = Resultat * A
    		fin Pour
    	fin si
    Fin Si
     
    si B < 0 alors
    	resultat = 1 / resultat
    fin si
     
    retourner resultat

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    Salut,

    J'avoue que je ne peux pas tester mon algo vu le pc que j'ai actuellement
    Justement je me suis demander si il ne fallait pas initialiser ma var, ce que j'avais commencé à faire et puis supprimer car je l'ai refait car je me suis rendu compte que je ne gére qu'un seul cas.

    Je vais regarder de plus près ton algo

    Merci

    Cordialement,
    Darkenshin.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 192
    Par défaut
    Juste une petite correction : pour tout a non nul, a^0=1.
    On devrait donc initialiser Resultat à 1 puis effectuer la boucle de 1 à B.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,

    Je n'ai pas regardé ton algo, c'est juste pour faire une petite remarque:

    Indenter le code, c'est bien.

    MAIS, il faut rester raisonnable sur la taille l'incrément d'indentation, car, sincèrement, tu trouves que ton code est facile à lire ?

    Une indentation de 2 caractères par bloc suffit normalement, sans avoir besoin ensuite d'un écran 36 pouces pour lire sans avoir à se balader de gauche à droite avec les scrollbars.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    @borisd: j'y penserai merci

    @thewho: vu les conditions de travail que j'ai je ne peux pas faire non plus autrement que d'incrémenter de cette façon.
    J'avais prévu d'éditer mon code une fois chez moi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème algo min max IA Puissance 4
    Par sevann71 dans le forum C++
    Réponses: 2
    Dernier message: 11/01/2015, 13h22
  2. cherche algos Delphi pour : Huffman, R.S.A, D.E.S.
    Par X-Delphi dans le forum Débuter
    Réponses: 3
    Dernier message: 24/08/2002, 18h51
  3. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  4. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo