Vous êtes sur la page 1sur 5

Préparation rattrapage Algo1/SAT

@By M.G(+221 77 442 10 36) Correction Dimanche 10H-13H : Sur Meet

Problema 1

Ecrire un algorithme qui détermine le nombre de valeurs identiques parmi trois variables à faire saisir
par l’utilisateur.
Exemple : 8- 8 - 8 donne 3 valeurs identiques,
7 - 5 - 3 => donne 0 .

Problema 2

Ecrire un algorithme qui déterminer si le caractère entré par l’utilisateur est un chiffre, une lettre
majuscule, une lettre minuscule ou un symbole de ponctuation. Après analyse, vous afficherez à
l’écran la nature du caractère saisi.

Problema 3

Le mathématicien grec Nikomakhos a écrit dans son introduction arithmétique que le tout cube est
égal à la somme de nombres impairs consécutifs. Exemple :
1³=1
2³=3+5
3³= 7+9+11
4³=13+15+17+19.
Ecrire un algorithme qui calcule et affiche une décomposition du cube d’un entier en une somme
d’entiers impairs consécutifs.

Problema 4

On considère un texte formé de caractère composé uniquement de lettres et d’espaces (on fera les
contrôles nécessaires).
Ce texte est lu au clavier caractère par caractère et il se termine par le caractère ‘.’ .
Un mot est une suite de lettre délimitée par des espaces ou par les extrémités du texte. Ecrire un
algorithme qui permet de saisir un texte et qui affiche ensuite un message indiquant si le texte est un
tautogramme, c’est-à-dire si tous les mots du texte commencent par la même lettre.
Exemple : le lion lape le lait lentement.
Nb : les espaces superflus devront être éliminés.

Problema 5

Ecrire un programme qui permet de saisir une suite de nombre entiers, positifs et premiers.
Le programme devra déterminer si tous les nombres saisis sont des palindromes numériques.
Pour rappel : un nombre entier peut être considéré comme un palindrome numérique s’il garde la
même valeur en inversant les chiffres le constituant.
Exemple : 12321 ; 101 ; 4.
Le nombre de valeurs à saisir n’est pas connu à l’avance, mais la fin du traitement est indiquée par la
saisie de la valeur -1 ;

1 de 5
Problema 6

Pour calculer avec x entier, la méthode la plus naïve consiste à calculer successivement y²=y*y, puis
y³=y²*y,. . . jusqu’à .
Ceci demande (x-1) multiplications. Nous allons voir que l’on peut diminuer considérablement ce
nombre de multiplications en utilisant l’écriture de l’exposant en base 2. L’exposant se décompose en
une somme de puissance de 2 avec des coefficients qui sont les chiffres en base 2 et donc valent 0 ou
1:
1-Donner alors l’expression de sous forme d’un produit de facteur.
2-Sachant que les valent 0 ou 1, que vaut l’expression selon les valeurs de ?
3-Pour obtenir , il suffit de calculer successivement y²=y*y, puis y=y²*y², et y=y*y, jusqu’à . . . , puis
on multiplie entre eux les nombres correspondant à un chiffre égal à 1.

Problema 7

On cherche à écrire un programme permettant de décomposer un nombre en facteurs premiers.


Par exemple, pour 12, le programme devra afficher 12=1*2*2*3, pour 42=1*2*2*7 et fin pour
37=1*37.
Donnez un programme qui saisit un nombre et affiche ensuite la décomposition de ce dernier en pro-
duits de facteurs premiers. Il est conseillé de procéder d’abord à un traitement manuel sur un nombre
quelconque.

Problema 8

Ecrire un algorithme qui permet d’afficher le triangle de Pythagore, triangle dans lequel l’insertion
d’une ligne correspond au résultat de la multiplication de l’indice de la ligne avec les indices des
colonnes.
Ex : pour n=5
1
24
369
4 8 12 16
5 10 15 20

Problema 9

Ecrire un algorithme qui permet d’afficher le triangle de Pythagore, triangle dans lequel l’insertion
d’une ligne correspond au résultat de la multiplication de l’indice de la ligne avec les indices des
colonnes.
Ex : pour n=5
1
24
369
4 8 12 16
5 10 15 20

2 de 5
Problema 10

On veut calculer an pour un nombre réel a et un entier positif n.


Ecrire deux versions de cet algorithme, la première version utilisera une boucle tant que, la deuxieme
utilisera une boucle pour.
Evaluez en fonction de a et/ou de n le nombre de tour de boucle nécessaire pour calculer an avec
chacun de vos algorithme. P
On veut maitenant
P i calculer ai , (i=0 à n). Ecrire une deuxieme version de l’algorithme permettant
de calculer r a , (i=0 à n) en cherchant cette fois ci à optimiser le nombre tour de boucle.

Problema 11

On souhaite écrire un algorithme afin de vérifier sur des exemples, la conjecture de Goldbach2 énoncé
en 1742, soit : « Tout nombre pair est décompasable en la somme de deux nombres premiers ». On
utilise l’algorithme suivant :
On entre un nombre pair n au clavier, puis on génére tous les couples (a,b) tels que a+b=n, en
faisant varier a de 1 à n/2. Si l’on rencontre un couple tel que a et b soient simultanément premeir, la
conjecture est vérifiéé.
Exemple : n=10, on génère les couples (1,9) (2,8) (3,7) (4,6) (5,5).
On constate que la conjecture est vérifiée 2 fois car on a : 10=3+7 ; 10=5+5.

Problema 12

Un nombre entier peut être considéré comme un palindrome numérique s’il garde la même valeur en
inversant les chiffres le constituant.
Exemple : 12321, 101, 4.
Etablir l’algorithme complet permettant de déterminer si un nombre entier lu au clavier est un palin-
drome numérique ou non.

Problema 13

Une manière originale pour calculer le carré d’un nombre entier positif N est d’effectuer la somme des
N premiers nombres impaires. Exemple :
4²=1+3+5+7=16
5²=1+3+5+7+9=25

Ecrire un algorithme permettant de calculer le carré d’un nombre entier positif saisi par l’utilisateur
en utilisant la méthode ci-dessus.

Problema 14

Un entier est dit distinct s’il est composé de chiffres distincts (différents). Ecrire un algorithme qui
permet de saisir un entier n (n>0), puis de vérifier et d’afficher si cet entier est distinct ou non.
1-> N=1273 est dit distinct car il est formé par les chiffres 1,2, 7 et 3 qui sont tous distincts, donc, le
programme affichera : cet entier est distinct
2-> N=1565 est dit non distinct car il est formé par les chiffres 1,5, 6, 5 qui ne sont pas tous distincts
(le chiffre 5 se répète deux fois, doncle programme affichera : cet entierest non distinct

3 de 5
Problema 15

Ecrire un algorithme qui insère un élément e à la position k d’un tableau de n nombres entiers distincts
(1 K Nmax ). L’ordre initial du tableau sera conservé.
Soit T un tableau contenant au maximum n entiers (n<Nmax ) rangés dans l’odre croissant.

1-Ecrire un algorhtime qui insére un élément e dans T à sa bonne place.

2-Donnez un algorithme supprimant l’élément à la position k d’un tableau d’entiers.

3-Donnez un algorithme qui étant donné un tableau T trié d’entiers par ordre croissant et un en-
tier x calcule l’élément de T le plus proche de x.

4-Rechercher les entiers n’apparaissant qu’une fois dans un tableau d’entiers donné tab de longueur
ltab (1 ltab 1000).

5-Soit un tableau de n entiers (compris entre 1 et 100) classé en ordre croissant (1 n 100000 ).
Ecrire un programme susceptible de renvoyer les deux entiers les plus fréquents.

6-Ecrire un algorithme qui remplace plusieurs occurrences consécutives d’une même valeur dans un
tableau d’entiers par une seule occurrence de cette valeur.

Problema 16

On veut saisir une suite quelconque de notes comprises entre 0 et 20, ranger les valeurs distinctes par
ordre croissant dans un tableau au fur et à mesure de la saisie et tracer l’histogramme vertical des
fréquences.
On ne connaît pas à priori le nombre de notes. La saisie s’arrête par une valeur conventionnelle, par
exemple -1 ou si la taille maximale du tableau de valeurs distinctes a été atteinte.

1-Ecrire une procédure cherchePos(a, T, n, trouve, pos ) qui recherche la position pos à la quelle la
note a apparaît (ou devrait apparaître) dans un tableau trié T de n notes. Le paramètre trouve indique
si la note a a été trouvée ou pas. Expliquer la méthode utilisée.

2-Donner une procédure insere(a, pos, T, n) qui insere une note a à la position pos dans un tableau
quelconque T de n notes. On fera attention au débordement.

3-Ecrire une procédure saisie(E, F, nbdis ) qui saisit une suite de notes comprises entre 0 et 20
et construit le tableau des notes distinctes E de taille nbdis ainsi que le tableau de fréquences F de
chacune de ces notes.

4-Ecrire une procédure HistoVertical(E, F, nbdis) qui affiche l’histogramme vertical des fréquences à
partir du tableau de valeurs distinctes E, du tableau de fréquences F et du nombre de valeurs distinctes
nbdis comme indiqué en cours.

5-Proposer un algorithme qui saisit la suite de notes et affiche ensuite l’histogramme des fréquences.

4 de 5
Problema 17

Soit un tableau T de type TAB defini par :

Const nmax=100 ;

Type TAB= ARRAY[1..nmax] ot integer ;

1-Ecrire une procedure Saisie(T, n) permettant de saisir un tableau T de n éléments.

2-Ecrire une fonction existe(x, T, db, fn) qui retourne vrai si x figure dans le tableau T délimité
par les indices db et fn et faux sinon.

3-Proposer une fonction unicite(T, n) vérifiant qu’aucun élément n’est present deux fois dans le
tableau T de n élément.

4-Ecrire une fonction qui SomConsec(T, n) qui prend en entrée un tableau T de taille n et vérifie
(en renvoyant vrai ou faux ) que chaque élément sauf le premier est la somme d’un certain nombre
d’élément consécutifs de T qui le précède immédiatement, c’est-à-dire 2 ≤ k ≤ n; 1 ≤ i ≤ k − 1 tel que
t[i] + t[i + 1] + . . . + t[k − 1] = t[k]

5 de 5

Vous aimerez peut-être aussi