IP1 2014–2015 TP noté (groupe I2, sujet A)

Transcription

IP1 2014–2015 TP noté (groupe I2, sujet A)
IP1 2014–2015 TP noté (groupe I2, sujet A)
Ce sujet est aussi disponible en ligne : http://yago.gb2n.org/tp/tp-I2-2-1-foDqVHU.html
Aucun document autorisé sauf la feuille d’astuces http://ip101.fr/doc/CheatSheet.html.
À chaque exercice doit correspondre un fichier d’extension . java . Merci de respecter les noms de classe
imposés dans les exercices (y compris majuscules/minuscules).
Lorsque vous terminez un exercice, vous devez soumettre le ficher . java sur http://didel.script.
univ-paris-diderot.fr dans le travail TP noté − I2 − Groupe 1 Pour cela, suivez le lien Travaux du
cours IP1
Si vous voulez modifier une soumission, il faut cliquer sur le dessin de crayon
qui se trouve en bas
de la soumission concernée. En cas de soumission multiple d’un même fichier, c’est la soumission la plus
tardive qui sera corrigée.
Si jamais le système Didel venait à ne plus fonctionner, vous enverrez toutes vos soumissions dans un
email avec pour sujet [IP1][I2 ] TP noté 2 − A à l’adresse email suivante : [email protected].
Quelques rappels et conseils : - Les programmes mal indentés ou qui ne compilent pas seront pénalisés. - Les noms de fichiers . java doivent correspondre aux noms de classes indiqués dans l’énoncé.
- Il est fortement conseillé de tester vos programmes en écrivant des tests dans la fonction main . Vous
pouvez laisser ces tests dans votre soumission.
Procédures et fonctions autorisées
Vous pouvez copier-coller (et utiliser) les procédures et fonctions suivantes dans votre code :
/* *
* A f f i c h e un e n t i e r s u r l e t e r m i n a l .
* @param n L ’ e n t i e r à a f f i c h e r
*/
public s t a t i c void showInt ( int n ) {
System . out . p r i n t ( n ) ;
}
/* *
* A f f i c h e une c h a î n e de c a r a c t è r e s s u r l e t e r m i n a l .
* @param s La c h a î n e de c a r a c t è r e s à a f f i c h e r
*/
public s t a t i c void s h o w S t r i n g ( S t r i n g s ) {
System . out . p r i n t ( s ) ;
}
/* *
* Passe à l a l i g n e dans l e t e r m i n a l .
*/
public s t a t i c void showNewLine ( ) {
System . out . p r i n t l n ( ) ;
}
/* *
* C a l c u l e l e nombre de c a s e s d ’ un t a b l e a u
* @param t Le t a b l e a u dont on v e u t c o n n a i t r e l a t a i l l e
* @return La t a i l l e du t a b l e a u
*/
public s t a t i c int getArrayLength ( int [ ] t ) {
return t . l e n g t h ;
1
}
/* *
* C a l c u l e l a l o n g u e u r d ’ une c h a î n e de c a r a c t è r e s
* @param t La c h a î n e dont on v e u t c o n n a î t r e l a l o n g u e u r
* @return La l o n g u e u r de l a c h a î n e
*/
public s t a t i c int g e t S t r i n g L e n g t h ( S t r i n g s ) {
return s . l e n g t h ( ) ;
}
Exercice 1 : Combien d’arguments sont de taille paire ?
Ecrire un programme qui affiche le nombre d’arguments dont la longueur est paire. Voici un exemple
d’exécution attendu :
$ j a v a EvenArguments b o n j o u r vous c e c i e s t un exemple
3
$ j a v a EvenArguments en v o i c i un a u t r e
2
$
Pour le premier appel par exemple, les arguments ont les tailles suivantes :
bonjour : 7
vous : 4
ceci : 4
est : 3
un : 2
exemple : 7
Il y a donc bien 3 arguments de taille paire.
Programme à compléter :
c l a s s EvenArguments
{
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
}
}
Exercice 2 : Petite cellule deviendra grande
Vous êtes biologistes et cultivez une colonie de bactéries étranges qui intéresse beaucoup vos supérieurs.
Toutes les heures, chaque bactérie de la colonie se divise en 2 pour se reproduire. Par exemple, si vous
commencez avec une bactérie, au bout d’une heure vous en avez 2, au bout de 2 heures vous en avez 4,
au bout de 3 heures vous en avez 8, etc… toutes les heures, la population double.
Votre patron vous demande un certain nombre de ces bactéries, que vous cultivez à chaque fois à partir
d’une seule initialement. Compléter la fonction howLong qui prend en paramètre le nombre n de bactéries
à obtenir, et qui renvoie le nombre d’heures minimum à attendre pour atteindre ou dépasser n bactéries
à partir d’une. Par exemple, howLong(6) devra renvoyer 3 .
2
class Bacteria
{
public s t a t i c int howLong ( int n ) {
}
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
}
}
Exercice 3 : Tableau de tableaux
Ecrivez une fonction showArrayOfArrays qui prend en paramètre un tableau de tableaux d’entiers et
qui l’affiche. On affichera ligne par ligne chaque tableau qu’il contient, où l’on sépare les éléments par des
virgules, le tout encadré par des accolades. Par exemple, pour t ={{1,2,3},{4,5,6},{2,22,222,1,11,111}} ,
le programme devra afficher :
{1 ,2 ,3}
{4 ,5 ,6}
{2 ,22 ,222 ,1 ,11 ,111}
Si votre programme affiche un point-virgule de trop, par exemple {1,2,3,} pour la première ligne, ce
n’est grave mais c’est mieux s’il peut l’éviter.
Programme à compléter :
c l a s s ShowArrayOfArrays
{
public s t a t i c void showArrayOfArrays ( int [ ] [ ] t ) {
}
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
}
}
Exercice 4 : Maximum
Ecrire une fonction maximum qui prend en paramètre un tableau d’entiers et qui renvoie le maximum.
Par exemle, si t1={1,5,2,4,3} et t2={2,−6,3,−4}, alors : maximum(t1) doit renvoyer 5 et maximum(t2)
doit renvoyer 3 .
Programme à compléter :
c l a s s Maximum
{
public s t a t i c int maximum( int [ ] t ) {
}
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
}
}
3
Exercice 5 : Détection de doublons
Ecrivez une fonction hasDuplicate qui prend en paramètre un tableau d’entiers et renvoie true s’il
contient un ou plusieurs doublons, c’est à dire si un même élément est présent plusieurs fois, et false
sinon.
Par exemple, si t1={1,2,3,0,10} et t2={1,2,3,4,1} , hasDuplicate(t1) doit renvoyer
hasDuplicate(t2) doit renvoyer true .
Programme à compléter :
class Duplicate
{
public s t a t i c boolean h a s D u p l i c a t e ( int [ ] t ) {
}
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
}
}
4
false
et

Documents pareils