Vous êtes sur la page 1sur 9

Correction du Médian INF1 A21

Partie A : Diagrammes de Conway

1) Soit le langage dont la syntaxe est définie par la suivante :


d cn ap+1 xm bp (ej hk gj)t f avec n >=0 p>=1 m>=0 j>=1 k>=1 t>=0
a) Donner 4 exemples de phrases acceptées par ce langage.

- dcaaxbehgf
- daabf
- daaaxxxxxbbeekggf
- dccccaaxxxxxxbf

b) Donner 4 exemples de phrases refusées par ce langage.

- dddcaaxbehgf (plusieurs d)
- daabffff (plusieurs f)
- daaxxxxxbbeekggf (il manque un a)
- dcaaxbegf (il manque un h)

c) Définir par les diagrammes de Conway correspondant à ce langage

Diagramme principal (résultat) :


Définition du A :

Définition du B :

2) Déterminer si les expressions suivantes sont correctes. Préciser, l'ordre de priorité

Etudiant_UTC = TC or GM or GI or GSU or GP or GB or Master or Doctorat

Règles de dérivation :
Arbre binaire indiquant l’ordre de priorité des opérateurs :

(age<18) and (note>12) and TC or (age>18) and (note>14) and not TC

Règles de dérivation :
Arbre binaire indiquant l’ordre de priorité des opérateurs :

Partie B : Jeu du nombre Mystère

Partie 1 : Algorithme
Algorithme
Début
Variable :
a,b,i,j : entier
Afficher("Bienvenu au jeu")
Afficher("Joueur 1 : merci de choisir un nombre")
Lire(a)
Effacer console
i=0
Répéter
Si i==0
alors
Afficher("Joueur 2 : à vous de deviner le nombre, commencez !")
Sinon
Afficher("Joueur 2, essayer une nouvelle tentative : donnez un nombre")
Fin si
Lire(b)
si b>a
alors
Afficher("C'est plus")
i=i+1
Sinon
Si b<a
alors
Afficher("C'est moins")
i=i+1
Sinon
Afficher("Bravo, vous avez trouvé le nombre en ",i, "étapes")
Fin si
Fin si
Jusqu’à (a=b)

Afficher ("Joueur 1 : à votre tour de faire deviner : merci de choisir un nombre")


Lire(a)
Effacer la console
j=0
Répéter
Si i==0
alors
Afficher("Joueur 1 : à vous de deviner le nombre, commencez !")
Sinon
Afficher("Joueur 1, essayer une nouvelle tentative : donnez un nombre")
Fin si
Lire(b)
Si b>a
alors
Afficher("C'est plus")
j=j+1
Sinon
Si b<a
alors
Afficher("C'est moins")
j=j+1
Sinon
Afficher("Bravo, vous avez trouvé le nombre en ",j, "étapes")
Fin si
Fin si
Jusqu’à (a=b)

Si i>j
alors
Afficher(" Le ganant est Joueur 1")
Sinon
Si j>i
alors
Afficher (" Le ganant est Joueur 2")
Sinon
Afficher(" match Null")
Fin Si
Fin Si
Partie 2 : Python
import os
print("Bienvenu au jeu")
print("Joueur 1 : merci de choisir un nombre")
a=int(input())
os.system("clear")
i=0
while 1 :
if i==0:
print("Joueur 2 : à vous de deviner le nombre, commencez !")
else:
print("Joueur 2, essayer une nouvelle tentative : donnez un
nombre")
b=int(input())
if b>a :
print("C'est plus")
i=i+1
elif b<a :
print("C'est moins")
i=i+1
else:
print("Bravo, vous avez trouvé le nombre en ",i, "étapes")
break

print("Joueur 2 : à votre tour de faire deviner : merci de choisir


un nombre")
a=int(input())
os.system("clear")
j=0
while 1 :
if j==0:
print("Joueur 1 : à vous de deviner le nombre, commencez !")
else:
print("Joueur 1, essayer une nouvelle tentative : donnez un
nombre")
b=int(input())
if b>a :
print("C'est plus")
j=j+1
elif b<a :
print("C'est moins")
j=j+1
else:
print("Bravo, vous avez trouvé le nombre en ",j, "étapes")
break
if(i>j):
print(" Le gagnant est Joueur 1")
elif(j>i):
print(" Le gagnant est Joueur 2")
else:
print(" match Null")
Partie C : Listes et Chaînes
1) Ecrire un algorithme qui lit un tableau de N nombres entiers, et affiche ceux qui sont supérieurs à la
moyenne des nombres impaires dans tableau.

a) Algorithme :

lire(N)

somme_impaire <- 0

nb_impaire <- 0

Pour i allant de 1 à N faire

lire(tab[i])

Si tab[i] MOD 2 <> 0 alors

somme_impaire <- somme_impaire + tab[i]

nb_impaire <- nb_impaire + 1

Fin_si

Fin_pour

moy_impaire <- somme_impaire / nb_impaire

Afficher("La moyenne des nombres impaires est :", moy_impaire)

Afficher("Voici la liste des nombres supérieurs à la moyenne des nombres impaires :")

Pour i allant 1 à N faire

Si tab[i] > moy_impaire alors

Afficher(tab[i])

Fin_si

Fin_pour

b) Jeu de données :

N = 10

tab = [1, 2, 3, 4, 5, 6, 7, 8, 9,10]

somme_impaire = 1 + 3+5+7+9 = 25

nb_impaire = 5

moyenne_impaire = 25/5

La moyenne des nombres impaires est : 5

Voici la liste des nombres supérieurs à la moyenne des nombres impaires : 6, 7, 8, 9, 10


c) Programme python
# exo 1
N = int(input("Nombre de nombres : "))
somme_impaire = 0
nb_impaire = 0
tab = []
for i in range(0,N) :
tab.append(int(input(f'{i+1}ème nombre : ')))
if tab[i] % 2 != 0 :
somme_impaire += tab[i]
nb_impaire += 1

moy_impaire = somme_impaire / nb_impaire


print("La moyenne des nombres impaires est :", moy_impaire)

print("Voici la liste des nombres supérieurs à la moyenne des


nombres impaires :")
for i in range(0,N) :
if tab[i] > moy_impaire :
print(tab[i], end = ' ')

2) Ecrire un algorithme qui lit un mot (qui contient un minimum de 2 lettres) et vérifie s'il est un
palindrome. Un mot est palindrome si l'ordre des lettres reste la même qu'on le lise de gauche à
droite ou de droite à gauche.

a) Algorithme

lire(mot)

init = 1

fin = longueur(mot)
TantQue mot(init) = mot(fin) ET init <= fin faire

init <- init +1

fin <- fin – 1

Fin_TantQue

Si init > fin alors

Afficher("Le mot ", mot, "est un palindrome")

Sinon

Afficher("Le mot ", mot, "n'est pas un palindrome")

b) Jeu des données

Entrez un mot (minimum 2 lettres) : noyon

 noyon est un palindrome

Entrez un mot (minimum 2 lettres) : Kayak

 Kayak est un palindrome

Entrez un mot (minimum 2 lettres) : Bonjour

 Bonjour n'est pas un palindrome

c) Programme python
mot = input("Entrez un mot (minimum 2 lettres) :")
init = 0
fin = len(mot)-1
while mot[init] == mot[fin] and init <= fin :
init += 1
fin -= 1
if init > fin :
print(f'{mot} est un palindrome')
else :
print(mot, "n'est pas un palindrome")

Vous aimerez peut-être aussi