Preciso una ayudita sobre array

Iniciado por Fapko, 27 Agosto 2013, 21:53 PM

0 Miembros y 1 Visitante están viendo este tema.

Fapko


Mensaje  Fapko Hoy a las 12:16 pm

Hola a todos, soy nuevo en esto y preciso una ayudita ya que estoy trabado en un programa.
El ejercicio dice lo siguiente:
Desarrolle un método que recibe por parámetro un arreglo de números enteros y retorna si el arreglo esta ordenado de forma ascendente.
Realice también
- un método que permita cargar el arreglo con valores (ya lo hice).
- Un método que muestre un menú de 3 opciones cargar datos, verificar orden, salir (ya lo hice).
- El método main que utilice los 3 métodos anteriores (ya lo hice).

Lo que no me sale a mi es la verificación de que el array este ordenado de manera ascendente.
Cualquier cosa, acá les dejo lo que hice del programa.

public class Ejercicio_10_Consola {
static int[] ordenado;
static int opcion = -1;

static void verificarOrden() {
int i = 0, ascendente = 1;

while((i < ordenado.length - 1) && (ascendente == 1)){

if ((ordenado) > (ordenado[i + 1])){
ascendente = 0;
System.out.println("I: "+ordenado);
System.out.println("I + 1: "+ordenado[i + 1]);
}
System.out.println("I: "+ordenado);
System.out.println("I + 1: "+ordenado[i + 1]);
i++;
}

if (ascendente == 0) {
System.out.println("Se ingreso los numeros de manera ASCENDENTE.");
}
else {
System.out.println("Se ingreso los numeros de manera DESORDENADA.");
}
}

static void cargarNumeros(int cant){
ordenado = new int[cant];

for (int i = 0; i < ordenado.length; i++){
System.out.print("Ingrese un Numero en la Posicion "+(i + 1)+": ");
ordenado = TecladoIn.readLineInt();
}
}

static void cargarMenu(){

while (opcion != 0) {
System.out.println("--------------------------------------------------------");
System.out.println("Bienvenidos al menu elija la ocpion que desea realizar:");
System.out.println("--------------------------------------------------------");
System.out.println("MENU PRINCIPAL");
System.out.println("--------------------------------------------------------");
System.out.println("1 - Cargar Datos.");
System.out.println("2 - Verificar Orden.");
System.out.println("0 - Salir");
System.out.println("--------------------------------------------------------");
System.out.print("Seleccione una Opcion ---> ");
opcion = TecladoIn.readLineInt();
System.out.println("--------------------------------------------------------");

switch(opcion){

case 1: {
System.out.println("");
System.out.print("Ingrese la cantidad de numeros que desea ingresar ---> ");
int cantidad = TecladoIn.readLineInt();
cargarNumeros(cantidad);
break;
}
case 2: {
verificarOrden();
break;
}
case 0:{
System.out.println("El programa a Finalizado");
break;
}
default: {
System.out.println("ERROR ,la opcion es incorrecta.");
break;
}
}
}
}

public static void main (String[] args) {
cargarMenu();
}
}

Gracias por la atención prestada.

Zoik

Bueno, puede parecer una tontería, pero si una array esta en ascendente o descendente quiero decir que esta ordenada.

Sabiendo esto, con tener el primer numero del array y el último se podría determinar si esta en orden descendente o ascendente, no se si sabes por donde quiero ir.

Corrigeme si no es lo que quieres decir.

Un saludo.

Alien-Z

#2
Parece estar bien, prueba así:

Código (java) [Seleccionar]
boolean ascendente = true;
int i = 1; //Empezamos desde la segunda posición del array
while (i < ordenado.length && ascendente) {
  if (ordenado[i-1] > ordenado [i]) //Si no está ordenado
     ascendente = false;

  i++;
}
if(ordenado)
  system.out.println("El array está ordenado.");
else
  system.out.println("El array no está ordenado.");


Saludos.

1mpuls0

#3
Código (java) [Seleccionar]

public static boolean isOrdered(int array[]) {
       boolean flag = false;
       for(int index = 0; index < array.length - 1; index++) {
           if(array[index]>array[index+1]) {
               flag = false;
               break;
           } else {
               flag = true;
           }
       }
       return flag;
   }


solo tengo una pregunta y si existe un arreglo así?
int array[] = {1, 2, 3, 3, 6};

abc

Fapko

Hola, si, si tengo el primer Numero entero dentro del arreglo, supongamos que es de 5 posiciones, tengo [1, 3, 2 ,5, 4], ¿ahí tenes un arreglo ordenado? Por mas que la primera y ultima posición son en orden ascendente.
No se si a eso te referís.
Gracias por contestarme y ayudarme.

Fapko

Hola, siempre se toma uno de los 2 números repetidos, eso se toma como ordenado pero no esta mal tu pregunta. Gracias ahora voy a probar el código que me pasaste y te digo como me funciono.
Gracias por la preocupación de ayudarme.