Bonsoir
Je débute cette année le langage JAVA. Je suis seulement capable d'écrire des programmes simples effectuant des calculs, affichant des messages etc.. Rien de spé quoi
Et donc là je dois corriger tout un code qui consiste à:
- Saisir des Intervalles d'entiers:
- Supprimer des intervalles
- En rajouter
- Vérifier si un entier appartient à un intervalle
- Vérifier si un intervalle est inclus dans un autre
En gros voici le code :
public class Exo4 {
public static int tab[][];
public static int nb;
public static int menu() {
//choix d'une opération
Scanner sc;
int rep;
sc = new Scanner(System.in);
System.out.println("Que voulez vous faire?");
System.out.println("1 : Supprimer un intervalle");
System.out.println("2 : Ajouter un intervalle");
System.out.println("3 : Vérifier si un entier appartient à l'un des intervalles");
System.out.println("4 : Vérifier si un intervalle est inclus dans l'un des intervalles");
System.out.println("5 : Quitter");
rep = sc.nextInt();
return rep;
}
public static void proc1(int tabl[][], int ind) {
//saisie d'un intervalle
Scanner sc;
sc = new Scanner(System.in);
tabl[ind][0] = sc.nextInt();
tabl[ind][1] = sc.nextInt();
while (tabl[ind][0] > tabl[ind][1]) //Retrait du ;
{
System.out.println("Erreur. Recommencer :");
tabl[ind][0] = sc.nextInt();
tabl[ind][1] = sc.nextInt();
}
}
public static void proc2(int tabl[][]) {
//remplissage du tableau
int i;
for (i = 1; i <= tabl.length; i++) { //On peut aussi faire: for(i=0;i<tab.length;i++)puis remplacer i+1
System.out.println("Quel est le " + i + "eme intervalle ?");
proc1(tabl, i-1); //Remplacer i par i-1
}
}
public static void proc3(int tabl[][]) {
//affichage du tableau
int i;
System.out.println("Voici les intervalles :");
for (i = 0; i < tabl.length; i++) {
System.out.println((i + 1) + " - [" + tabl[i][0] + "," + tabl[i][1] + "]"); //Remplacer "tab" par "tabl"
}
System.out.println();
}
public static void proc4(int ind, int max) {
//saisie d'un indice
Scanner sc;
sc = new Scanner(System.in);
do {
System.out.println("Quel est l'indice de l'intervalle (1 à " + max + ")? ");
ind = sc.nextInt();
} while (ind < 1 && ind > max);
ind--;
}
public static void proc5(int tabl[][]) {
//suppression d'un intervalle
int i;
int nbSupp = 0;
int nb1 = tabl.length - 1;
int[][] tab1 = new int[nb1][2];
System.out.println("Vous avez choisi de supprimer un intervalle");
proc4(nbSupp, tabl.length);
for (i = 0; i < nbSupp; i++) {
tab1[i] = tabl[i];
}
for (i = nbSupp + 1; i < tab1.length; i++) {
tab1[i - 1] = tabl[i];
}
tab1 = tabl;
proc3(tab1); //Il faut afficher les nouveaux Intervalles à la fin de la procédure.
}
public static int[][] proc6(int tabl[][]) {
//ajout d'un intervalle
int[][] tab1;
int nb1 = tabl.length + 1;
tab1 = new int[nb1][2];
System.out.println("Vous avez choisi d'ajouter un intervalle");
for (int i = 0; i < nb1 - 1; i++) {
tab1[i] = tabl[i];
}
System.out.println("Quel est le nouvel intervalle ?");
proc1(tab1, nb1 - 1);
proc3(tab1);
return tab1;
}
public static void proc7(int tabl[][]) {
//vérifier si un entier appartient à l'un des intervalles
Scanner sc = null;
System.out.println("Vous avez choisi de vérifier si un entier appartient à l'un des intervalles");
System.out.println("Quel est l'entier ?");
int rech = sc.nextInt();
System.out.println("Voici les intervalles auxquels appartient cet entier :");
for (int i = 0; i < tabl.length; i++) {
if (rech >= tabl[i][0] && rech <= tabl[i][1]) {
System.out.println("[" + tab[i][0] + "," + tab[i][1] + "]");
}
}
}
public static void proc8(int tabl[][]) {
//vérifier si un intervalle est inclus dans l'un des intervalles
System.out.println("Vous avez choisi de vérifier si un intervalle est inclus dans l'un des intervalles");
System.out.println("Quel est l'intervalle ?");
proc1(tab, 0);
System.out.println("Voici les intervalles auxquels appartient cet intervalle :");
for (int i = 0; i < tabl.length; i++) {
if (tab[0][0] >= tabl[i][0] && tab[0][1] <= tabl[i][1]) {
System.out.println("[" + tab[i][0] + "," + tab[i][1] + "]");
}
}
}
public static void main(String[] args) {
int nb;
int tab[][];
int rep;
Scanner sc;
sc = new Scanner(System.in);
System.out.println("Combien d'intervalles voulez vous saisir ?");
nb = sc.nextInt();
tab = new int[nb][2];
proc2(tab);
proc3(tab);
do {
rep = menu();
switch (rep) {
case 1:
proc3(tab);
proc5(tab);
break;
case 2:
proc3(tab);
proc6(tab);
break;
case 3:
proc3(tab);
proc7(tab);
case 4:
proc3(tab);
proc8(tab);
case 5:
System.out.println("Au revoir");
default:
System.out.println("Choix non valide");
}
} while (rep != 5);
}
}