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

Contribuez Discussion :

[Algo]Changement de base


Sujet :

Contribuez

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut [Algo]Changement de base
    Bonjour,
    Je souhaiterais également contribuer à l'élargissement de cet espace.

    C'est pourquoi je propose un algorithme permettant un changement de base, dont l'entrée est supposée en base décimale.

    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
     
    int cryptage = 0        //nombre final obtenu suite au changement de base
    int entree             //nombre que l'on suppose être en base décimale
    double exposant
    double facteur
     
    Début
    	Lire(entree)
     
    	while(entree >= 0)                        
     
    		log(entree)/log(10) = exposant        //cast vers un entier
     
         		entree/10^exposant=facteur          //cast vers un entier
     
         		cryptage + facteur*base^exposant = cryptage
     
         		entree - facteur*10^exposant = entree
    Fin
    A++

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Ta solution semble assez compliquée et de plus ne donne pas forcément des résultats exacts, l'utilisation du logarithme est un peu bizarre ici. Mieux vaut utiliser la division euclidienne pour ce genre de conversion, on obtient un résultat exact.

  3. #3
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    Entrée: Deux nombres entiers, le premier désignant le nombre entier en base décimale à convertir et le second la base cible.

    Sortie: Affichage du résultat de la conversion

    Difficulté: Niveau 1, facile

    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
     
    int tableau[3]
    int a <- 3
    int nombre
    int base
    int y
     
    Début
     
    	Lire(nombre)
    	Lire(base)
     
    	while (nombre>0)
     
    		y <- cast_entier(nombre/base)
     
    		tableau[a] <- nombre - y * base
     
    		a <- a-1
     
    		nombre <- y
     
    Afficher(tableau)
    Fin
    Maigre début...

    Sauf que j'ai un problème, comment affecter suffisamment de place à mon tableau?
    Je peux calculer sa taille à l'aide des entrées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Lire(nombre)
    Lire(base)
    base^taille_tableau=nombre
    log(nombre)/log(base)=taille_tableau
    Mais il m'est impossible d'attribuer un bloc mémoire en fonction d'une variable... Est-ce possible de réaliser une telle chose sans avoir recourt à une spécificité d'un langage cible?

    A++

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    C'est quoi le a-1 qui se balade tout seul ? a <- a -1 ?

  5. #5
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    Edité, merci

  6. #6
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Difficulté: Niveau 1, facile
    La difficulté ne sert à rien

    Ton code est trop proche du C pour être compris facilement. Utilises les remarques qui ont été données dans ce thread :

    http://www.developpez.net/forums/sho...d.php?t=221060

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int tableau[3]
    int a <- 3
    pourquoi fixes-tu la taille de ton tableau à 3 ? Tu es en algorithmique, il faut se démarquer le plus possible de l'implémentation, pas conséquent tu peux supposer que le tableau est de taille infinie (si infini ne te plait pas, tu peux supposer que la taille est suffisante pour stoquer ton résultat).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Lire(nombre)
    Lire(base)
    Ca non plus ça ne sert à rien puisque tu as supposé que c'était des entrées de ton algorithme, les nombres te sont donc donnés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cast_entier(nombre/base)
    Pourquoi un cast ? De plus algorithmiquement parlant, le cast n'a pas de sens, demande à un prof de math ce qu'est un cast, il n'est pas sur de te répondre Ce qu'il faut préciser, c'est que l'opérateur de division que tu utilises est l'opérateur de division euclidienne.

    En fait, ceci est juste bon pour vérifier que le résultat est bon, ce qui importe c'est de savoir que le résultat est dans tableau, c'est la sortie de ton algorithme.


    Mais il m'est impossible d'attribuer un bloc mémoire en fonction d'une variable... Est-ce possible de réaliser une telle chose sans avoir recourt à une spécificité d'un langage cible?
    En fait comme je te l'ai dis au dessus, tu supposes que la taille de ton tableau est au moins suppérieure (strictement ou pas, il faudra vérifier) à la formule que tu as donnée (log(nombre)/log(base)=taille_tableau )

Discussions similaires

  1. Changement de base de données = vba incompatible
    Par schuitonzo dans le forum Access
    Réponses: 22
    Dernier message: 22/02/2007, 16h46
  2. Réponses: 2
    Dernier message: 29/11/2006, 18h52
  3. changement de base de donnée
    Par Pitou5464 dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2006, 14h37
  4. Changement de base...enfin je crois....
    Par Eric Boisvert dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 28/09/2005, 21h11
  5. [VB6] changement de base....
    Par white angel dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/04/2004, 17h19

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