Вы находитесь на странице: 1из 3

/*

Se tiene una matriz de enteros de tamanio 4*20 de secuencias de numeros entre 1 y 9


(por cada fila), separadas por 0.
La matriz esta precargada, y ademas cada fila empieza y termina con uno o mas
separadores 0. Se pide realizar un programa que:
_elimine de cada fila todas las secuencias, reemplazando cada secuencia por lo que
suma su contenido.
*/
import java.util.Random;
public class Segundo_ejercicio {
public static final int MAXFILA = 4;
public static final int MAXCOLUMNA = 20;
public static final int MAXVALOR = 10;
public static final int MINVALOR = 1;
public static final int POS_INVALIDA = -1;
public static final double probabilidad_numero = 0.4;
public static void main(String[] args) {
int [][] matint;
matint = new int[MAXFILA][MAXCOLUMNA];
cargar_matriz_aleatorio_secuencias_int(matint);
imprimir_matriz_int(matint);
//RESOLVER EL ENUNCIADO DENTRO DEL METODO QUE SIGUE:
realizar_segundo_ejercicio(...)
realizar_segundo_ejercicio(matint);
System.out.println("-------------------------");
imprimir_matriz_int(matint);
}

public static void realizar_segundo_ejercicio(int [][]matint){


for(int fila = 0; fila< MAXFILA;fila++){
eliminar_secuencia_reemplazo_suma(matint[fila]);
}
}
public static void eliminar_secuencia_reemplazo_suma(int [] arrBase){
int inicio = 0;
int fin = -1;
while(valido(inicio)){
inicio = obtener_inicio_sec(arrBase, fin+1);
if(valido(inicio)){
fin = obtener_fin_sec(arrBase, inicio);

reemplazo_secuencia_por_suma(arrBase,suma_valores_secuencia(arrBase,inicio,
fin),inicio,fin);
}
}
}
public static boolean valido(int inicio) {
return inicio!=POS_INVALIDA;
}
public static int obtener_inicio_sec (int [] arr, int pos){
while((pos<MAXCOLUMNA)&&(arr[pos]==0)){
pos++;
}
if(pos == MAXCOLUMNA){
return POS_INVALIDA;
}
return pos;
}
public static int obtener_fin_sec(int [] arr, int pos){
while ((pos<MAXCOLUMNA) && (arr[pos]!=0)){
pos++;
}
return pos-1;
}
public static void reemplazo_secuencia_por_suma(int[] arr,int suma, int inicio, int
fin) {
int indice=inicio;
arr[inicio]=suma;
while(indice< fin){
corrimientoIzquierda(arr,inicio);
indice++;
}
}
public static void corrimientoIzquierda(int [] arr, int desde){
for(int i = desde+1; i < MAXCOLUMNA-1; i++){
arr[i] = arr[i+1];
}
}
public static int suma_valores_secuencia(int [] arr,int inicio,int fin){
int suma=0;
while(inicio<=fin){
suma+=arr[inicio];
inicio++;
}
return suma;
}

///////////CARGA E IMPRESION
public static void cargar_matriz_aleatorio_secuencias_int(int [][]mat){
for (int fila = 0; fila < MAXFILA; fila++){
cargar_arreglo_aleatorio_secuencias_int(mat[fila]);
}
System.out.println("");
}
public static void cargar_arreglo_aleatorio_secuencias_int(int [] arr){
Random r = new Random();
arr[0] = 0;
arr[MAXCOLUMNA-1] = 0;
for (int pos = 1; pos < MAXCOLUMNA-1; pos++){
if (r.nextDouble()>probabilidad_numero){
arr[pos]=(r.nextInt(MAXVALOR-MINVALOR+1) +
MINVALOR);
}
else{
arr[pos]=0;
}
}
}
public static void imprimir_matriz_int(int [][] mat){
for (int fila = 0; fila < MAXFILA; fila++){
System.out.print("|");
for (int columna = 0; columna < MAXCOLUMNA; columna++){
System.out.print(mat[fila][columna]+"|");
}
System.out.println("");
}
}
}

Вам также может понравиться