TrancheMax.java

Fermé
jelyasse1 Messages postés 1 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 17 mai 2017 - 17 mai 2017 à 21:04
piquesous Messages postés 15928 Date d'inscription mercredi 9 janvier 2013 Statut Contributeur Dernière intervention 13 août 2023 - 17 mai 2017 à 21:05
BoExercice 3 — Tranches maximales d’une matrice
Vous allez écrire un programme qui demande à l’utilisateur d’entrer une matrice à
deux dimensions. Il s’agira d’une matrice binaire (ne contenant que les caractères
0 ou 1). Votre programme devra ensuite retourner les lignes de la matrice qui
comportent le plus de 1 consécutifs. Par exemple, pour la matrice


1 0 0
0 1 0
1 1 0
0 1 1


votre programme devra imprimer les indices des deux dernières lignes, car elles
comportent chacune deux 1 consécutifs.
3.1 Initialisation et affichage de la matrice
La matrice est entrée au clavier sur une seule ligne, par exemple l’entrée 100 010 110 011
correspond à la matrice ci-dessus. Notez bien que ce sont les espaces qui défi-
7
nissent les lignes.
Votre programme doit valider que l’entrée de caractères ne comporte que des 0,
des 1 ou des espaces. Vous devez également valider que chaque ligne de la matrice
ait la même longueur. Par exemple l’entrée 10 00 111 est invalide car la 3ème
ligne comporte 3 éléments, alors que les deux premières que 2 éléments.
Vous devez donc à écrire une méthode checkFormat, conforme à l’utilisation
qui en est faite dans la méthode main fournie, et qui réalise ces vérifications.
Pour vous aider à les mettre en œuvre vous pouvez employer la fonctionnalité
split définie pour les String. Cette fonctionnalité s’utilisera comme suit :
// Attention il y a un espace avant {1,}:
String[] lignes = matrice.split(" {1,}");
Vous aurez alors dans lignes l’ensembles des String présentes dans matrices
entre les espaces.
Par exemple :
String matrice = "00 01111"; // 3 espaces entre 00 et 01111
/* l’espace avant {1,} est le séparateur à considérer
{1,} indique qu’il doit se répéter 1 fois ou plus
  • /

String[] lignes = matrice.split(" {1,}");
System.out.println(lignes[0]); // "00"
System.out.println(lignes[1]); // "01111"
Autre exemple (avec des espaces séparateurs en début de chaîne) :
String matrice = " 00 01111"; // il y a 2 espaces avant 00
String[] lignes = matrice.split(" {1,}");
System.out.println(lignes[0]); // ""
System.out.println(lignes[1]); // "00"
System.out.println(lignes[2]); // "01111"
Pour augmenter la modularisation de votre code, nous vous demandons d’écrire
la méthode checkFormat en utilisant une autre méthode (aussi à écrire, donc)
s’appelant checkLineLength. Cette dernière vérifiera que les lignes d’une
matrice, exprimée comme décrit précédemment, sous la forme d’une chaîne de
caractères (String), ont bien toutes la même longueur. Cette méthode retournera
true si les lignes ont toutes la même longueur, et false sinon. Cette méthode
ne se préoccupera pas du contenu des lignes (peu importe si elles contiennent autre
chose que des ’0’ ou des ’1’). Par exemple checkLineLength(" def 123 abc")
retournera true et checkLineLength(" 00 111 01bc") retournera false.
8
3.2 Tranches maximales
Le programme fourni déclare une variable maxConsecutifList sous la forme
d’un tableau dynamique de Integer. Il s’agit :
1. de stocker dans maxConsecutifList les indices des lignes contenant
la plus grande séquence de ’1’ consécutifs dans la matrice;
2. et pour ce faire, d’écrire la méthode findConsecutiveList conforme
à l’utilisation qui en est faite dans la méthode main.
L’exécution devra strictement se conformer aux exemples suivants :
Saisie de la matrice :
100 010 110 011
Matrice saisie :
100 010 110 011
Ligne(s) avec le plus de 1 consecutifs:
2
3
Saisie de la matrice :
un deux trois
Matrice saisie :
un deux trois
Matrice invalide, seulement ’1’ , ’0’ et ’ ’ admis!
Saisie de la matrice :
10 00 111
Matrice saisie :
10 00 111
Matrice invalide, lignes de longueurs differentes!
Saisie de la matrice :
111 101 000
Matrice saisie :
111 101 000
Lignes avec le plus de 1 consecutifs:
0
Saisie de la matrice :
1100011 1100110 1011000 0101010 0001100
Matrice saisie :
1100011 1100110 1011000 0101010 0001100
9
Ligne(s) avec le plus de 1 consecutifs:
0
1
2
4
Saisie de la matrice :
000 000
Matrice saisie :
000 000
Pas de lignes avec des 1!
Saisie de la matrice :
Matrice saisie :
Matrice vide!njour,

1 réponse

piquesous Messages postés 15928 Date d'inscription mercredi 9 janvier 2013 Statut Contributeur Dernière intervention 13 août 2023 6 065
17 mai 2017 à 21:05
0