• Aucun résultat trouvé

1 Nombre parfait (6 pts)

N/A
N/A
Protected

Academic year: 2022

Partager "1 Nombre parfait (6 pts)"

Copied!
3
0
0

Texte intégral

(1)

Auteur : Mohamed Messabihi Matière : Initiation à l'algorithmique Date 07 Avril 2014

Durée 1h30

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

Correction de l'examen de rattrapage

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 Nombre parfait (6 pts)

Écrire un algorithme permettant de déterminer si un entier naturel donné par l'utilisateur est un nombre parfait.

On rappelle qu'un nombre est parfait s'il est égal à la somme de ses diviseurs stricts (sauf lui-même).

Ainsi par exemple, l'entier 6 est parfait car 6 = 1 + 2 + 3.

Listing 1 Solution : Algorithme nombre parfait

1 Program P a r f a i t ;

2 var n , i , som : integer ; (1 pts )

3 begin

4 writeln ( ' donner un nombre ' ) ;

5 readln (n ) ; (1 pts )

6 som :=0;

7 for i :=1 to (n div 2) do (1 pts )

8 i f (n mod i ) = 0 then (1 pts )

9 som := som+i ; (1 pts )

10 i f (som=n) then

11 writeln ( ' l e nombre ' , n , ' e s t p a r f a i t ' ) ; (0 ,5 pts )

12 else

13 writeln ( ' l e nombre ' , n , ' n ' ' e s t pas p a r f a i t ' ) ; (0 ,5 pts )

14 end .

Remarque : Les nombres parfaits sont peu nombreux ; les premiers nombres parfaits sont 6, 28, 496, 8128

2 Échange (6 pts)

Soit le programme suivant :

1PROGRAM Trier ;

2VAR u , v : real ;

3

4 { Mettre i c i l a d e f i n i t i o n de l a procedure Echange}

5

6 BEGIN

7 writeln ( ' Donner deux r e e l s u et v ' ) ;

8 readln (u , v ) ;

9 { A p p e l l e r i c i l a procedure Echange}

10 writeln (u , '<=' , v ) ;

11END.

1. Compléter le programme ci-dessus par la dénition de la procédure Echange ainsi que son appel.

B

Mohamed.Messabihi@gmail.com

Page 1

(2)

La procédure Echange prend deux paramètres réels a et b et échange éventuellement leurs valeurs pour que l'état de sortie soit

a≤b

.

Listing 2 Solution : Echange

1PROGRAM Trier ;

2VAR u , v : real ;

3PROCEDURE Echange ( var a , b : real ) ; (2 pts )

4VAR t : real ; (0 ,5 pts )

5 BEGIN

6 i f a > b then (1 pts )

7 begin

8 t := a ; (0 ,5 pts )

9 a := b ; (0 ,5 pts )

10 b := t ; (0 ,5 pts )

11 end ;

12END;

13BEGIN

14 writeln ( ' Donner deux r e e l s u et v ' ) ;

15 readln (u , v ) ;

16 Echange2 (u , v ) ; (1 pts )

17 writeln (u , ' <= ' , v ) ;

18END.

3 Vote électronique (8 pts)

Un vote électronique est organisé, on souhaite utiliser un programme pour saisir et comptabiliser chaque vote. Les électeurs peuvent voter par 'O' (oui), 'N' (Non) ou 'B' (Blanc). Écrire un algorithme qui permet de :

1. demander à

n

électeurs leur vote et les saisir dans un tableau Tab_Votes 2. répartir ces

n

votes sur trois tableaux et les acher

a) Tab_O : un tableau ne contenant que des 'O'.

b) Tab_N : un tableau ne contenant que des 'N' c) Tab_B : un tableau ne contenant que des 'B'

3. acher à la n le pourcentage des Oui, des Non et des votes Blancs.

B

Mohamed.Messabihi@gmail.com

Page 2

(3)

Listing 3 Solution : Algorithme vote electronique

1 Program Vote_Electronique ;

2 Type

3 TAB = Array [ 1 . . 2 0 0 ] of char ;

4 Var

5 N , i , PTO,PTN,PTB: integer ;

6 Tab_Votes , Tab_O, Tab_N, Tab_B : TAB; (0 ,5 pt )

7 Begin

8 Writeln ( ' Donnez l e nombre d ' ' e l e c t e u r s ' ) ;

9 Readln(N) ; ( 0 . 2 5 pt )

10 For i := 1 To N Do ( 0 . 5 pt )

11 Begin

12 Writeln ( ' Donnez l e vote de l ' ' e l e c t e u r ' , i ) ;

13 Readln( Tab_Votes [ i ] ) ; ( 0 . 2 5 pt )

14 End;

15 PTN:=0;

16 PTO:=0; ( 0 . 7 5 pt )

17 PTB:=0;

18 For i := 1 To N Do ( 0 . 5 pt )

19 I f Tab_Votes [ i ] = 'O' Then ( 0 . 5 pt )

20 Begin

21 PTO:=PTO + 1 ; ( 0 . 2 5 pt )

22 Tab_O[PTO]:= Tab_Votes [ i ] ; ( 0 . 2 5 pt )

23 End

24 Else I f Tab_Votes [ i ] = 'N ' Then ( 0 . 5 pt )

25 Begin

26 PTN:=PTN + 1 ; ( 0 . 2 5 pt )

27 Tab_N[PTN]:= Tab_Votes [ i ] ; ( 0 . 2 5 pt )

28 End

29 Else Begin ( 0 . 5 pt )

30 PTB:=PTB + 1 ; ( 0 . 2 5 pt )

31 Tab_B[PTB]:= Tab_Votes [ i ] ; ( 0 . 2 5 pt )

32 End;

33 Write( ' Tableau des Ouis : ' PTO/N∗100 , '%' ) ; ( 0 . 2 5 pt )

34 For i := 1 To PTO Do

35 Write(Tab_O[ i ] , ' | ' ) ; ( 0 . 5 pt )

36 Writeln ; Write( ' Tableau des Nons ' , PTN/N∗100 , '%' ) ; ( 0 . 2 5 pt )

37 For i := 1 To PTN Do

38 Write(Tab_N[ i ] , ' | ' ) ; ( 0 . 5 pt )

39 Writeln ; Write( ' Tableau des votes Blancs ' , PTB/N∗100 , '%' ) ; ( 0 . 2 5 pt )

40 For i := 1 To PTB Do

41 Write (Tab_B[ i ] , ' | ' ) ; ( 0 . 5 pt )

42 End.

Bon courage !

B

Mohamed.Messabihi@gmail.com

Page 3

Références

Documents relatifs

la première fois, en 1795, mais les anciennes unités restaient utilisées et la deuxième fois en ……….. Le prototype du mètre créé par Henri Tresca a

TP n° 4 : Mise en évidence expérimentale de réactions lentes et de différents facteurs cinétiques.. Objectif : Mettre en évidence des réactions lentes et différents

 L’espèce chimique à extraire doit être ………..dans le solvant extracteur ( solvant organique ) que dans le solvant de départ ( l’eau )..  Le solvant extracteur

• faut-il être un surdoué ou un génie pour pouvoir commencer la

Un vote électronique est organisé, on souhaite utiliser un programme pour saisir et comptabiliser chaque vote. répartir ces n votes sur trois tableaux et les acher. a) Tab_O :

J’ai e ff ectué le programme A et j’ai trouvé 19 comme résultat.. Quel nobre

En Corse, les villes d’Ajaccio et de Bastia sont munies d’un aéroport civil et la ville de Solenzara d’un aéroport militaire. Les distances à vol d’oiseau entre ces trois

Exercice 3 (10 points) Sachant la dénition ci-dessus (à retenir), faire l'exercice 27 page 117 du manuel