algorithme-programmation en Pascal-urgent svp
Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

algorithme-programmation en Pascal-urgent svp



  1. #1
    invite39a3aa53

    Cool algorithme-programmation en Pascal-urgent svp


    ------

    bonjour;
    on nous a demandé de faire l'algorithme ainsi que le programme en Pascal qui nous permet de convertir un nombre entier positif dans une base quelconque comprise entre 2 et 10.
    Voici mon algorithme
    Algorithme exo42
    Code:
    Variable N,M,x,A :entier
    DEBUT
                ECRIRE(‘Donnez un nombre entier positif’)
                LIRE(N)
                ECRIRE(‘Dans quelle base voulez-vous l’écrire ?’)
                LIRE(x)
                Cpt<--1 ; A<--0 ; M<--N
                REPETER
    		A<--(M mod x)*cpt + A
    		M<-- M div x
    		Cpt<--cpt*10 
                 JUSQU’A   M=0
    	ECRIRE(N,’ s’écrit ’,A,’ dans la base’,x)
    FIN.
    quand j'ai exécuté mon algorithme sous Pascal, je faisais des essaies et comme par hasard, je suis tombé sur le nombre 677463, qui en le convertissant dans la base 4 me donne -2083846183.
    j'ai essayé de resoudre ce probléme en mettant"jusqu'a m div x=0" comme condition d'arrét de la boucle, et là ça marche sauf que pour d'autrs cas ça ne marche pa (par exemple 7 me donne 11 dans la base 2)
    Alors voila si quelqu'un peut m'expliquer en détails ou est le probléme et comment le résoudre.
    j'espère avoir la réponse au plus vite.
    merci d'avance

    -----
    Dernière modification par Jack ; 21/12/2010 à 17h57. Motif: ajour balises code

  2. #2
    Jack
    Modérateur

    Re : algorithme-programmation en Pascal-urgent svp

    merci d'ajouter par la suite les balises code qui rendent la lecture plus aisée.

  3. #3
    Jack
    Modérateur

    Re : algorithme-programmation en Pascal-urgent svp

    pourquoi ne pas donner ton programme en pascal? (avec les balises code: clique sur le # de l'éditeur de message)

    A+

  4. #4
    danyvio

    Re : algorithme-programmation en Pascal-urgent svp

    l'algo en langage "naturel" semble bon, mais comme dit Jack, il faudrait mettre le programme Pascal
    D'autre part ce serait inutile de mettre comme test d'arret "jusqu-à ce M div x = 0" au lieu de M =0
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  5. A voir en vidéo sur Futura
  6. #5
    invite39a3aa53

    Re : algorithme-programmation en Pascal-urgent svp

    Voici le programme en Pascal #######################
    Voila ce que ça donne avec le nombre 677463
    #######################
    Aprés avoir remplacé m=0 par m div x=0 ça marche pour 677463 mai ça ne marche pas pour certains autres exemples
    #######################

    images supprimées. Merci de te conformer aux recommandations suivantes;
    http://forums.futura-sciences.com/el...-sabonner.html
    Dernière modification par Jack ; 22/12/2010 à 12h44.

  7. #6
    invite39a3aa53

    Cool Re : algorithme-programmation en Pascal-urgent svp

    bonjour;
    je m'excuse de ne pas avoir respecté les règles du forum,
    vous trouverez ci joint, le programme ainsi que le problème que j'ai posé.
    j'attends vs réponses.
    cordialement
    merci
    Images attachées Images attachées

  8. #7
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,

    Poste un copier/coller de ton code, et pas des copies d'écran !!

    Et accessoirement, Turbo Pascal est une véritable fossile, utilise un compilateur et un EDI plus récent (FreePascal, par exemple).

  9. #8
    Jack
    Modérateur

    Re : algorithme-programmation en Pascal-urgent svp

    je m'excuse de ne pas avoir respecté les règles du forum,
    no problem. Et come tout est ok maintenant, je vais t'exposer les raisons du problème.
    Ce n'est pas l'algo qui est en cause, mais la représentation des nombres en mémoire. Tes entiers longs sont codés sur 32 bits, et comme ils sont signés la valeur max est égale à 2147483647.

    Tu ne pourras donc pas afficher une valeur supérieure à 2133333333 en base 4 alors que 677 s'écrit 2147483647.

    A+

  10. #9
    danyvio

    Re : algorithme-programmation en Pascal-urgent svp

    Essaie avec des variables long int, au lieu de integer, dont la capacité est tès limitée
    Dernière modification par danyvio ; 22/12/2010 à 17h15. Motif: Grrrrrrr grrrr illé
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  11. #10
    Jack
    Modérateur

    Re : algorithme-programmation en Pascal-urgent svp

    Et accessoirement, Turbo Pascal est une véritable fossile, utilise un compilateur et un EDI plus récent (FreePascal, par exemple).
    En C, avec un compilateur récent comme visual studio, le problème est strictement le même ( à moins d'utiliser les long long 64 bits mais le problème de limite ressurgira à un moment où à un autre). En tout cas en turbo pascal, c'est 32 bits maxi pour un entier.

    Essaie avec des variables long int, au lieu de integer, dont la capacité est tès limitée

    ce sont déjà des long int.

    A+
    Dernière modification par Jack ; 22/12/2010 à 18h19.

  12. #11
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,
    Citation Envoyé par Jack Voir le message
    En C, avec un compilateur récent comme visual studio, le problème est strictement le même ( à moins d'utiliser les long long 64 bits mais le problème de limite ressurgira à un moment où à un autre). En tout cas en turbo pascal, c'est 32 bits maxi pour un entier.
    Ai-je écrit quelque part que le problème était dû à Turbo Pascal ?

    Il reste que ce compilateur + EDI est une antiquité, et qu'il existe des remplaçants bien plus performants.

  13. #12
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,

    C'est ma période de gentillesse, alors je vais vous dire quelque chose :

    Le vrai problème est l'utilisation d'un entier pour stocker, puis afficher, la donnée encodée dans la base désirée.

    Normalement, on encode directement le résultat dans une chaîne de caractère.

  14. #13
    invite39a3aa53

    Re : algorithme-programmation en Pascal-urgent svp

    merci bien pour votre aide;
    @ whoami: je ne vous suis pas trés bien ... vous pouvez expliquer svp?
    merci

  15. #14
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,

    Pourquoi avoir utilisé une variable de type entier de cette manière alambiquée, juste pour s'en servir pour faire un affichage (et donc la convertir en chaîne de caractères).

    Autant construire toi-même la chaîne, et tu lèves la limite que ton principe entraîne.

  16. #15
    Jack
    Modérateur

    Re : algorithme-programmation en Pascal-urgent svp

    mais du coup, il va falloir revoir son algo si on veut que le nombre de départ soit de taille quelconque.

    A+

  17. #16
    Philou67

    Re : algorithme-programmation en Pascal-urgent svp

    De toute façon, A ne peut pas être de type entier pour des bases supérieures à 10.
    :'( Plus j'apprends, et plus je mesure mon ignorance

  18. #17
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,
    Citation Envoyé par Philou67 Voir le message
    De toute façon, A ne peut pas être de type entier pour des bases supérieures à 10.
    Il n'y a pas de raison.

    Si tu en as une, explique.

    Citation Envoyé par Jack Voir le message
    mais du coup, il va falloir revoir son algo si on veut que le nombre de départ soit de taille quelconque.
    Il n'est pas question de ça, mais de savoir gérer n'importe quelle valeur compatible avec le type de variable utilisé, ce qui n'est pas possible avec le principe utilisé.

  19. #18
    Philou67

    Re : algorithme-programmation en Pascal-urgent svp

    Citation Envoyé par whoami Voir le message
    Bonjour,

    Il n'y a pas de raison.

    Si tu en as une, explique.
    Et bien, les chiffres nécessaires pour afficher un nombre en base supérieure à 10 ne sont pas représentables par le formatage numérique standard d'un entier (A est un entier qui sera affiché en base 10 à l'écran, mais représentant un entier dans une autre base, selon ce que j'ai compris de l'algorithme initial).
    :'( Plus j'apprends, et plus je mesure mon ignorance

  20. #19
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,

    Justement, créer soi-même la chaîne évite tout problème, qui, en l'occurrence, est seulement dû au fait de vouloir créer un "tampon" pour obtenir un affichage.

    Ne jamais oublier qu'un affichage, dans quelque base que ce soit, n'est qu'un affichage, et ne concerne que notre regard humain, et est donc représenté dans une chaîne de caractères.

  21. #20
    Philou67

    Re : algorithme-programmation en Pascal-urgent svp

    J'en ai bien conscience. C'est la raison pour laquelle je faisais remarquer à Jack qu'en l'état, l'algorithme ne pouvait de toute façon pas fonctionner avec des bases supérieures à 10, et qu'il me paraissait donc impératif de changer d'algorithme.

    Cela étant dit, l'algorithme d'affichage en base n d'un nombre sous forme de chaine n'est pas forcément trivial, mais c'est un bon exercice d'algorithmique Si j'avais plus de temps, je m'y pencherai volontiers
    :'( Plus j'apprends, et plus je mesure mon ignorance

  22. #21
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,

    Désolé de te contredire, mais c'est trivial parmi le trivial.

    C'est seulement une petite adaptation de l'algorithme utilisé dans le cas actuel : on construit la chaîne au lieu de cumuler des valeurs dans un entier comme le fait yacino15 (principe que je qualifie de "stupide", car résultant d'un manque de réflexion).

  23. #22
    Philou67

    Re : algorithme-programmation en Pascal-urgent svp

    Ah... c'est donc sans doute que je n'y ai pas réfléchi suffisamment longtemps (ou que je suis aussi stupide... )
    :'( Plus j'apprends, et plus je mesure mon ignorance

  24. #23
    Jack
    Modérateur

    Re : algorithme-programmation en Pascal-urgent svp

    ce n'est pas la construction du résultat qui pose problème, ce sont les opération de division entière et modulo qui sont moins triviales avec des chaines.

    A+

  25. #24
    Philou67

    Re : algorithme-programmation en Pascal-urgent svp

    C'est bien ce que je voulais dire...
    :'( Plus j'apprends, et plus je mesure mon ignorance

  26. #25
    invite2d7144a7

    Re : algorithme-programmation en Pascal-urgent svp

    Bonjour,
    Citation Envoyé par Jack Voir le message
    ce n'est pas la construction du résultat qui pose problème, ce sont les opération de division entière et modulo qui sont moins triviales avec des chaines.

    A+
    Mais qui t'a parlé de faire des divisions et modulos avec des chaînes ?

    Il est question d'une chaîne, celle dans laquelle on met le résultat. Il n'est pas question de calculer avec des chaînes.

  27. #26
    Jack
    Modérateur

    Re : algorithme-programmation en Pascal-urgent svp

    Mais qui t'a parlé de faire des divisions et modulos avec des chaînes ?
    Je faisais référence à mon message #15 dans lequel j'évoquais la conversion de nombre de taille quelconque.

    A+

Discussions similaires

  1. Problème lors de la programmation d'un PIC en Pascal
    Par invitedf66cb3b dans le forum Électronique
    Réponses: 10
    Dernier message: 16/12/2010, 15h45
  2. Algorithme .. programmation simple
    Par invited7e4cd6b dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 19/11/2010, 18h55
  3. programmation en pascal "aidez moi svp"
    Par invite8fa7543b dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 13/05/2009, 23h39
  4. Programmation Pascal
    Par inviteb2b9e8eb dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 05/10/2007, 16h00