UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA

PROGRAMACIÓN DE ALGORITMOS - Sistemas Informáticos y Computación
Modalidad Abierta y a Distancia
Periodo: Octubre 2014 - Febrero 2015
Tercer Ciclo

Desarrollo de la solución (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];

...out. int uno = parseInt(temp[0]).split( "\..println(". idxC++. idxC=0.println("Clase C").. System. OrdenarInsert(A)..")... return null.. int cuatro = parseInt(temp[3]).. System. rango(tres)... System... rango(cuatro)." )...split( "\. idxB++." ).out. i < j.println(".. idxB=0.out.... for (int i = 0.. idxA++. int dos = parseInt(temp[1])..printf("\nExcepción: %s\n". rango(dos). return varIP.out.println(". } } } System... System... idxA=0. }else if (uno>=192&&uno<=255){ C[idxC]=ips[i]. Exception)... } catch(InputMismatchException | ArrayIndexOutOfBoundsException | NumberFormatException | DireccionIP Exception){ System.. OrdenarInsert(B). i++) { if (ips[i]!=null){ String[] temp = ips[i]. System.. OrdenarInsert(C). } } /** *Excepcion creada que Valida que los octetos esten en rango de 1 a 254 */ .out. int tres = parseInt(temp[2]). if (uno>=0&&uno<127){ A[idxA]=ips[i].").println("Clase B").. } /** *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. }else if (uno>=128&&uno<=191){ B[idxB]=ips[i]...").err. rango(uno).....out..println("Clase A"). int uno = parseInt(temp[0])..

length..NumberFormatException: For input string: "jhjg" //192. sinarreglar[j]=sinarreglar[j + 1].. j < sinarreglar. } /** *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. String[] temp2 = sinarreglar[j+1].split( "\.. i++) { System.lang...2...length.2.1..2.2." )....5 //.1. int otro = parseInt(temp2[0]).. int uno = parseInt(temp[0])..3... //Clase C //192.5 //2.2. } } public DireccionIP(String msg) { super(msg).1. i++){ for( int j = 0.2. j++){ String[] temp = sinarreglar[j].2 //6. i < sinarreglar. if (uno > otro){ String aux = sinarreglar[j].1...168.... static void rango(int num)throws DireccionIP{ if((num<1)||(num>254)){ throw new DireccionIP("Números fuera de rango").. } } } for (int i = 0...168..5 //...5 //126..2 . sinarreglar[j + 1]=aux.split( "\.." ). //Clase A //2.1. } } } //Ingrese arreglo Ejemplo (192.3 //6.1) //jhjg // //Excepción: java....println(sinarreglar[i]). //Clase B //...3....168.. i < sinarreglar.3 //126.2.length-1..2..out.