Apprendre Maple Travail dirigé 4
Séquences, listes, ensembles, tables et tableaux


 
  Page d'accueilPage d'accueil   RechercherRechercher   Forum de discussionForum de discussion   ContactContact   SommaireSommaire 
  Cours MapleCours Maple   Travaux dirigésTravaux dirigés   Thèmes d'activitésThèmes d'activités   Thèmes d'activitésMaplets
Ecran Maple 7Ecran Maple 7  TéléchargementTéléchargement  BibliographieBibliographie  LiensLiens  


 

Page d'accueil   Travaux dirigés   << TD précédent   TD suivant >>



TD 4.1:

Corrigé TD 4.1


1° Un tableau
T à n lignes et p colonnes étant donné , écrire une procédure

ligne( T , p , i ) qui calcule la somme des éléments de T situés en ligne i .

 

2° Un tableau T à n lignes et p colonnes étant donné , écrire une procédure

colonne( T , n , j ) qui calcule la somme des éléments de T situés en colonne j .

 

3° Un tableau carré T à n lignes et n colonnes étant donné , écrire une procédure

diagonale1( T , n ) qui calcule la somme des éléments de T situés sur la première diagonale.

 

4° Un tableau carré T à n lignes et n colonnes étant donné , écrire une procédure

diagonale2( T , n ) qui calcule la somme des éléments de T situés sur la seconde diagonale.

 

5° Un tableau T carré à n lignes et n colonnes est dit magique si la somme des éléments de

n'importe quelle ligne , de n'importe quelle colonne , et de n'importe quelle diagonale est

la même .

Utiliser les procédures précédentes pour écrire une fonction booléenne magique( T , n )

rendant la valeur true si T est magique, et false sinon .

 

Exemples:

T := MATRIX([[8, 1, 6], [3, 5, 7], [4, 9, 2]])

 

 

> magique(T,3);

true

 

U := matrix([[5, 6, 3], [0, 8, 1], [4, 7, 2]])

> magique(U,3);

false

 


TD 4.2:

Corrigé TD 4.2

Ecrire la procédure intitulée coder(st::string) qui convertit la chaîne de caractères st

(écrite en lettres minuscules) en un nombre.

 

On code : proc (a) options operator, arrow; 1 end proc , proc (b) options operator, arrow; 2 end proc , etc ... , proc (z) options operator, arrow; 26 end proc .

 

Exemple: si st = maple alors proc (m) options operator, arrow; 13 end proc , proc (a) options operator, arrow; 1 end proc , proc (p) options operator, arrow; 1 end proc 6 , proc (l) options operator, arrow; 12 end proc , proc (e) options operator, arrow; 5 end proc .

 

> coder("maple");

1301161205

 

Aide: pour écrire cette procédure , on construira un alphabet puis une table T de conversion

proc (lettres) options operator, arrow; nombres end... et on utilisera au besoin les fonctions de Maple suivantes:

 

length(st) qui donne la longueur de la chaîne de caractères st .

substring(st,m..n) qui extrait de st la sous-chaîne des caractères situés entre les

positions m et n.

 


 

Corrigé du Travail dirigé 4:

TD 4.1:

Énoncé TD 4.1

> T:=array([[4,1,2],[3,5,6],[7,9,2]]):

> ligne:=proc(T::array,p::posint,i::posint)

> local j,s;

> s:=0:

> for j to p do

> s:=s+T[i,j]

> od;

> end;

ligne := proc (T::array, p::posint, i::posint) loca...

> print(T);for i to 3 do ligne(T,3,i) od;

matrix([[4, 1, 2], [3, 5, 6], [7, 9, 2]])

7

14

18

> colonne:=proc(T::array,n::posint,j::posint)

> local i,s;

> s:=0:

> for i to n do

> s:=s+T[i,j]

> od;

> end;

colonne := proc (T::array, n::posint, j::posint) lo...

> print(T);for j to 3 do colonne(T,3,j) od;

matrix([[4, 1, 2], [3, 5, 6], [7, 9, 2]])

14

15

10

> diagonale1:=proc(T::array,n::posint)

> local i,s;

> s:=0:

> for i to n do

> s:=s+T[i,i]

> od;

> end;

diagonale1 := proc (T::array, n::posint) local i, s...

> print(T);diagonale1(T,3);

matrix([[4, 1, 2], [3, 5, 6], [7, 9, 2]])

11

 

> diagonale2:=proc(T::array,n::posint)

> local i,s;

> s:=0:

> for i to n do

> s:=s+T[i,n+1-i]

> od;

> end;

diagonale2 := proc (T::array, n::posint) local i, s...

> print(T);diagonale2(T,3);

matrix([[4, 1, 2], [3, 5, 6], [7, 9, 2]])

14

> magique:=proc(T::array,n::posint)

> local s,i,j;

> s:=diagonale1(T,n):

> if diagonale2(T,n)<>s then RETURN(false) fi;

> for i to n do

> if ligne(T,n,i)<>s then RETURN(false) fi

> od;

> for j to n do

> if colonne(T,n,j)<>s then RETURN(false) fi

> od;

> RETURN(true);

> end;

magique := proc (T::array, n::posint) local s, i, j...
magique := proc (T::array, n::posint) local s, i, j...
magique := proc (T::array, n::posint) local s, i, j...
magique := proc (T::array, n::posint) local s, i, j...
magique := proc (T::array, n::posint) local s, i, j...
magique := proc (T::array, n::posint) local s, i, j...
magique := proc (T::array, n::posint) local s, i, j...
magique := proc (T::array, n::posint) local s, i, j...

> magique(T,3);

false

> T:=array([[8,1,6],[3,5,7],[4,9,2]]);

T := matrix([[8, 1, 6], [3, 5, 7], [4, 9, 2]])

> magique(T,3);

true

 


TD 4.2:

Énoncé TD 4.2

Création de l'alphabet:

> restart:alphabet:=["a","b","c","d","e","f","g","h","i","j","k","l","m",
                                      "n","o","p","q","r","s","t","u","v","w","x","y","z"];

alphabet := [

 

Création d'une table T de conversion lettres --> nombres:

> for K to nops(alphabet) do T[alphabet[K]]:=K end do:

 

Procédure de codage :

> coder:=proc(st::string)
        local J,K,L,N,S;
            L:=length(st);
            if L= 0 then error "chaine vide" end if;
            N:=0;K:=1;
            for J from L by -1 to 1 do
                S:=substring(st,J..J):
                if not member(S,alphabet) then error "mauvais caractère " || S end if;
                N:=K*T[S]+N;
                K:=K*100;
            end do;
            N;
    end proc;

coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...
coder := proc (st::string) local J, K, L, N, S; L :...

> coder("maple");

1301161205

> coder("maplE"); # pas de majuscules

Error, (in coder) mauvais caractère E

 

 

haut de cette page


©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.