éviter l’écriture scientifique

Accueil Forums Programmation WIMS Programmation d’exercices OEF éviter l’écriture scientifique

Étiqueté : 

Vous lisez 5 fils de discussion
  • Auteur
    Messages
    • #7152
      Lionel Verbecq
      Participant
      Up
      0
      Down
      ::

      Bonjour,

      Dans un exercice de conversion d’aire, la réponse s’affiche en écriture scientifique

      ce qui est incompréhensible pour un élève de 6e -5e

      J’ai alors modifié mon exercice en utilisant une idée vue sur le forum :

      \text{rep1deci=pari(default(format, "f.20");
      
      u1=\rep1;
      
      printf(u1);
      
      )}

      cela fonctionne presque car maintenant j’ai cela :

      et aussi :

      Quelqu’un a-t-il un moyen qui permet de résoudre totalement mon problème c’est à dire éviter l’écriture scientifique sans que 0.03 ne se transforme en 0.02999… ?

      Merci.

      Lionel.

      • Ce sujet a été modifié il y a 1 année et 10 mois par Avatar photoOlivier. Raison : ajout de `...`autour du code
    • #7153
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Quel calcul as-tu fait avant ? tu es parti de nombres réels ? ou rationnels ? Quel ordre de grandeur ? en général la notation scientifique n’apparait que pour des grands nombres ou de très petits ? On ne peut pas répondre de manière pertinente (en tout cas moi) sans détails supplémentaires. Car cela dépend la situation.

    • #7163
      Lionel Verbecq
      Participant
      Up
      0
      Down
      ::

      Bonjour,

      Il s’agit d’un exercice de conversion d’aires de J-L Donadoni que j’ai repris sans changer le début. Ma modification apparait à partir de l’introduction du logiciel PARI :

      \precision{1000000000}
      \text{unit=\(km^2),\(hm^2),\(dam^2),\(m^2),\(dm^2),\(cm^2),\(mm^2)}
      \title{Conversions d'aires 2}
      \integer{n1=randint(1..9)}
      \integer{u1=randint(2..7)}
      \integer{z1=randint(-4..-1)}
      \if{\u1+\z1<1}{\integer{z1=-1}}
      \integer{n2=randint(1..9)}
      \integer{u2=randint(2..7)}
      \integer{z2=randint(-4..-1)}
      \if{\u2+\z2<1}{\integer{z2=-1}}
      \real{rep1=\n1*10^(\z1*2)}
      \real{rep2=\n2*10^(\z2*2)}
      \text{rep1deci=pari(default(format, "f.20");
      u1=\rep1;
      printf(u1);
      )}
      \text{rep2deci=pari(default(format, "f.20");
      u2=\rep2;
      printf(u2);
      )}

      Lionel.

      • Cette réponse a été modifiée le il y a 1 année et 10 mois par Avatar photoOlivier. Raison: ajout de `...` autour du code
    • #7164
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Il n’y a donc que des rationnels. Donc calcule dans pari.

      \text{rep1=pari(\n1*10^(\z1*2))}

      et de même pour l’autre. Mais du coup tu auras un rationnel. Et pourquoi ne restes-tu pas avec un rationnel ?

      Si tu fais \text{rep1=pari(1.*\n1*10^(\z1*2))}

      pari le traitera en réel, et en effet s’il est trop petit, des E seront introduits.

      Dans ton cas, si ni les rationnels, ni les réels ne conviennent, comme tu as un entier inférieur à 10 que tu multiplies par une puissance négative de 10, tu peux aussi construire le nombre « à la main ».

      \text{v=wims(makelist 0 for t=1 to -2*\z1-1)}
      
      \text{v=0.wims(nospace wims(replace internal , by in \v))\n1}

      ou un truc comme cela (je ne garantis pas le nombre de zéros, mais c’est facile à ajuster).

       

      • Cette réponse a été modifiée le il y a 1 année et 10 mois par Avatar photoOlivier. Raison: ajout de `...` autour du code
    • #7165
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Et bien sûr, c’est bien si ensuite on corrige l’exercice initial de Donadoni … (quel module ? quel exercice).

      Bernadette

    • #7168
      Lionel Verbecq
      Participant
      Up
      0
      Down
      ::

      Bonjour Bernadette,

      Votre solution de reconstruire à la main a parfaitement fonctionné. Merci.

      Lionel.

       

Vous lisez 5 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.