• Aucun résultat trouvé

Bac Blanc 2014 Exercice

N/A
N/A
Protected

Academic year: 2022

Partager "Bac Blanc 2014 Exercice"

Copied!
6
0
0

Texte intégral

(1)

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 1/6

Exercice

Bac Blanc 2014

Dans le cadre de la migration vers son nouvel nom commercial ooredoo, la société mère a décidé d’organiser chaque semaine un jeu de chance pour ses abonnés. Pour cela cette société vous demande d’écrire un programme qui gère ce jeu.

Saisir le nombre des participants N sachant que 5≤N≤100.

Remplir le tableau T par le numéro de téléphone de chaque participant, sachant que les numéros de téléphones sont des chaines de caractères de 8 chiffres dont le chiffre n°1 doit être 2.

Calculer le nombre de chance pour chaque n° de Tel et le stocker dans le tableau S.

Comment calculer le nombre de chance d’un n° de Tel ?

Nombre de chance = somme des chiffres de n°Tel multiplié par son rang.

Exemple : Tel=29234560

Nombre de chance= 2*1+ 9*2+ 2*3+ 3*4+ 4*5+ 5*6+ 6*7+ 0*8 = 130

Afficher les 33% premiers numéros de Téléphone ayant les plus grands scores.

NB : Si le calcul de 33% des n°Tel ne donne pas un entier, on utilisera l’arrondi du nombre trouvé.

Pour N=7

T= 24023456 20056782 29234560 25737286 26570694 23781269 21627839

1 2 3 4 5 6 7

S= 140 166 130 196 188 192 206

1 2 3 4 5 6 7

Le programme affichera

Les participants gagnants : 21627839 25737286

(2)

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 2/6

Décomposition modulaire du problème

Analyse de programme principal : Nom de programme : jeux

Résultat : Trait

Trait=[] PROC Afficher(Arrondi(n*0.33),Ttel) PROC Trier(N, Ttel,Tscore)

PROC Remplir_Score(n,Ttel,Tscore) PROC Remplir_participant(N, Ttel) PROC Saisir(n)

Fin jeux T.D.N.T

Type T_Tel=chaine de 8 caractères

TABTel= Tableau de taille 50 et de type T_Tel TABScore= Tableau de taille 50 et de type entier T.D.O Globaux

Objet T/N Rôle

N Entier stocker la taille du tableau

Ttel TABTel Stocker le n° de tel des participants

Tscore TABScore Stocker dans le tableau les scores de chaque participant Saisir Procédure Saisir la taille du tableau

Remplir_participant Procédure Remplir le tableau par les n°tel des participants Remplir_Score Procédure Remplir le tableau par les scores des participants

Trier Procédure Trier le tableau Tscore dans l’ordre décroissant Afficher Procédure Afficher les gagnants

Programme Principal

PROC

Remplir_participant(N,var T)

PROC Tri_Score (N,var T,var S)

PROC Saisie(var N)

FN calculer_score(tel)

PROC Remplir_Score (N, T, var S)

PROC PermutScore (var x,y)

FN verif(tel)

PROC PermutTel (var x,y)

PROC Afficher (N, T)

Algorithme de programme principal:

0) Début jeux 1) PROC Saisir(N)

2) PROC Remplir_participant(N, Ttel) 3) PROC Remplir_Score(n,Ttel,Tscore) 4) PROC Trier(N, Ttel,Tscore)

5) PROC Afficher(Arrondi(n*0.33),Ttel) 6) Fin jeux

(3)

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 3/6

Algorithme de la procédure Saisir 1) Répéter

écrire("Donner la valeur de N : ") lire(x)

jusqu’à (5≤x)ET(x≤50) 2) Fin Saisir

Algorithme de la procédure Remplir_participant 1) Pour i de 1 à N faire

Répéter

écrire("Tel[",i, "]=") lire(T[i])

jusqu’à FN verif(T[i]) Fin Pour

2) Fin Remplir T.D.O Locaux

Objet T/N Rôle

i Entier Compteur

verif Fonction Vérifier la validité d’un numéro de téléphone

Algorithme de la fonction Vérif 1) i 2

2) Tant que (tel[i] dans ["0".."9"]) et (i<long(tel)) faire ii+1

Fin Tant que

3) Verif (long(tel)≠8) et (tel[i] dans ["0".."9"]) et (tel[1] = "2") Fin Verif

T.D.O Locaux

Objet T/N Rôle

i Entier Compteur

Algorithme de la procédure Remplir_Score 1) Pour i de 1 à N faire

Tscore[i]FN calculer_score(Ttel[i]) Fin Pour

2) Fin Remplir_Score T.D.O Locaux

Objet T/N Rôle

i Entier Compteur

calculer_score Fonction Calculer le nombre de chance d’un numéro de téléphone

Algorithme de la Fonction calculer_score 1) [s0]pour i de 1 à long(tel) faire

valeur(tel[i],c,e) ss+c*i

Fin pour 2) calculer_score  s 3) Fin

(4)

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 4/6

T.D.O Locaux

Objet T/N Rôle

i Entier Compteur

s Entier Calculer le nombre de chance d’un numéro de téléphone c Entier Stocker un chiffre

e Entier Contient la position de l’erreur

Algorithme de la procédure Tri_Score 1) Répéter

[Echangefaux]

pour i de 1 à n-1 faire

si Tscore[i]<Tscore[i+1] alors

PROC PermutScore(Tscore[i],Tscore[i+1]) PROC PermutTel(Ttel[i],Ttel[i+1]) Echangevrai

Fin Si Fin Pour Nn-1

Jusqu’à non(echange) ou (n=1) 2) Fin Trier

T.D.O Locaux

Objet T/N Rôle

i Entier Compteur

echange booléen Vérifier si on effectuer un parcours sans échange PermutScore Procédure Permuter deux cases dans le tableau TScore PermutTel Procédure Permuter deux cases dans le tableau Ttel

Algorithme de la procédure PermutScore 1) auxx

2) xy 3) yaux

4) Fin PermutScore T.D.O Locaux

Objet T/N Rôle

aux Entier Variable auxiliaire

Algorithme de la procédure PermutTel 1) auxx

2) xy 3) yaux

4) Fin PermutTel T.D.O Locaux

Objet T/N Rôle

aux T_TEL Variable auxiliaire

Algorithme de la procédure Afficher 1) Pour i de 1 à N faire

Ecrire(Ttel[i]) Fin Pour

2) Fin Afficher T.D.O Locaux

Objet T/N Rôle

i Entier Compteur

(5)

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 5/6

Programme Pascal

PROGRAM JEU;

USES wincrt ; TYPE

T_Tel=string[8];

TABTel=Array[1..50] of T_Tel;

TABScore=Array[1..50] of integer;

VAR

n:integer;

Ttel:TABTel ; Tscore:TABScore;

PROCEDURE Saisir(VAR N :integer);

BEGIN repeat

Write('Donner le nombre de participants: ');

Readln(N) ;

until(N>=5)and(N<=50);

END;

PROCEDURE Remplir_participant(n:integer ; VAR Ttel: TABTel);

VAR i :integer ;

FUNCTION verif(tel:T_Tel):Boolean;

VAR i:integer;

BEGIN i:=2;

While (tel[i] in ['0'..'9']) and (i<length(tel) do i:=i+1;

verif :=( length(tel)<>8 ) and (tel[i] in ['0'..'9']) and (tel[1] ='2' );

END;

BEGIN

for i :=1 to n do begin

writeln('==> Participant n° ',i);

repeat Write('N°Tel: ');

Readln(Ttel[i]);

Until verif(Ttel[i]);

end;

END;

FUNCTION calculer_score(tel:T_Tel):integer;

VAR i,s,c,e:integer;

BEGIN s:=0;

for i:=1 to length(tel) do begin

val(tel[i],c,e);

s:=s+c*i;

end;

calculer_score:=s;

END;

(6)

Enseignant : Idoudi Khaled Lycée Secondaire Haffouz Page : 6/6

PROCEDURE Remplir_Score(n:integer; Ttel:TABTel ; VAR Tscore:TABScore);

VAR i :integer ; BEGIN

for i :=1 to n do

Tscore[i]:= calculer_score(Ttel[i]);

END;

PROCEDURE PermutScore(VAR x,y:integer);

VAR aux :integer ; BEGIN

aux :=x ; x :=y ; y :=aux ; END;

PROCEDURE PermutTel(VAR x,y:T_Tel);

VAR aux :T_Tel ; BEGIN

aux :=x ; x :=y ; y :=aux ; END;

PROCEDURE Trier(n:integer ; VAR Ttel:TABTel; VAR Tscore:TABScore) ; VAR i :integer ;

echange:boolean;

BEGIN repeat

echange:=false;

for i:=1 to n-1 do begin

if Tscore[i]<Tscore[i+1] then begin

PermutScore(Tscore[i],Tscore[i+1]) ; PermutTel(Ttel[i],Ttel[i+1]) ; echange:=true;

end;

end;

n:=n-1;

until not(echange) or (n=1);

END;

PROCEDURE Afficher(n:integer;Ttel:TABTel);

VAR i :integer ; BEGIN

for i:=1 to n do writeln(Ttel[i]);

END;

BEGIN Saisir(N);

Remplir_participant(N, Ttel);

Remplir_Score(n,Ttel,Tscore);

writeln;

Trier(N, Ttel,Tscore);

writeln('============ Résultat du jeu ===============');

Afficher (round(n*0.3),Ttel);

END.

Références

Documents relatifs

On peut trouver le nombre Z31 dans le système hexadécimal ……….. Le système binaire peut comporter le chiffre 2

Trouver les valeurs des constantes présentes dans l’ex- pression trouvée en question 3 puis écrire l’expression définitive T( t ). 1) Montrer qu’il existe une fonction

Associe chaque définition au mot qui convient. a-Phagocytose 2) Processus par lequel les microbes sont détruits par certaines catégories de cellules. b-Antigène 3) Capacité

[r]

Le coefficient de proportionnalité qui permet de passer de la durée du parcours à la distance parcourue s'appelle vitesse

ANIS ELBAHI 4SCX-MAT-TECH Page 5 24 - Trier un tableau T (de N entiers) de façon. décroissante en utilisant le tri

Dans sa configuration par défaut, la barre d'outils propose la création d'une page vierge ou d'une page quadrillée. Mais il existe d'autres

[r]