Anda di halaman 1dari 3

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

PROGRAMACIN DE ALGORITMOS - Sistemas Informticos y Computacin


Modalidad Abierta y a Distancia
Periodo: Octubre 2014 - Febrero 2015
Tercer Ciclo

Desarrollo de la solucin (CODIGO .JAVA)

/**
*
* Programa que permite ingresar direcciones IP, valida que sea n
correctas
* realiza la clasificacion de las mismas y guarda en vectores
independientes
* ordena los vectos y muestra por pntalla el resultado
*
* @author Benavides Maila Edison Paolo
* @version 1.0 17/11/2014
*/
import static java.lang.Integer.parseInt;
import java.util.InputMismatchException;
import java.util.Scanner;

public class DireccionIP extends Exception {

/**
*Modulo Principal sirve para ingresar las ip y llamas a los otros
metodos segun sea nesesario
*/
public static void main(String[] args){
Scanner lector = new Scanner(System.in);
String[] ips = new String[5];
String[] A;
String[] B;
String[] C;
String aux;
int j=0;
int idxA=0;
int idxB=0;
int idxC=0;
System.out.println("Ingrese arreglo Ejemplo (192.168.1.1)");

for (int i = 0; i < 5; i++) {


aux=lector.next();
if (validaIP(aux)!=null){
ips[j]=aux;
String[] temp = aux.split( "\\." );
int uno = parseInt(temp[0]);
if (uno>=0&&uno<127){
idxA++;
}else if (uno>=128&&uno<=191){
idxB++;
}else if (uno>=192&&uno<=255){
idxC++;
}
j++;
}
}
A=new String[idxA];
B=new String[idxB];
C=new String[idxC];
idxA=0;
idxB=0;
idxC=0;

for (int i = 0; i < j; i++) {


if (ips[i]!=null){
String[] temp = ips[i].split( "\\." );
int uno = parseInt(temp[0]);
if (uno>=0&&uno<127){
A[idxA]=ips[i];
idxA++;
}else if (uno>=128&&uno<=191){
B[idxB]=ips[i];
idxB++;
}else if (uno>=192&&uno<=255){
C[idxC]=ips[i];
idxC++;
}
}
}

System.out.println("..............");
System.out.println("Clase A");
OrdenarInsert(A);

System.out.println("..............");
System.out.println("Clase B");
OrdenarInsert(B);

System.out.println("..............");
System.out.println("Clase C");
OrdenarInsert(C);

/**
*Valida que la direccion IP es correcta y controla las posibles
Excepciones
* @param varIP direccion IP
* @return Retorna la IP correcta o null si o es correcta
*/
public static String validaIP(String varIP){
try{
String[] temp = varIP.split( "\\." );
int uno = parseInt(temp[0]);
int dos = parseInt(temp[1]);
int tres = parseInt(temp[2]);
int cuatro = parseInt(temp[3]);
rango(uno);
rango(dos);
rango(tres);
rango(cuatro);
return varIP;
}
catch(InputMismatchException | ArrayIndexOutOfBoundsException |
NumberFormatException | DireccionIP Exception){
System.err.printf("\nExcepcin: %s\n", Exception);
return null;
}
}

/**
*Excepcion creada que Valida que los octetos esten en rango de 1 a 254
*/
static void rango(int num)throws DireccionIP{
if((num<1)||(num>254)){
throw new DireccionIP("Nmeros fuera de rango");
}
}
public DireccionIP(String msg) {
super(msg);
}

/**
*Ordena un arreglo y muestra por pantalla el resultado
* se ordena de acerdo al primer octeto
*/
static void OrdenarInsert(String [] sinarreglar){

for( int i = 1; i < sinarreglar.length; i++){


for( int j = 0; j < sinarreglar.length-1; j++){
String[] temp = sinarreglar[j].split( "\\." );
int uno = parseInt(temp[0]);
String[] temp2 = sinarreglar[j+1].split( "\\." );
int otro = parseInt(temp2[0]);
if (uno > otro){
String aux = sinarreglar[j];
sinarreglar[j]=sinarreglar[j + 1];
sinarreglar[j + 1]=aux;
}
}
}

for (int i = 0; i < sinarreglar.length; i++) {


System.out.println(sinarreglar[i]);
}
}

//Ingrese arreglo Ejemplo (192.168.1.1)


//jhjg
//
//Excepcin: java.lang.NumberFormatException: For input string: "jhjg"
//192.168.1.2
//6.3.2.5
//2.1.2.3
//126.2.2.5
//..............
//Clase A
//2.1.2.3
//6.3.2.5
//126.2.2.5
//..............
//Clase B
//..............
//Clase C
//192.168.1.2

Anda mungkin juga menyukai