Corrigir método
21/08/2019
0
Olá gostaria de uma ajuda no código, onde estou errando.
como funciona ele tem dois métodos, um gerar uma combinação e faz uma filtragem, outro ele lê um arquivo com uma combinação e faz filtragem também.
package teste;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Teste {
public static void main(String[] args) {
String s;
int[] TamVetor ={1,2,3,4,5,6,7,8,9,10};
int[] Gerador = TamVetor;
int[][] bigArr = null;
int mx = 10;
Teste obj = new Teste();
obj.Gerador(TamVetor, 10);
obj.LerLista(bigArr, Gerador, mx);
}
private int Gerador(int[] TamVetor, int mx) {
int a1, a2, a3, a4, a5, a6;
int i =0, j=0, r = 0, x = 0;
int[] arr = new int[6];
int[][] bigArr = null;
for (a1 = ((mx - (mx - 6)) + 1); (a1 <= mx); a1++) {
arr[1] = arr[1] + 1;
arr[2] = arr[1];
for (a2 = (a1 - 1); (a2 <= mx); a2++) {
arr[2] = (arr[2] + 1);
arr[3] = arr[2];
for (a3 = a2; (a3 <= mx); a3++) {
arr[3] = (arr[3] + 1);
arr[4] = arr[3];
for (a4 = a3; (a4 <= mx); a4++) {
arr[4] = (arr[4] + 1);
arr[5] = arr[4];
for (a5 = a4; (a5 <= mx); a5++) {
arr[5] = (arr[5] + 1);
arr[6] = arr[5];
for (a6 = a5; (a6 <= mx); a6++) {
arr[6] = (arr[6] + 1);
r = r + 1;
filterComb(bigArr, arr, x);
}
}
}
}
}
}
for (i = 1;i <= 6; i++) {
arr[i] = ((mx - 6) + i);
}
filterComb(bigArr, arr, x);
return mx;
}
private static void filterComb(int bigArr[][], int arr[], int x) {
boolean b = false;
int i, j, k, f;
if ((x < 1)) {
x = (x + 1);
for (i = 1; i <= 6; i++) {
bigArr[i][1] = arr[i];
}
// filterComb = true;
} else {
for (i = 1; (i <= x); i++) {
f = 0;
for (j = 1; (j <= 6); j++) {
for (k = 1; (k <= 6); k++) {
if ((bigArr[j][x] == arr[k])) {
b = true;
break;
}
}
if (b) {
f = (f + 1);
b = false;
if ((f == 4)) {
// já encontrei 4 duplicado, não adianta mais procurar
// sair da função retornar valor
return;
}
}
if (((j - f) > 2)) {
// não pode ser 4 duplicado na matriz, pule para proxima
break;
}
}
}
x = (x + 1);
for (i = 1; (i <= 6); i++) {
bigArr[i][x] = arr[i];
}
// filterComb = true;
}
return;
}
private static void LerLista(int bigArr[][], int arr[], int x){
String path = "D:\\\\\\\\Conteudo\\\\\\\\teste.txt";
BufferedReader br = null;
FileReader fr = null;
try {
fr = new FileReader(path);
br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
filterComb(bigArr, arr, x);
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
try {
if (br != null)
br.close();
if (fr != null)
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
como funciona ele tem dois métodos, um gerar uma combinação e faz uma filtragem, outro ele lê um arquivo com uma combinação e faz filtragem também.
package teste;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Teste {
public static void main(String[] args) {
String s;
int[] TamVetor ={1,2,3,4,5,6,7,8,9,10};
int[] Gerador = TamVetor;
int[][] bigArr = null;
int mx = 10;
Teste obj = new Teste();
obj.Gerador(TamVetor, 10);
obj.LerLista(bigArr, Gerador, mx);
}
private int Gerador(int[] TamVetor, int mx) {
int a1, a2, a3, a4, a5, a6;
int i =0, j=0, r = 0, x = 0;
int[] arr = new int[6];
int[][] bigArr = null;
for (a1 = ((mx - (mx - 6)) + 1); (a1 <= mx); a1++) {
arr[1] = arr[1] + 1;
arr[2] = arr[1];
for (a2 = (a1 - 1); (a2 <= mx); a2++) {
arr[2] = (arr[2] + 1);
arr[3] = arr[2];
for (a3 = a2; (a3 <= mx); a3++) {
arr[3] = (arr[3] + 1);
arr[4] = arr[3];
for (a4 = a3; (a4 <= mx); a4++) {
arr[4] = (arr[4] + 1);
arr[5] = arr[4];
for (a5 = a4; (a5 <= mx); a5++) {
arr[5] = (arr[5] + 1);
arr[6] = arr[5];
for (a6 = a5; (a6 <= mx); a6++) {
arr[6] = (arr[6] + 1);
r = r + 1;
filterComb(bigArr, arr, x);
}
}
}
}
}
}
for (i = 1;i <= 6; i++) {
arr[i] = ((mx - 6) + i);
}
filterComb(bigArr, arr, x);
return mx;
}
private static void filterComb(int bigArr[][], int arr[], int x) {
boolean b = false;
int i, j, k, f;
if ((x < 1)) {
x = (x + 1);
for (i = 1; i <= 6; i++) {
bigArr[i][1] = arr[i];
}
// filterComb = true;
} else {
for (i = 1; (i <= x); i++) {
f = 0;
for (j = 1; (j <= 6); j++) {
for (k = 1; (k <= 6); k++) {
if ((bigArr[j][x] == arr[k])) {
b = true;
break;
}
}
if (b) {
f = (f + 1);
b = false;
if ((f == 4)) {
// já encontrei 4 duplicado, não adianta mais procurar
// sair da função retornar valor
return;
}
}
if (((j - f) > 2)) {
// não pode ser 4 duplicado na matriz, pule para proxima
break;
}
}
}
x = (x + 1);
for (i = 1; (i <= 6); i++) {
bigArr[i][x] = arr[i];
}
// filterComb = true;
}
return;
}
private static void LerLista(int bigArr[][], int arr[], int x){
String path = "D:\\\\\\\\Conteudo\\\\\\\\teste.txt";
BufferedReader br = null;
FileReader fr = null;
try {
fr = new FileReader(path);
br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
filterComb(bigArr, arr, x);
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
try {
if (br != null)
br.close();
if (fr != null)
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Joelson Cardoso
Curtir tópico
+ 0
Responder
Posts
13/09/2019
Yan Santos
Camarada, não consegui entender direito o seu código, observei que vocês criou o vetor TamVetor, passou na para o método Gerador, mas TamVetor não é utilizado no método Gerador
Responder
Clique aqui para fazer login e interagir na Comunidade :)