public InvertirArreglo(int tamaño){ arreglo = new int[tamaño]; }
public void llenarArreglo(){
for (int i = 0; i < arreglo.length; i++) { arreglo[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero de la casilla "+(i+1))); } } public void solucion(int sentido,int rotaciones){
String lista = "";
int i = 1;
while(i <= rotaciones){ lista=""; for (int j : arreglo) { lista += j; } if (sentido == 1) {
} } i++; } } public void imprimir(){ for (int i : arreglo) { System.out.print(i +" "); } }
public static void main(String[] args){
int tamaño = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el tamaño del arreglo"));
InvertirArreglo a = new InvertirArreglo(tamaño); a.llenarArreglo();
int sentido = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el setido en el que decea invertir el arreglo\n1. Derecha\n0. Izquierda")); int rotaciones = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero de rotaciones")); a.solucion(sentido, rotaciones);
revise el código de Felipe Caycedo S y de entrada presenta problemas por que muchas de las variables no están inicializadas y pues el arregloUsuario esta inicializado pero no tiene ningún valor ... omitiendo esos errores ... si en el código la variable rot es mayor al tamaño del arregloUsuario al momento de llenar el arregloSalida se copian idénticos y no se realiza la rotacion ... para solucionar eso implemente un while antes de que se inicien los ciclos de derecho o izquierda de la siguiente manera ... (copio todo el código para quitar los errores de las variables no inicializadas y arreglar el problema mencionado)
private void doRotacion(int d,int r){ int [] arregloUsuario = new int [10]; for(int i =0; i<10;i++ ){ arregloUsuario[i]=(int)(Math.random()*30); } int [] arregloSalida = new int [10]; int direccion = d; //direciión de rotación int rot = r; //número de rotaciones int contadorDer = 0; int contadorIzq = arregloUsuario.length-1; while(rot>arregloUsuario.length){ rot = rot - arregloUsuario.length; } if (direccion == 1){ //rotación a la derecha for (int i = 0; i < arregloUsuario.length ; i++){ if ((arregloUsuario.length - i) <= rot){ arregloSalida [i] = arregloUsuario [contadorDer]; contadorDer++; }else{ arregloSalida [i] = arregloUsuario [i + rot]; } } } if (direccion == 2){ //rotación a la izquierda for (int i = arregloUsuario.length - 1; i >= 0; i--){ if ((i - rot) < 0){ arregloSalida [i] = arregloUsuario [contadorIzq]; contadorIzq--; }else{ arregloSalida [i] = arregloUsuario [i - rot]; } } } for(int i =0; i<10;i++ ){ System.out.print(arregloUsuario[i]+" "); } System.out.println(); for(int i =0; i<10;i++ ){ System.out.print(arregloSalida[i]+" "); } }
Este comentario ha sido eliminado por el autor.
ResponderEliminarint [] arregloUsuario = new int [10];
ResponderEliminarint [] arregloSalida = new int [10];
int direccion; //direciión de rotación
int rot; //número de rotaciones
int contadorDer = 0;
int contadorIzq = arregloUsuario.length-1;
if (direccion == 1){ //rotación a la derecha
for (i = 0; i < arreglo.length ; i++){
if ((arregloUsuario.length - i) <= rot){
arregloSalida [i] = arregloUsuario [contadorDer];
contadorDer++;
}else{
arregloSalida [i] = arregloUsuario [i + rot];
}
}
}
if (direccion == 2){ //rotación a la izquierda
for (i = aregloUsuario.length - 1; i >= 0; i--){
if ((i - rot) < 0){
arregloSalida [i] = arregloUsuario [contadorIzq];
contadorIzq--;
}else{
arregloSalida [i] = arregloUsuario [i - rot];
}
}
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarimport javax.swing.JOptionPane;
ResponderEliminarpublic class InvertirArreglo {
int arreglo[];
public InvertirArreglo(int tamaño){
arreglo = new int[tamaño];
}
public void llenarArreglo(){
for (int i = 0; i < arreglo.length; i++) {
arreglo[i] = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero de la casilla "+(i+1)));
}
}
public void solucion(int sentido,int rotaciones){
String lista = "";
int i = 1;
while(i <= rotaciones){
lista="";
for (int j : arreglo) {
lista += j;
}
if (sentido == 1) {
arreglo[arreglo.length-1] = Integer.parseInt(lista.charAt(0)+"");
for (int j = 1,f = 0; f < arreglo.length-1; j++,f++) {
arreglo[f] = Integer.parseInt(lista.charAt(j)+"");
}
}
if (sentido == 0) {
arreglo[0] = Integer.parseInt(lista.charAt(lista.length()-1)+"");
for (int j = 0,f = 1; j < arreglo.length-1; j++,f++) {
arreglo[f] = Integer.parseInt(lista.charAt(j)+"");
}
}
i++;
}
}
public void imprimir(){
for (int i : arreglo) {
System.out.print(i +" ");
}
}
public static void main(String[] args){
int tamaño = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el tamaño del arreglo"));
InvertirArreglo a = new InvertirArreglo(tamaño);
a.llenarArreglo();
int sentido = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el setido en el que decea invertir el arreglo\n1. Derecha\n0. Izquierda"));
int rotaciones = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero de rotaciones"));
a.solucion(sentido, rotaciones);
a.imprimir();
}
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarrevise el código de Felipe Caycedo S y de entrada presenta problemas por que muchas de las variables no están inicializadas y pues el arregloUsuario esta inicializado pero no tiene ningún valor ...
ResponderEliminaromitiendo esos errores ... si en el código la variable rot es mayor al tamaño del arregloUsuario al momento de llenar el arregloSalida se copian idénticos y no se realiza la rotacion ... para solucionar eso implemente un while antes de que se inicien los ciclos de derecho o izquierda de la siguiente manera ... (copio todo el código para quitar los errores de las variables no inicializadas y arreglar el problema mencionado)
private void doRotacion(int d,int r){
int [] arregloUsuario = new int [10];
for(int i =0; i<10;i++ ){
arregloUsuario[i]=(int)(Math.random()*30);
}
int [] arregloSalida = new int [10];
int direccion = d; //direciión de rotación
int rot = r; //número de rotaciones
int contadorDer = 0;
int contadorIzq = arregloUsuario.length-1;
while(rot>arregloUsuario.length){
rot = rot - arregloUsuario.length;
}
if (direccion == 1){ //rotación a la derecha
for (int i = 0; i < arregloUsuario.length ; i++){
if ((arregloUsuario.length - i) <= rot){
arregloSalida [i] = arregloUsuario [contadorDer];
contadorDer++;
}else{
arregloSalida [i] = arregloUsuario [i + rot];
}
}
}
if (direccion == 2){ //rotación a la izquierda
for (int i = arregloUsuario.length - 1; i >= 0; i--){
if ((i - rot) < 0){
arregloSalida [i] = arregloUsuario [contadorIzq];
contadorIzq--;
}else{
arregloSalida [i] = arregloUsuario [i - rot];
}
}
}
for(int i =0; i<10;i++ ){
System.out.print(arregloUsuario[i]+" ");
}
System.out.println();
for(int i =0; i<10;i++ ){
System.out.print(arregloSalida[i]+" ");
}
}
Se;or felipe bejarano
ResponderEliminaral utilizar
la funcion charat
de los strings
el programa no diferencia
numeros
mayores a 9,
digamos uno digita el numero 10,
pero el toma el uno y el cero como caracteres independientes.