CPGE OUJDA
DS 2 (MP2)
PROBLEME1
Soit le schéma relationnel suivant :
ETUDIANT(N°Etudiant,
Nom, Prénom)
MATIERE(CodeMat, LibelléMat, CoeffMat)
EVALUER(N°Etudiant*, CodeMat*, Date, Note)
Les réponses doivent etre données en SQL
Q1 - Quel est le nombre total d'étudiants ?
Q2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la plus basse ?
Q3 - Quelles sont les moyennes de chaque étudiant dans chacune des matières ?
Q4 - Quelles sont les moyennes par matière ?
Q5 - Quelle est la moyenne générale de chaque étudiant ?
Q6 - Quelle est la moyenne générale de la promotion ?
Q7 - Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à la moyenne générale de la promotion ?
PROBLEME2
1. Écrire une fonction insertion_sort qui trie de manière croissante une liste donnée en pa- ramètre avec l’algorithme du tri par insertion.Compexité ?
2. Écrire une fonction in_list qui détermine si, oui ou non, une valeur donnée existe dans une liste triée. Utiliser la recherche dichotomique.Complexité ?
3. Écrire une fonction poly_sort qui reçoit une liste de polynômes, et une valeur x et qui trie cette liste en se basant sur l’ordre défini par la valeur des polynômes en x(Les polynômes sont représentés par les coefficients de leurs monômes). Par exemple :
p1
=
[4,
2,
3] ‘’’p1=4+2x+3x2 ’’’
p2 = [2, 1]
p3 = [2, -3, 4, 1]
p4 = [-1, 2]
ls = [p1, p2, p3, p4]
poly_sort(ls, 2)
print(ls) # ->[[-1, 2], [2, 1], [2, -3, 4, 1], [4, 2, 3]]
Vous utiliserez le tri par sélection.
Pour ce faire on décomposera la question en plusieurs fonctions :
a)Ecrire une fonction swap(ls, i1, i2): qui permute les éléments d’indices i1 et i2 de la liste ls
b)Ecrire une fonction min_pos_from(ls, i, x): qui retourne La position du min de ls en commençant en i.
c) Écrire une fonction p_eval qui évalue un polynôme en un x donné.
>>>
polynomial
=
[4,2,7,1]
>>> x = 2
>>> print(p_eval(polynomial,x))
44 ‘’’ .4*1+2*2+7*4+1*8=44’’’
d) Ecrire la fonction poly_sort(ls, x):