Exercice Ecrire en Maple une fonction SOMCHIFFR qui calcule la somme des chiffres d'un entier quelconque n si l'entier n entre est la somme de ses chiffres est On pourra utiliser les fonctions irem et iquo irem n p donne le reste de la division euclidienne de l'entier positif n par l'entier positif p iquo n p donne le plus grand entier q tel que q*p n

Publié par

Niveau: Supérieur, Licence, Bac+1
Exercices finales Exercice 1. Ecrire en Maple une fonction SOMCHIFFR qui calcule la somme des chiffres d'un entier quelconque n (si l'entier n entre est 12304, la somme de ses chiffres est 10). On pourra utiliser les fonctions irem et iquo : irem(n,p) donne le reste de la division euclidienne de l'entier positif n par l'entier positif p ; iquo(n,p) donne le plus grand entier q tel que q*p <= n. SOMCHIFFR:=proc(n::integer) local m,som: som:=0; m:=n; while m<>0 do som:=som+irem(m,10); m:=iquo(m,10); od; som; end; Exercice 2. Ecrire une fonction MAPLE qui retourne la valeur vrai si tous les elements de la liste L1 sont dans la liste L2.(L1 incluse dans L2). inclusion:=proc(L1::list, L2::list) local i, test: test:=true; for i from 1 to nops(L1) do if not(member(L1[i], L2)) then test:=false; fi; od; test; end; /* version sans variable test, avec return*/ inclusion:=proc(L1::list, L2::list) local i: for i from 1 to nops(L1) do if not(member(L1[

  • entiers variable locale

  • entier programme d'essay parametre d'entree-sortie

  • donne en parametre

  • entier

  • inclusion:=proc

  • methode nbreventeproduit

  • montant moyen des achats

  • parametre d'entree


Publié le : mercredi 30 mai 2012
Lecture(s) : 368
Source : di.ens.fr
Nombre de pages : 5
Voir plus Voir moins
Exercices finales
Exercice 1.Ecrire en Maple une fonction SOMCHIFFR qui calcule la somme des chiffres d’un entier quelconque n(silentiernentre´est12304,lasommedeseschiresest10).Onpourrautiliserlesfonctionsiremetiquo: irem(n,p) donne le reste de la division euclidienne de l’entier positif n par l’entier positif p; iquo(n,p) donne le plus grand entier q tel que q*p<= n. SOMCHIFFR:=proc(n::integer) local m,som: som:=0; m:=n; while m<>0 do som:=som+irem(m,10); m:=iquo(m,10); od; som; end; Exercice 2.1soEncsrtierLetalavelrnouetirquELPAMnoitcnofenulalitsdeemen´el´lssetiuoarsiuevr dans la liste L2.(L1 incluse dans L2). inclusion:=proc(L1::list, L2::list) local i, test: test:=true; for i from 1 to nops(L1) do if not(member(L1[i], L2)) then test:=false; fi; od; test; end; /* version sans variable test, avec return*/ inclusion:=proc(L1::list, L2::list) local i: for i from 1 to nops(L1) do if not(member(L1[i],L2)) then return false; fi; od; true; end; Exercice 3.,raetdoceerm´nuontsenemivtcepseretnanetnolesietedatlielc4epr´esent´eparun´nUdutetnairtse sonnom,sonpr´enometsonˆage(parexemple[124098,Pomon,Jules,19]).Onaunelistecontenantelensemble des´etudiantsdungroupe.EcrireunefonctionMAPLE,commen¸cantpar:Jeunes:=proc(L::list,b::integer) quiretournelenombrede´tudiantsdontlaˆgeestinf´erieurou´egala`b.
Jeunes:=proc(L::list, b::integer)
1
local compteur, i: compteur:=0; for i from 1 to nops(L) do if L[i][4]<=b then compteur:=compteur+1; fi; od; compteur; end;
Exercice 4.neuruxdersietoretsilPLse`apartirmpairquietdLetndnulesiroepunezivcrEIriaPelpaMerudec et LI : dans LP il y aura tous les nombres pairs de L, dans LI les impairs. Par example un appel de PairImpair sur la liste [1,2,3,4,5,6,7,8] retourne les deux listes : [2,3,6,8] et [1,3,5,7].
PairImpair:=proc(L::list, LP::name, LI::name) local i: LP:=[]; LI:=[]; for i from 1 to nops(L) do if irem(L[i],2)=0 then LP:=[op(eval(LP)),L[i]]; else LI:=[op(eval(LI)),L[i]]; fi; od; NULL; end;
Exercice 5.ennehacnˆaalnyısdeedeesdonn´eeeetssfeodu´rrnaieeislpeasruurifctcedexeteicrcLejbo magasins. Pour chaque magasin vous avez un identifiant entier. Pour chaque achat vous avez l’identifiant du magasin, le code du produit (entier [1,15]) ainsi que le montant (entier [1, 1000]). Par exemple : [12345, 1234567890, 500] est un achat du produit 1234567890 fait dans le magasin 12345 pour un montant de 500. Unelistedesachatsestuneliste[achat1,achat2,...]ou`chaqueachatestdelaformedeniecidessous.En Maple : 1.Ecrireunem´ethodeAchatMoyen(n::integer,L::list)quipourunmagasin(dontlidentiantestdonne´ enparame`tre)retournelemontantmoyendesachatsdanslalistedesachatsL. 2.Ecrireuneme´thodeNbreVenteProduit(n::integer,p::integer,L::list)quipourunmagasinetunproduit retourne le nombre de ventes dans la liste des achats L. 3.Ecrireunem´ethodeProduitVedette(n::integer,L::list)quipourunmagasin(dontlidentiantestdonne´ enparame`tre)retournelidentiantduproduitleplusvendudanslalistedesachatsL. 4.Ecrireunem´ethodeAnalyse(n::integer,L::list)quipourunmagasin(dontlidentiantestdonne´en param`etre)achelemontantmoyendesachatsainsiquelidentiantduproduitleplusvendudansla liste des achats L.
Creerliste:=proc() local b, L, i; L:=[]; b:=rand(10000..20000)(); for i from 1 to b do L:=[op(L), [rand(50)(),rand(100)(), od; L; end;
rand(100)()]];
2
AchatMoyen:=proc(n::integer, L::list) local i, montot, tot; montot:=0; tot:=0; for i from 1 to nops(L) do if L[i][1]=n then montot:=montot+L[i][3]; tot:=tot+1; fi; od; evalf(montot/tot); end;
NbreVenteProduit:=proc(n::integer, p::integer, L::list) local i, ventes; ventes:=0; for i from 1 to nops(L) do if L[i][1]=n and L[i][2]=p then ventes:=ventes+1; fi; od; ventes; end; ProduitVedette:=proc(n::integer, L::list) local i, produit, totventesmax; totventesmax:=0; for i from 1 to nops(L) do if L[i][1]=n and NbreVenteProduit(n, L[i][2], L)>totventesmax then produit:=L[i][2]; totventesmax:=NbreVenteProduit(n, L[i][2], L); fi; od; produit; end; Analyse:=proc(n::integer, L::list) print("Montant achat moyen: ", AchatMoyen(n,L)); print("Produit vedette: ", ProduitVedette(n,L)); NULL; end; Exercice 6.Soit les listes – Chanson,dre´eurit[tpyt:ahcet,]eertismdentmarixpleeesetuni`ereractdecaˆınenu´reetsrue´esdt – Disquehainedecaract`ersiuqaenuuaetruc(,C..nsha]]onnd,uuetuC[,rsnah.,noa[enute)sexedetsil Chanson Discothe`queisquesilyDset´utiedeetcesstonh`otueeqque],Disdisc,une[iD.,..qseu Exemple:maDiscothe`que:=[[aut1,[[t11,3.2],,[t1n,4.3]]],.,[autz,[[tz1,5.2],,[tzm,1.3]]]][t1n,4.3]estla derni`erechansondupremierdisquedeladiscoth`equemaDiscothe`que.EnMaple: 1.Ecrireunefonctionduree(disque::list)quipourunelisteDisque(disque)retourneladur´eetotaledu disque. 2.Ecrireunefonctiontiming(d::oat,dd::list)quipourunedur´eedretournelepremierDisquedela discoth`equedddontladure´eeste´galea`celleded.Unemargede10%esttole´re´e,parexemplesid=100,
3
lafonctionretournelepremierDisquedontladur´eeestcompriseentre90et110minutes. 3. Ecrireune fonction chanteur(n : :string, dd : : list) qui retourne une liste contenant tous les Disques de la discothe`quedddontnestlechanteur. 4.Ecrireunefonctionvedette(dd::list)quiretournelechanteurayantleplusdeDisquedansladiscoth`eque dd. 5.Ecrirelaproceduresupprime(n::string,dd::name)quieacedeladiscothe`queddtouslesDisquesdont nestlechanteuretretournelenombrededisquessupprim´es. 6.Ecrireuneme´thodeclassement(dd::list)quipourunediscoth`equeddretournelalistedeschanteurs danslordrede´croissantdeleurnombredeDisques. duree:=proc(disque::list) local i, tot; tot:=0; for i from 1 to nops(disque[2]) do tot:=tot+disque[2][i][2]; od; tot; end;
timing:=proc(d::float, dd::list) local i, dureei: for i from 1 to nops(dd) do dureei:=duree(dd[i]); if dureei >= d - 0.1*d and dureei<=d+0.1*d then return dd[i]; fi; od; print("error: il n’y a pas de disques avec cette duree"); NULL; end;
chanteur:=proc(n::string, dd::list) local l,i; l:=[]; for i from 1 to nops(dd) do if dd[i][1]=n then l:=[op(l),dd[i]]; fi; od; l; end;
vedette:=proc(dd::list) local i, nbrdisque, chant: nbrdisque:=0; for i from 1 to nops(dd) do if nops(chanteur(dd[i][1],dd))>nbrdisque then nbrdisque:=nops(chanteur(dd[i][1],dd)); chant:=dd[i][1]; fi; od; chant; end;
supprime:=proc(n::string, dd::name)
4
local totsuppr, i, L; totsuppr:=0; L:=eval(dd); for i from nops(L) to 1 by -1 do if L[i][1]=n then L:=subsop(i=NULL, L); totsuppr:=totsuppr+1; fi; od; dd:=L; totsuppr; end;
classement:=proc(dd ::list) local L, Lchant: L:=dd; Lchant:=[]; while(L<>[]) do Lchant:=[op(Lchant), vedette(L)]; supprime(vedette(L), ’L’); od; Lchant; end;
Exercice 7.Soitd1erufecodealrpdecioussecnimeomalgahcoD.szennrandechae`al´eccuitnouqiesnrt Ecrire. Pour chaque appel provoquant une erreur, expliquez la raison.
Procedure f1 Parame`tredentr´ee:x,m,n:entier Param`etredentr´ee-sortie:e:entier Variable locale : s, i : entier D´ebut s0 Pouriallantdem`axpasdenfaire Si e>0 alors ss+1 Sinon ss-1 Fin si e(-1)ˆi *e Fin faire Retourner(s) Fin
5
Programme d’essay Variables s, v, c : entiers D´ebut s2 v2 c1 1)Ecrire(f1(9, 1, 3, v), v, s) 2)Ecrire(f1(9, 1, 3, s),s) 3)Ecrire(f1(13,2,2, c), c, s) 4)Ecrire(f1(10, 1, 3, 3),e) Fin
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.