Table d'addition et de multiplication

Voir le sujet précédent Voir le sujet suivant Aller en bas

Table d'addition et de multiplication

Message  Joffrey le Mar 24 Fév - 17:28

Bonjour,

J'ai un peu de temps aujourd'hui, j'en profite pour poster cette petite macro qui permet d'obtenir les tables d'addition, de multiplication d'entier positif puis les tables d'addition et de multiplication dans Z/nZ.

Code:
{table(dim, operation)}
[
dim:=%1, $op:=%2,

Marges(0,0,0,0),

{Quadrillage exterieur 1°ligne et 1°colonne}
Width:=8,
Ligne([-1+i, dim+i, dim-dim*i, -1-dim*i],1),
Ligne([-1, dim, jump, i, -dim*i],0),

{Quadrillage}
Width:=2,
Ligne([ for k from 1 to dim-1 do
              k+i, k-dim*i, jump
        od,
        for j from 1 to dim-1 do
              -1-j*i, dim-j*i,jump
        od
      ],0),

{Remplissage de la table}
if op=1 then
        Fenetre(-1+1*i, dim-dim*i,0.5+0.5*i),
        size(4*dim/5,1),
        Label(-0.5+0.5*i, ["$+$"]),
        for k from 1 to dim do
              Label(k-0.5+0.5*i, [" ",k," "]),
              Label(-0.5+(-k+0.5)*i,[" ",k," "]),
              for j from 1 to dim do
                    Label(k-0.5+(-j+0.5)*i,[" ",k+j," "]),
              od,
        od,
elif op=2 then
          Fenetre(-1+1*i, dim-dim*i,0.5+0.5*i),
          size(4*dim/5,1),
          Label(-0.5+0.5*i, ["$\times$"]),
          for k from 1 to dim do
                Label(k-0.5+0.5*i, [" ",k," "]),
                Label(-0.5+(-k+0.5)*i,[" ",k," "]),
                for j from 1 to dim do
                      Label(k-0.5+(-j+0.5)*i,[" ",k*j," "]),
                od,
          od,
elif op=3 then
          Fenetre(-1+1*i, dim-(dim+1)*i,0.5+0.5*i),
          size(4*dim/5,1),
          Label(-0.5+0.5*i, ["$+_{\text{E}}$"]),
          Label((-1+dim)/2-(dim+0.5)*i, ["$+_{\text{E}}$ est l'addition dans $\mathbb{Z}/",dim,"\mathbb{Z}$"]),
          for k from 0 to dim-1 do
                m3:=mod(k,dim),
                Label(k+0.5+0.5*i, [" $\overline{ ",m3," }$ "]),
                Label(-0.5+(-k-0.5)*i,[" $\overline{",m3,"}$ "]),
                for j from 0 to dim-1 do
                      m'3:=mod(j+k,dim),
                      Label(k+0.5+(-j-0.5)*i,[" $\overline{",m'3,"}$ "]),
                od,
          od,
elif op=4 then
          Fenetre(-1+1*i, dim-(dim+1)*i,0.5+0.5*i),
          size(4*dim/5,1),
          Label(-0.5+0.5*i, ["$\times_{\text{E}}$"]),
          Label((-1+dim)/2-(dim+0.5)*i, ["$\times_{\text{E}}$ est la multiplication dans $\mathbb{Z}/",dim,"\mathbb{Z}$"]),
          for k from 0 to dim-1 do
                m4:=mod(k,dim),
                Label(k+0.5+0.5*i, [" $\overline{ ",m4," }$ "]),
                Label(-0.5+(-k-0.5)*i,[" $\overline{",m4,"}$ "]),
                for j from 0 to dim-1 do
                      m'4:=mod(j*k,dim),
                      Label(k+0.5+(-j-0.5)*i,[" $\overline{",m'4,"}$ "]),
                od,
          od,
fi,

{Choix operateur
if op=1 then
  {table de multiplication}

  for k from 1 to col do
        for j from 1 to lig do
              Label( (k-0.5)-i*(j-0.5) , [" ",k*j," "] )
        od,
  od,
  elif op=2 then
  {table d'addition}
  Label(-0.5+0.5*i,["$\boldsymbol{+}$"]),
  for k from 1 to col do
        for j from 1 to lig do
              Label((k-0.5)-i*(j-0.5),[" ",k+j," "])
        od,
  od,
fi,}
]

Dans un élément utilisateur,
Code:
table(10,1)
donne

Dans un élément utilisateur,
Code:
table(10,2)
donne

Dans un élément utilisateur,
Code:
table(7,3)
donne

Dans un élément utilisateur,
Code:
table(7,4)
donne


La deuxième variable de la macro table est l'opération :
- 1 est l'addition;
- 2 est la multiplication;
- 3 est l'addition dans Z/(variable1)Z;
- 4 est la multiplication dans Z/(variable1)Z.

Bonne journée

Joffrey

Nombre de messages : 179
Age : 35
Localisation : Vichy(03) / Clermont-Ferrand(63)
Date d'inscription : 13/06/2008

Voir le profil de l'utilisateur http://mathex.servhome.org

Revenir en haut Aller en bas

Re: Table d'addition et de multiplication

Message  P.Fradin le Mar 24 Fév - 18:08

Bonjour Joffrey,

Et merci pour cette contribution, j'ai relevè une erreur de syntaxe: un commentaire mal fermé. D'autre part j'ai mis en facteur le calcul de la fenêtre et j'ai enlevé tous les espaces dans les affichages car chez moi les labels n'étaient pas parfaitement centrés sur les cases, maintenant c'est ok.

Code:

{table(dim, operation)}
[
dim:=%1, $op:=%2,
if op<3 then  view(-1,dim,-dim,1)else view(-1,dim,-dim-1,1) fi,
Marges(0,0,0,0), size(4*dim/5,1),

{Quadrillage exterieur 1°ligne et 1°colonne}
Width:=8,
Ligne([-1+i, dim+i, dim-dim*i, -1-dim*i],1),
Ligne([-1, dim, jump, i, -dim*i],0),

{Quadrillage}
Width:=2,
Ligne([ for k from 1 to dim-1 do
              k+i, k-dim*i, jump
        od,
        for j from 1 to dim-1 do
              -1-j*i, dim-j*i,jump
        od
      ],0),

{Remplissage de la table}
if op=1 then  {table de multiplication}
        Label(-0.5+0.5*i, ["$+$"]),
        for k from 1 to dim do
              Label(k-0.5+0.5*i, k),
              Label(-0.5+(-k+0.5)*i,k),
              for j from 1 to dim do
                    Label(k-0.5+(-j+0.5)*i,k+j),
              od,
        od,
elif op=2 then {table d'addition}
          Label(-0.5+0.5*i, ["$\times$"]),
          for k from 1 to dim do
                Label(k-0.5+0.5*i, k),
                Label(-0.5+(-k+0.5)*i,k),
                for j from 1 to dim do
                      Label(k-0.5+(-j+0.5)*i,k*j),
                od,
          od
elif op=3 then
          Label(-0.5+0.5*i, ["$+_{\text{E}}$"]),
          Label((-1+dim)/2-(dim+0.5)*i, ["$+_{\text{E}}$ est l'addition dans $\mathbb{Z}/",dim,"\mathbb{Z}$"]),
          for k from 0 to dim-1 do
                m3:=mod(k,dim),
                Label(k+0.5+0.5*i, ["$\overline{ ",m3," }$"]),
                Label(-0.5+(-k-0.5)*i,["$\overline{",m3,"}$"]),
                for j from 0 to dim-1 do
                      m'3:=mod(j+k,dim),
                      Label(k+0.5+(-j-0.5)*i,["$\overline{",m'3,"}$"]),
                od,
          od
elif op=4 then
          Label(-0.5+0.5*i, ["$\times_{\text{E}}$"]),
          Label((-1+dim)/2-(dim+0.5)*i, ["$\times_{\text{E}}$ est la multiplication dans $\mathbb{Z}/",dim,"\mathbb{Z}$"]),
          for k from 0 to dim-1 do
                m4:=mod(k,dim),
                Label(k+0.5+0.5*i, ["$\overline{ ",m4," }$"]),
                Label(-0.5+(-k-0.5)*i,["$\overline{",m4,"}$"]),
                for j from 0 to dim-1 do
                      m'4:=mod(j*k,dim),
                      Label(k+0.5+(-j-0.5)*i,["$\overline{",m'4,"}$"]),
                od,
          od,
fi
]

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum