T1.programmation : Sujet du TP3
T1.programmation : Sujet du TP3
Groupe ESIEE, Denis BUREAU, février 2002.
Attention !
Le sujet peut être modifié jusqu'à la veille du TP.
1 Les objectifs
Être capable de réaliser sur machine des programmes mettant en
oeuvre les notions vues au TD3.
(créer un répertoire TPINFO\PRO\CONTROLE puis
un sous-répertoire TP3 pour y mettre les 3 .CPP à la fin
de ce TP, mais travailler sur C:)
2 Crible d'Ératosthène
Recopier le programme ERATOS.CPP du TP2
et l'appeler PGNPREM.CPP.
Ce programme devra utiliser la même méthode qu'au TP2 pour découvrir
les nombres premiers inférieurs à une certaine limite, mais la
fonction à réaliser devra uniquement retourner le plus grand nombre
premier inférieur ou égal à une limite passée en paramètre.
Le programme principal demande la limite souhaitée par l'utilisateur
puis appelle la fonction et affiche le résultat.
Pour pouvoir le tester plus facilement, on ajoutera comme d'habitude
une boucle qui effectuera les opérations ci-dessus tant que la limite
saisie n'est pas nulle.
La fonction devra allouer un tableau de booléens de taille adaptée,
appliquer la méthode du crible d'Ératosthène comme au TP2,
puis libérer la mémoire, et enfin
retourner le plus grand nombre non rayé dans le tableau.
Voir comme exemple
E:\TS1\PROF\BUREAUD\PRO\TP3\PGNPREM.EXE.
3 Tri de réels
Programmer l'exercice du TD3. Le fichier s'appellera TRIREELS.CPP.
Rappel :
- Déclarer un type Tableau "dynamique" de réels
(taille non fixée à la compilation).
- Écrire une procédure de saisie du tableau qui saisira la
taille désirée, allouera la mémoire, puis saisira les
valeurs dans le tableau.
- Écrire une procédure de tri du tableau par la méthode dite
du "tri à bulles". Il s'agit de comparer deux valeurs successives
du tableau et de les échanger si elles ne sont pas dans le bon
ordre. Si après un parcours complet du tableau, aucun échange
n'a eu lieu, c'est que le tableau est trié. Sinon, il faut
recommencer un parcours complet.
- Écrire une procédure d'affichage du tableau.
- Écrire un programme principal qui appelle les trois procédures
ci-dessus et qui libère la mémoire à la fin.
4 Tableaux bi-dimensionnels
4.1 Tableaux réguliers (TABREG.CPP)
On décide de représenter un tableau de réels bi-dimensionnel
(NL lignes de NC colonnes) par un tableau dynamique uni-dimensionnel
(NL*NC réels).
- Écrire les déclarations nécessaires.
- Pour simplifier l'accès à chaque case du tableau, écrire une
fonction acces qui retournera l'adresse d'une case du
tableau en fonction des paramètres suivants : l'adresse de
début du tableau, NL, NC, le numéro de ligne, et le numéro
de colonne. Ne pas oublier de vérifier que les indices sont
valides par rapport aux dimensions du tableau ; dans le cas
contraire, la fonction renverra NULL.
- Écrire un programme principal qui, après avoir saisi le nombre
de lignes et le nombre de colonnes, alloue et remplit le tableau
de la manière suivante :
il le considère comme un grand tableau
uni-dimensionnel de NL*NC réels et initialise chaque case i
par tab[i] <--- REEL(i)
Enfin, le programme
affiche le tableau en tant que tableau bi-dimensionnel, à l'aide
de la fonction d'accès.
- Écrire la procédure de libération de la mémoire qui
prend en paramètre le tableau.
- Voir comme exemple
E:\TS1\PROF\BUREAUD\PRO\TP3\TABREG.EXE.
4.2 Tableaux irréguliers
Bien que ce programme soit utile pour la compréhension des concepts et
techniques vues en cours, il n'est pas demandé de le rendre
contrairement aux trois précédents.
On décide de représenter un tableau de réels bi-dimensionnel
irrégulier par un tableau dynamique de NL Ligne.
Chaque ligne pouvant être de taille différente, elle sera
représentée par un tableau dynamique de NC+1 réels, le premier
contenant le nombre de cases utiles de la ligne, c'est-à-dire NC.
- Écrire les déclarations nécessaires.
- Pour simplifier l'accès à chaque case du tableau, écrire une
fonction acces qui retournera l'adresse d'une case du
tableau en fonction des paramètres suivants : l'adresse de
début du tableau, NL, le numéro de ligne, et le numéro
de colonne. Ne pas oublier de vérifier que les indices sont
valides par rapport aux dimensions du tableau et de chaque ligne ;
dans le cas contraire, la fonction renverra NULL.
- Écrire un programme principal qui, après avoir saisi le nombre
de lignes, alloue le tableau, puis pour chaque ligne l,
saisit le nombre de colonnes ( < 10) puis alloue la mémoire et la
remplit par tab[c] <--- 10*l+c, puis qui
affiche le tableau en tant que tableau bi-dimensionnel, à l'aide
de la fonction d'accès.
Afficher un tableau de NL lignes de 10 colonnes en
affichant un point lorsque NULL est retourné.
- Écrire la procédure de libération de la mémoire qui
prend en paramètres le tableau et le nombre de lignes.
- Voir comme exemple
E:\TS1\PROF\BUREAUD\PRO\TP3\TABIRR.EXE.
File translated from
TEX
by
TTH,
version 2.75.
On 7 Feb 2002, 09:52.