T1.programmation : Sujet du TD2 T1.programmation : Sujet du TD2
Groupe ESIEE, Denis BUREAU, janvier 2002.
Attention ! Le sujet peut être modifié jusqu'à la veille du TD.

1  Les objectifs

Savoir déclarer, définir, et utiliser des tableaux mono- ou bi- dimensionnels ; savoir passer des tableaux en parametres donnée, mixte, ou résultat ; connaître la syntaxe C++ mettant en oeuvre ces concepts.

2  Notions abordées dans le cours 2

3  Références dans le polycopié

4  Exercices à faire avant ce TD

5  Traduire en C++

Soit TAILLEMAX la constante Entiere 50 .

Soit TypTab un type tableau de 1 .. TAILLEMAX Entiers.

PROCEDURE saisir_tableau( RESULTATS: TypTab, Entier ).
FONCTION  tab_egal( DONNEES: TypTab, Entier, TypTab, Entier ) ---> Booleen.

DEBUT programme principal
  Soient t1 et t2 deux TypTab.
  Soient n1 et n2 deux Entiers.
  AFFICHER  Premier  tableau :
  Saisir_tableau( t1, n1 )
  AFFICHER  Deuxieme tableau :
  Saisir_tableau( t2, n2 )
  SI tab_egal( t1, n1, t2, n2)
    ALORS  AFFICHER identiques.
    SINON  AFFICHER differents.
  FINSI
FIN programme principal

PROCEDURE saisir_tableau( RESULTATS: TypTab T, Entier N )
  Soit R un Entier.
  R <--- 0
  N <--- 0
  TANTQUE  R positif ou nul  ET  N < TAILLEMAX
    AFFICHER  "Element"  (N+1)  " : "
    SAISIR R.
    T[N] <--- R
    INCREMENTER N.
  FIN TANTQUE
FIN PROCEDURE saisir_tableau 
FONCTION tab_egal(donnees: TypTab T1,entier N1,TypTab T2,entier N2) ---> booleen.
Soit R un booleen.
Soit i un entier.
SI N1 ¹ N2 ALORS Retourner FAUX FINSI
R <--- VRAI
i <--- 0
TANTQUE i < N1 ET R
SI T1[i] ¹ T2[i] ALORS R <--- FAUX FINSI
Incrementer i.
FIN TANTQUE
Retourner R.
FIN FONCTION tab_egal

6  Écrire le pseudo-langage puis traduire en C++

6.1  Minimum / Moyenne / Maximum

  1. Écrire une procédure qui prend en entrée un tableau de réels et son nombre d'éléments, et qui fournit en sortie le minimum, la somme, et le maximum des éléments du tableau. Cette procédure ne devra parcourir le tableau qu'une seule fois.
    Ceci est un exercice ; dans la réalité, il faudrait écrire 3 fonctions séparées.
  2. Écrire un programme principal qui saisit le tableau, puis affiche le minimum, la moyenne, et le maximum du tableau. Ne pas oublier les déclarations nécessaires avant le programme principal. La procedure Saisir_tableau est supposée être déjà écrite (écrire simplement le prototype pour la déclarer). Cette procédure ne limite volontairement pas les valeurs possibles des réels saisis.

6.2  Racines / Puissances

  1. Écrire une procédure qui initialise un tableau de réels de 20 lignes x 5 colonnes. La 3ème colonne contiendra les nombres de 1 à 20 ; les colonnes 1, 2, 4, et 5 contiendront respectivement la racine cubique, la racine carrée, le carré et le cube du nombre de la 3ème colonne.
  2. Écrire une procédure d'affichage de la matrice sur 20 lignes de 5 colonnes. Pour la beauté de la présentation, on peut en C++ spécifier avant chaque cout << A; le nombre de caractères qui sera occupé par l'affichage de la donnée A (des espaces seront éventuellement ajoutés pour compléter) ; par exemple, si l'on désire N caractères, il suffit d'ajouter l'instruction cout.width( N );.
  3. Écrire un programme principal qui déclare, initialise puis affiche cette matrice.

6.3  Palindrome

  1. Écrire une fonction prenant en entrée une chaîne de caractères et retournant une valeur booléenne suivant que cette chaîne est un palindrome ou non. Rappel : un palindrome est un mot ou une phrase se lisant de la même manière de gauche à droite et de droite à gauche.
    Exemples : "Radar", "Esope reste ici et se repose."
    On peut donc constater d'après ces exemples que les minuscules et les majuscules sont équivalentes, et que seuls les caractères alphabétiques sont pris en compte.
  2. Écrire un programme principal demandant à l'utilisateur de taper un mot ou une phrase tant qu'il ne tape pas simplement le mot FIN ou fin, puis affichant si c'est un palindrome ou non.

Les fonctions suivantes de la bibliothèque standard peuvent être utilisées :




File translated from TEX by TTH, version 2.75.
On 18 Jan 2002, 17:58.