Blame view

Giac_maj/giac-1.4.9/examples/arit/numeration 1.93 KB
6663b6c9   adorian   projet complet av...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  ecris(n,b):={
  //n est en base 10 et b<=10, ecrit est une fonction iterative 
  //ecris(n,b)=la liste des caracteres de l'ecriture de n en base b  
  local L;
  L:=[];
  while (n>=b){
  L:=concat([irem(n,b)],L);
  n:=iquo(n,b);
  }
  L:=concat([n],L);
  return(L);
  };
  ecritur(n,b):={
  //n est en base 10 et b<=10, ecritur est une fonction recursive 
  //ecritur(n,b)=la liste des caracteres de l'ecriture de n en base b
  if (n>=b)
  return(append(ecritur(iquo(n,b),b),irem(n,b)));
  else
  return([n]);
  };
  chiffre(n,b):={
  //chiffre(n,b) transforme n (0<=n<b) en son caractere ds la base b 
  if (n>9) 
  n:=char(n+55);
  else 
  n:=char(48+n);
  return(n);
  };
  ecritu(n,b):={
  //n est en base 10 et b<=36, ecritu est une fonction iterative 
  //ecritu(n,b)=la liste des caracteres de l'ecriture de n en base b  
  local L,r,rc;
  L:=[];
  while (n>=b){
  r:=irem(n,b);
  rc:=chiffre(r,b);
  L:=concat([rc],L);
  n:=iquo(n,b);
  }
  n:=chiffre(n,b);
  L:=concat([n],L);
  return(L);
  };
  ecriture(n,b):={
  //n est en base 10 et b<=36, ecriture est une fonction recursive 
  //ecriture(n,b)=la liste des caracteres de l'ecriture de n en base b
  local r,rc;
  if (n>=b){
  r:=irem(n,b);
  rc:=chiffre(r,b);
  return(append(ecriture(iquo(n,b),b),rc));
  }
  else {
  return([chiffre(n,b)]);
  }
  };
  ecrit(n,b):= { 
  //ecrit(n,b)=la sequence des chiffres de n dans la base b 
  local m,u,cu; 
    m:=(NULL);  
    while(n!=0){ 
        u:=(irem(n,b));  
        if (u>9) { 
            cu:=(char(u+55));  
          } 
         else { 
            cu:=(char(u+48));  
          };  
        m:=(cu,m);  
        n:=(iquo(n,b));  
      };  
    return(m); 
  };
  nombre(m,b):={
  local s,k,am,nm,n; 
    s:=(size(m));  
    n:=(0);  
    k:=(0);  
    if (s!=0) { 
        while(k<s){ 
            am:=(asc(m[k])[0]);  
            if (am>64) { 
                nm:=(am-55);  
              } 
             else { 
                nm:=(am-48);  
              };  
            if (nm>(b-1)) { 
                return("erreur");  
              }  
            n:=(n*b+nm);  
            k:=(k+1);  
          };  
      }   
    return(n);
  };