Accueil
Professeurs et Démonstrateurs
Horaires et locaux
Notes de cours
Démonstrations et devoirs
Examens
Liens utiles
Au sujet du livre de cours
Consultez vos notes
Foire aux questions (FAQ)
|
|
Devoir 1: grilles de chiffres
Ce devoir est à faire en équipe de deux.
Les noms et codes d'usagers doivent être indiqués en commentaires
dans tous les fichiers remis.
But du devoir 1
Ce devoir a pour but de vous faire pratiquer le découpage d'un
traitement en méthodes ainsi qu'à vous faire réfléchir à des
algorithmes simples.
Dans ce travail, vous devez faire certains traitements sur une
grille contenant des chiffres (nombres entre 0 et 9).
Exemple de grille
Pour vous aider à réfléchir à vos algorithmes, voici une grille de
chiffres sur laquelle vous pouvez raisonner. Il est important de noter
que lorsque nous testerons vos programmes, nous utiliserons une grille
différente de celle-ci (autres dimensions, autres chiffres).
5 0 3 5 8 1 6 5 7 3 6 9 4 9 5
0 5 4 4 3 5 7 4 4 7 3 5 5 2 4
5 9 4 9 4 9 2 5 9 5 8 5 3 0 5
2 2 2 2 3 3 3 2 6 5 4 7 2 2 1
6 8 8 6 7 6 3 2 8 8 2 2 7 5 7
2 4 6 8 0 1 3 5 3 1 0 8 6 4 2
7 2 5 6 1 8 5 7 5 6 7 2 4 5 8
0 9 9 3 4 5 6 9 4 3 2 3 6 4 5
2 1 9 6 5 8 4 2 6 3 7 5 1 7 7
7 2 5 6 1 8 5 7 5 6 7 2 4 5 8
Note importante:
Il ne vous est nullement demandé (il vous est même fortement
déconseillé) de coder vous même votre grille. On vous demande au
contraire d'utiliser la classe Grille disponible au même
endroit que la classe Keyboard que vous aurez également à
utiliser.
Pour ceux qui n'ont pas encore suivi les consignes de la
démonstration 1, il est donc grand temps de vous y atteler... Comme
nous savons que vous êtes nombreux à travailler depuis chez vous, le
code de la classe Grille.java
et de la classe Keyboard.java
vous sont accessibles en cliquant sur les liens.
Il est interdit (ou plutôt vraiment déconseillé) de modifier le
code de ces classes. C'est avec la version qui vous est accessible
depuis ce site que nous testerons vos programmes, pas avec votre
version de ces classes.
API de la classe Grille
La classe Grille contient trois méthodes avec lesquelles vous
allez pouvoir écrire le programme qui vous est demandé:
public static int getHauteur()
retourne le nombre de lignes de la Grille de chiffre.
public static int getLargeur()
retourne le nombre de colonnes de la Grille de chiffre.
public static int getValue(int x, int y)
retourne le chiffre à la ligne x et à la colonne colonne y
Les positions dans la grille commencent à la ligne 1 (en haut) et la colonne 1 (à gauche); de sorte que
la position de la grille en haut à gauche est repérée par la position (1,1).
|
Voici un programme qui utilise cette classe et dont le code permet
d'afficher le contenu de la Grille qui vous est accessible pour
développer votre code: TestGrille.java
Consignes
Écrire une classe Tp1.java qui contient au moins les méthodes
suivantes:
- Une méthode qui reçoit en paramètre un numéro de ligne et affiche à l'écran les chiffres de cette ligne.
- Une méthode qui reçoit en paramètre un numéro de ligne et qui
retourne la moyenne des valeurs de cette ligne (valeur réelle).
- Une méthode qui reçoit en paramètre un numéro de colonne et
affiche à l'écran les chiffres de cette colonne.
- Une méthode qui reçoit en paramètre un numéro de colonne et qui
retourne la moyenne des valeurs de cette colonne (valeur réelle).
- Une méthode qui détermine si la grille contient une ligne
palindrome. Si oui, elle retourne le numéro de la ligne de la première
ligne palindrome , sinon elle retourne 0.
Remarque: une ligne est palindrome si la lecture au complet des
chiffres de la ligne de la gauche vers la droite est identique à la
lecture de cette même ligne de la droite vers la gauche.
Exemple: avec la grille exemple, votre méthode doit retourner la
valeur 6 (la ligne 6 est la première ligne palindrome).
- Une méthode qui détermine si la grille contient une ligne qui
est répétée. Si oui elle retourne le numéro de la première occurrence
de cette ligne (c'est à dire le numéro de ligne le plus faible); si
non, elle retourne 0.
Avec la grille de l'exemple, votre méthode doit retourner la
valeur 7 (la ligne 7 est répétée).
- Une méthode qui reçoit en paramètres 3 entiers, un numéro de
ligne ligne, un numéro de colonne colonne et une
longueur longueur.
Ces paramètres servent à définir un carré de longueur
longueur, dont le coin supérieur gauche est à la ligne
ligne et à la colonne colonne.
Cette méthode doit déterminer si le carré ainsi délimité est un
carré magique, si c'est le cas, elle retourne true, sinon false.
Note : Un carré est magique si la somme des valeurs de n'importe
quelle ligne, colonne ou diagonale (principale) est la même.
Exemple, le carré de longueur 3 qui commence à la position (1,5)
est un carré magique.
8 1 6
3 5 7
4 9 2
- Une méthode principale (
main ) dont le but est d'orchestrer via
le menu suivant les différents traitements possibles:
TP1 IFT1010 Hiver 2002
1 afficher une ligne
2 afficher une colonne
3 moyenne d'une ligne
4 moyenne d'une colonne
5 repetition de ligne
6 palindrome
7 carre magique
0 quitter
Votre choix :
Consignes liées à ce menu:
Pour les choix 1 à 4, vous devez saisir la ligne ou la colonne au
clavier grâce à la classe Keyboard . On supposera que
l'utilisateur est docile et qu'il rentrera bien des valeurs entières
(pas forcément entre 0 et 7)
Pour le choix 7, l'utilisateur soit saisir, dans l'ordre, le numéro
de la ligne, le numéro de la colonne et la taille d'un côté du carré
(encore une fois grâce à la classe Keyboard ). On
supposera là encore que l'utilisateur est docile et qu'il rentrera
bien des valeurs entières (pas forcément entre 0 et 7)
Si lors du choix 5, une ligne se répète, vous indiquez le numéro de
la première occurrence de la première ligne qui se répète et faites
afficher cette ligne.
Répétez ce menu jusqu'à ce que l'utilisateur choisisse l'option 0.
Notez qu'il vous est possible d'écrire toute méthode de support (à
visibilité privée) nécessaire que vous jugerez utile à la réalisation
des méthodes demandées.
Bonus
Pour les programmeurs expérimentés, voici quelques traitements
additonnels suggérés:
- Validation de toutes les saisies claviers: rendez votre programme
robuste à la saisie d'autres choses que des entiers, là ou un entier
est attendu.
- Ajout d'un choix au menu
8 - recherche sequence
Le traitement associé à cette option est de demander à
l'utilisateur de rentrer une chaîne de caractères numériques puis de
rechercher de cette séquence de chiffres dans toute la grille, en
ligne, colonne ou diagonale, dans n'importe quel sens. Le traitement
se termine par un affichage indiquant si la chaîne de chiffres saisie
est ou non dans la grille; le cas échéant la position de départ, la
direction et le sens de lecture sont affichés.
Exemple :
Entrez la sequence de nombre : 73447
La sequence a ete trouvee en position: (9,11) -- direction: diagonale -- sens: haut
Remarque: Les bonus ne sont pas notés et leur réalisation ne doit en
aucun cas empêcher le bon fonctionnement des fonctionalités demandées.
Remise
Vous devez remettre électroniquement le fichier
Tp1.java. Une seule remise est à effectuer par binome.
Votre fichier doit obligatoirement contenir en commentaire
les noms et les codes d'usagers des deux auteurs.
Aucun ajout de coéquipier ne sera accepté après la remise.
La commande pour la remise est: remise ift1010 tp1 Tp1.java
Critères de correction:
La notation dépend de différents facteurs comme:
- le programme compile sur les machines du département,
- le programme s'exécute en effectuant le traitement demandé,
- le programme est bien pensé, lisible, etc.,
- le programme est robuste (par exemple, teste que les numéros de
lignes saisies sont valides, qu'il fonctionne pour une grille
quelconque, etc.
De sorte, qu'il vous est possible de remettre un programme qui
fonctionne bien, mais qui parce qu'il n'est pas bien pensé ne vous
donnera pas la note maximale.
|