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

Turbo Pascal Discussion :

numération en base k en turbo pascal


Sujet :

Turbo Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 9
    Points : 11
    Points
    11
    Par défaut numération en base k en turbo pascal
    Je dois écrire un programme ou l'utilisateur entre un nombre n une base k et ou l'ordi renvoie le nombre n en base k (ex:128 donne 1003 en base 5)

    J'ai écris le programme suivant mais il y a une erreur, l'ordi me renvoie une erreur pour le modulo en me disant que l'opérande est <= 0 c ki est faux (à moins ke je n'ai pas vu qque chose...
    Quelqu'un pourrait il me dire si il voit l'erreur ?

    Merci !

    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
    program numbase;
    var
    n,k,r,q,a,x,z:integer;
    y:real;
    begin
    writeln('Taper le nombre a transformer...');
    Readln(n);
    Writeln('en base ?');
    Readln(k);
    r:=n mod k;
    q:=(n-r) div k;
    while n<>0 do 
    begin
    for a:=q downto 0 do
    begin
    y:=exp(a*(ln(k)));
    z:=trunc(y);
    x:=trunc(n/y);
    n:=n mod z;
    writeln(x);
    end;
    end;
    readln;
    end.
    [Balises CODE rajoutées par sub0]

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    merci de lire les les règles du forum
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Pour décoder l'énervement de wormful_sickfoot : . Tu peux éditer ton message pour ça. Pour ton pb, je te déconseille très vivement de passer par des nombres flottants. Il y a beaucoup plus simple : tu extrais un chiffre après l'autre jusqu'à ce que le nombre soit nul. Algo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TantQue x<>0
      chiffre = x modulo BASE
      x =  x/BASE { division entière pas flottante }
      chaine = chaine + chiffre
    FinTantQue
    Inverse(chaine) { cba -> abc }
    Ou voir l'algo: http://www.haypocalc.com/manuel/1.6/fct/basen.php

    @+ Haypo

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    le problème c'est que je programme en pascal et qu'à ma connaissance il n'y a pas moyen d'inverser la chaine dans ce langage... non ?

  5. #5
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par cocobongo
    le problème c'est que je programme en pascal et qu'à ma connaissance il n'y a pas moyen d'inverser la chaine dans ce langage... non ?
    Le type string (je suppose que tu le sais déjà) est en fait un tableau de caractères. Ainsi mot[j] renverra à l'élément j de la chaine mot (si mot est de type string bien sût).

    Donc il est alors facile de créer une petite procédure pour inverser une chaîne.

    Personnellement, je te conseillerai d'essayer de réecrire toutes (ou presque toutes) les fonctions de la bibliothèque string, cà te permettra d'une part de comprendre mieux comment ces fonctions fonctionnent et d'autre part de pouvoir concevoir facilement une procédure qui traite les chaînes...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    d'accord mais n'est il pas possible d'écrire un programme qui effectue la composition dans l'ordre au lieu de la faire à l'envers puis de la retourner ? c'était l'idée du programme que j'avais proposé...

  7. #7
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Oui on peut le faire dans l'ordre.

    Voilà ce que je propose.
    Etant donné que le premier chiffre obtenu (par division entière) est le plus significatif, tu peux créer un indicateur de "significativité" 8) et qui sera incrémenté au fur et à mesure que de nouveaux chiffres seront trouvés. La valeur courante étant donc le chiffre trouvé multipliée par l'indicateur et ainsi de suite on fera la somme des valeurs jusqu'à la dernière.

    Bon je n'ai pas essayé pour voir si cà marche mais à mon avis, l'approche ets bonne.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    j'ai fini par trouver une méthode. Merci de vos conseils !

  9. #9
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Oui, l'inversion de la châine n'est pas vraiment nécessaire. Dans l'algo de Haypo, il suffit de remplacer le chaine = chaine + chiffre par chaine = chiffre + chaine. Et plus d'inversion à faire...

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

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

Discussions similaires

  1. [Turbo Pascal] Turbo Pascal sous Windows XP
    Par MichelR dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 17/03/2011, 10h10
  2. [Turbo Pascal] Bases d'initiation en Turbo Pascal
    Par ingenieur1 dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 01/01/2011, 09h53
  3. [Turbo Pascal] Installation de Turbo Pascal sous Windows XP
    Par serve dans le forum Turbo Pascal
    Réponses: 18
    Dernier message: 31/12/2003, 08h24
  4. Conversion Turbo Pascal 5 -> C
    Par Metal Tom dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 09/07/2003, 17h19
  5. [Turbo Pascal] Recherche cours ou livre sur le Turbo Pascal
    Par killarg dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 02/03/2003, 16h12

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