|
UNIVERSITE de la POLYNESIE |
Examen Deug MIAS 2 – Algo/Prog. C Année
Universitaire 2002-03 Janvier 2003
– première session |
Modalités
1.Vous disposez de trois heure,
2.vos documents personnels sont autorisés,
3.le barème sur 21 est donné à titre indicatif et est susceptible d'être modifié.
On souhaite détecter une chaîne de caractères à l’intérieur d’une autre (classique fonction « substring » disponible dans tous les langages de programmation). Vous écrirez donc en pseudo-code un algorithme de recherche de la chaîne rech de taille long_rech dans la chaîne chaine de taille long_chaine.
Cet algorithme rendra la position du début de rech dans chaine si rech est contenue dans chaine et rendra –1 si rech n’est pas contenue dans chaine.
Exemples :
|
chaine |
Rech |
Résultat |
|
« bonjour » |
«jour» |
3 |
|
« bonjour » |
«bon» |
0 |
|
« bonjour » |
«toto» |
-1 |
|
«lo» |
3 |
|
|
« Helli » |
-1 |
Un palindrome est une chaîne de caractères qui se lit de la même manière dans un sens et dans l’autre. Exemples :
1. radar
2. esoperesteicietserepose (« esope reste ici et se repose » sans les caractères blancs)
3. engagelejeuquejelegagne (« engage le jeu que je le gagne » sans les caractères blancs)
Vous disposez de la structure de données ci-dessous :
#define TAILLE_MAX 6
typedef struct matrix {
int coldim, rowdim;
int elts[TAILLE_MAX][TAILLE_MAX];
} matrix;
Un carré magique d’ordre n est une matrice carrée de dimension n telle que la somme de chaque ligne, la somme de chaque colonne et les sommes des deux diagonales soient identiques.
Exemple : 4 9 2
3 5 7
8 1 6
1.On initialise la matrice à zéro,
2.On met 1 au milieu de la dernière ligne,
3.On suit, à partir de cette position, la première diagonale (une case en dessous et une case à droite avec passages en haut (resp. à gauche) lors d’une sortie de la matrice par le bas (resp. par la droite) en mettant successivement 2, 3, 4, ....
4.Dès que le déplacement sur la diagonale vous fait rencontrer un élément déjà entré (non nul), on remonte d’une ligne par rapport à la position courante (avant tentative de déplacement), on pose son nombre et on continue.
Voici la construction pas à pas du carré magique d'ordre 3
|
0 |
0 |
0 |
|
0 |
0 |
2 |
|
0 |
0 |
2 |
|
4 |
0 |
2 |
|
0 |
0 |
0 |
|
0 |
0 |
0 |
|
3 |
0 |
0 |
|
3 |
0 |
0 |
|
0 |
1 |
0 |
|
0 |
1 |
0 |
|
0 |
1 |
0 |
|
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
0 |
2 |
|
4 |
0 |
2 |
|
4 |
0 |
2 |
|
4 |
0 |
2 |
|
3 |
5 |
0 |
|
3 |
5 |
0 |
|
3 |
5 |
7 |
|
3 |
5 |
7 |
|
0 |
1 |
0 |
|
0 |
1 |
6 |
|
0 |
1 |
6 |
|
8 |
1 |
6 |
Remarque : On ne vous demande pas d’écrire toutes les étapes.
Ecrire en pseudo-code un algorithme récursif qui calcule x à la puissance y.