• Aucun résultat trouvé

1 Occurrences d'un mot dans une phrase (8 pts, 40 min)

N/A
N/A
Protected

Academic year: 2022

Partager "1 Occurrences d'un mot dans une phrase (8 pts, 40 min)"

Copied!
3
0
0

Texte intégral

(1)

Auteur : Mohamed Messabihi

Matière : Programmation et structures de données

Date 17 mars 2014 Durée 1h30

Université Abou Bakr Belkaïd - Tlemcen Faculté des Sciences 1èreAnnée MI Semestre 2

Correction du contrôle Continu

Aucun document n'est autorisé.

Les solutions sous forme de programme Pascal sont aussi acceptées.

Tout appareil électronique doit être éteint (Téléphone, Ordinateur, Tablette, etc.).

1 Occurrences d'un mot dans une phrase (8 pts, 40 min)

Écrire un programme permettant de lire une phrase composée de lettres minuscules ou majuscules et d'espaces, puis de déterminer et d'acher le nombre d'occurrences d'un mot donné (par l'utilisateur), dans cette phrase.

NB : on suppose que les mots sont séparés par des espaces (un mot ne peut donc contenir aucun espace)

Solution

1 Program Occurrence_mot ;

2 uses wincrt ;

3 var ch , mot : s t r i n g ;

4 nb , i , k : integer ;

5 Begin

6 writeln ( ' s a i s i r une phrase ' ) ;

7 readln ( ch ) ;

8 writeln ( ' s a i s i r un mot ' ) ;

9 readln (mot ) ;

10 k:= length (mot ) ;

11 nb :=0;

12 i :=1;

13 repeat

14 i f ( ch [ i ] = mot [ 1 ] ) and (mot = copy ( ch , i , k ) ) then

15 begin

16 nb := nb+1;

17 i := i+k ;

18 end

19 else

20 i := i +1;

21 until i>length ( ch ) ;

22 writeln ( ' l e mot ' ' ' , mot , ' ' ' f i g u r e ' ,nb , ' f o i s dans l a phrase : ' , ch ) ;

23 readln ;

24 End.

2 Préparation de l'équipe nationale (12 pts, 50 min)

Le sélectionneur de l'équipe nationale souhaite faire des statistiques sur les matchs de la 1

ère

division.

Il vous demande de lui faire un programme an de lui faciliter la tâche.

Vous disposez des types suivants pour stocker les noms des équipes :

B

[email protected]

Page 1

(2)

1CONST MaxEquipe = 1 6 ;

2 TYPE nom_t = s t r i n g [ 5 0 ] ;

3 TabNom_t = array [ 1 . . MaxEquipe ] of nom_t ;

1. Écrire la procédure SaisieNoms (var tab_noms : TabNom_t ; var nbr_equipe : Inte- ger) ; qui lit au clavier une suite de noms (un par ligne) terminée par une ligne vide, mémorise ces noms dans tab_noms et le nombre résultant dans nbr_equipe.

Solution

1 Procedure SaisieNoms ( var tab_noms : TabNom_t ; var nbr_equipe : integer ) ;

2 Var s : nom_t ;

3 Begin

4 nbr_equipe := 0 ;

5 readln ( s ) ;

6 while s <> ' ' do { ou l e n g t h ( s ) > 0 }

7 begin

8 nbr_equipe := nbr_equipe +1;

9 tab_noms [ nbr_equipe ] := s ;

10 readln ( s ) ;

11 end ;

12 End;

2. Les équipes sont désormais numérotées dans leur ordre de saisie. On introduit maintenant des types pour mémoriser les scores des matchs, qui ont lieu chaque fois entre une équipe locale et une équipe extérieure :

1CONST MaxMatch = 1000;

2 TYPE Match_t = record

3 n_loc , n_ext , { numéro équipe l o c a l e , e x t é r i e u r e }

4 s_loc , s_ext : integer ; { score équipe l o c a l e , e x t é r i e u r e }

5 end ;

6 TabMatch_t = array [ 1 . . MaxMatch ] of Match_t ;

Écrire la fonction Gagnant(m : match_t) : Integer ; qui pour un match m donné, renvoie 1, -1 ou 0 selon que la gagnante est l'équipe locale, extérieure ou que le match est nul.

Solution

1 Function Gagnant (m : Match_t ) : integer ;

2 Begin

3 i f m. s_loc > m. s_ext then Gagnant := 1

4 else i f m. s_loc < m. s_ext then

5 Gagnant := −1

6 else Gagnant := 0 ;

7 End;

3. Écrire la procédure AcherGagnants (tab_M : TabMatch_t ; nbr_M : Integer ; tab_noms : TabNom_t ; nbr_equipe : Integer) ; qui ache pour chacun des nbr_M matchs le nom de l'équipe gagnante, en appelant éventuellement la fonction Gagnant.

Solution

B

[email protected]

Page 2

(3)

1 Procedure AfficherGagnants (tab_M : TabMatch_t ; nbr_M: integer ; tab_noms : TabNom_t ) ;

2 Var i , g : integer ;

3 Begin

4 for i := 1 to nbr_M do

5 begin

6 g := Gagnant (tab_M [ i ] ) ;

7 i f g > 0 then

8 writeln ( tab_noms [ tab_M [ i ] . n_loc ] )

9 else i f g < 0 then writeln ( tab_noms [ tab_M [ i ] . n_ext ] ) ;

10 end ;

11 End;

4. Écrire la fonction DiérenceLocalExtérieure (tab_M : TabMatch_t ; nbr_M : Inte- ger) : Integer ; qui renvoie pour l'ensemble des nbr_M matchs, la diérences entre le nombre de matches gagnés par les équipes locales et le nombre de matchs gagnés par les équipes exté- rieures, en appelant éventuellement la fonction Gagnant.

Solution

1 Function D i f f e r e n c e L o c a l E x t e r i e u r e (tab_M : TabMatch_t ; nbr_M : integer ) : integer ;

2 Var i , g : integer ;

3 Begin

4 g := 0 ;

5 for i := 1 to nbr_M do

6 g := g + Gagnant (tab_M [ i ] ) ;

7 D i f f e r e n c e L o c a l E x t e r i e u r e := g ;

8 End;

Bon courage !

B

[email protected]

Page 3

Références

Documents relatifs

Écrire la fonction DiérenceLocalExtérieure (tab_M : TabMatch_t ; nbr_M : Inte- ger) : Integer ; qui renvoie pour l'ensemble des nbr_M matchs, la diérences entre le nombre de

(*) In connection with this, the following works should be also mentioned : the well known memoir [HL] by Hardy and Littlewood which is rather closed to the matter of our study and

Correction proposée par Mme Lamia & Mme Hana... Correction proposée par Mme Lamia &

THEOREM 2.. lattice) isomorphism between two Z-semisimple f-rings induces a homeomorphism between their spaces of maximal Z-ideals [4] (resp.. (3) implies(2) because any

Wüstholz: A New Approach to Baker’s Theorem on Linear Forms in Logarithms III, (New advances in transcendence theory, 1986 symposium, Durham), Cambridge University

The classical convergence proof (see e. [Greenberg] or [Schrijver]) is based on the observation that the constant term b in program (12) lexicographically increase at each step of

Evaluation / Interpolation algorithms Karatsuba, Toom-3, Toom-Cook: Fixed size eval./interp.. scheme + recursion Fast Fourier Transform: Full

Combien de triangles peut-on construire avec 100 points deux à deux distincts ?... C’est une somme arithmétique de