BIENVENIDOS AL MUNDO DE LOS ALGORITMOS

Guía para empezar a dominar los algoritmos, codificados en algunos de los lenguajes de programación conocidos. EJERCICIOS RESUELTOS Y PROPUESTOS, con el mejor CONTENIDO para tu aprendizaje... !!!

BIENVENIDOS AL MUNDO DE LOS ALGORITMOS

Guía para empezar a dominar los algoritmos, codificados en algunos de los lenguajes de programación conocidos. EJERCICIOS RESUELTOS Y PROPUESTOS, con el mejor CONTENIDO para tu aprendizaje... !!!

BIENVENIDOS AL MUNDO DE LOS ALGORITMOS

Guía para empezar a dominar los algoritmos, codificados en algunos de los lenguajes de programación conocidos. EJERCICIOS RESUELTOS Y PROPUESTOS, con el mejor CONTENIDO para tu aprendizaje... !!!

BIENVENIDOS AL MUNDO DE LOS ALGORITMOS

Guía para empezar a dominar los algoritmos, codificados en algunos de los lenguajes de programación conocidos. EJERCICIOS RESUELTOS Y PROPUESTOS, con el mejor CONTENIDO para tu aprendizaje... !!!

lunes, 11 de noviembre de 2013

MANEJO DE VECTORES EN JAVA




EJERCICIOS RESUELTOS

1. Ingrese un numero entero menor o igual a 4 cifras y muestre como se lee

SOLUCIÓN:

import java.util.Scanner;
public class escritura {

    public static void main(String[] args) {
        Scanner teclado=new Scanner(System.in);
        int n=0, con=0,n2=0, n1;
        String numero,mensaje="", m1="DIEZ", m2="ONCE", m3="DOCE", m4="TRECE", m5="CATORCE", M6="QUINCE",
                m7="VEINTE", m8="VEINTI";

            String[] naturales={"","UNO","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE"};
            String[] diez={"","ONCE","DOCE","TRECE","CATORCE","QUINCE"};
            String[] decenas={"","DIEZ","VEINTE","TREINTA","CUARENTA","CINCUENTA","SESENTA","SETENTA","OCHENTA","NOVENTA"};
            String[] centenas={"","CIEN","DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"};

        do{
        System.out.println("Ingrese el numero a evaluar:");
        numero=teclado.next();
        }while(numero.length()>4);

            con=numero.length();
            n1=Integer.parseInt(numero.substring(con-3,con));
            n2=Integer.parseInt(numero.substring(con-2,con));

        for (int i = 0; i <numero.length() ; i++) {           
            n=Integer.parseInt(numero.substring(i,i+1));           
            if(con==4){               
                    if(n>1)
                        mensaje=naturales[n]+" MIL"+mensaje;
                    else
                        mensaje=" MIL"+mensaje;
            }
            else{
                if(con==3){
                if(n==1&&n2>0){
                    mensaje=mensaje+" CIENTO";
                }
                else{
                    if(n>1){
                        mensaje=mensaje+" "+centenas[n];
                    }else{
                        if(n!=0)
                        mensaje=mensaje+" CIEN";
                        else
                        mensaje=mensaje+"";
                        }
                    }
                }
            else{
                if(con==2){
                    if(n2<10){
                        mensaje=mensaje+" "+naturales[n2];
                        break;
                    }
                    else{
                        if(n2>10&&n2<16){
                            mensaje=mensaje+" "+diez[n2%10];
                            break;
                            }
                        else{
                            if(n2>15&&n2<20){
                                mensaje=mensaje+" "+"DIECI";
                            }
                            if(n2>20&&n2<30){
                                mensaje=mensaje+" "+"VEINTI";
                            }
                        }
                        if(n2%10==0){
                             mensaje=mensaje+" "+decenas[n];
                             break;
                        }
                        else{
                            if(n2>30)
                                mensaje=mensaje+" "+decenas[n];
                        }
                    }
            }
            else{
                    if(n2>30)
                     mensaje=mensaje+" Y "+naturales[n];
                    else
                     mensaje=mensaje+naturales[n];
            }
            }
            }
            con--;
        }               
            System.out.println("El numero se lee: "+mensaje);
    }
}


2.     Realice un algoritmo para convertir unidades de medida.

SOLUCIÓN:

import java.util.*;
public class Manejador2 {
    public static void main(String[] args) {
        Scanner teclado=new Scanner(System.in);       

        String[][] matriz={
            {"GIGA","MEGA","1000"},
            {"MEGA","KILO","1000"},
            {"KILO","HECT","10"},
            {"HECT","DECA","10"},
            {"DECA","****","10"},
            {"****","DECI","10"},
            {"DECI","CENT","10"},
            {"CENT","MILI","10"},
            {"MILI","MICR","1000"},
            {"MICR","NANO","1000"},
        };
       
        String Ubase, Usalida,UE="",US = "", C1,C2, E, S;
        int n, con=0;
        double resultado=1, canti = 0;

        System.out.println("Ingrese la cantidad a convertir:");
        n=teclado.nextInt();
        System.out.println("Ingrese la base: ");
        Ubase=teclado.next();
        System.out.println("Ingrese la salida: ");
        Usalida=teclado.next();
        E=Ubase.substring(0,4);
        S=Usalida.substring(0,4);
       
        if(E.equals("METR")||E.equals("GRAM")||E.equals("LITR")){
            E="****";
        }
        if(S.equals("METR")||S.equals("GRAM")||S.equals("LITR")){
            S="****";
        }     
        C1=E; C2=S;
        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz[0].length; j++) {              
                if(matriz[i][0].equals(E)){
                    UE=matriz[i][0];
                    US=matriz[i][1];
                    canti=Double.parseDouble(matriz[i][2]);
                    con++;                   
                    break;
                }
                else{
                    break;
                }
            }           
            if(US.equals(S)){
                resultado=resultado*canti;
                break;
            }
            else{
                if(con>0){
                    resultado=resultado*canti;
                    E=US;
                    con=0;
                }
            }
        }

        if(!US.equals(S)||UE.length()<=0){
            resultado=1;
            for (int i = matriz.length-1; i >=0; i--) {
            for (int j = 0; j < matriz[0].length; j++) {
                if(matriz[i][1].equals(C1)){
                    UE=matriz[i][1];
                    US=matriz[i][0];
                    canti=Double.parseDouble(matriz[i][2]);
                    con++;
                    break;
                }
                else{
                    break;
                }
            }
            if(US.equals(C2)){
                resultado=resultado/canti;
                break;
            }
            else{
                if(con>0){
                    resultado=resultado/canti;
                    C1=US;
                    con=0;
                }
            }
            }
        }      
        if(US.equals(C2))
        System.out.println("\nEl resultado es: "+resultado*n+" "+Usalida);
        else
            System.out.println("\nNo se puede realizar la conversion");
    }
}

MANEJO DE CADENAS EN JAVA



EJERCICIOS RESUELTOS



1.  Leer una frase y encontrar la palabra de mayor longitud. El programa debe imprimir la palabra como el número de caracteres de la misma

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc12 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, c=0;
        String cadena, palabra="", mostrar = null;

        System.out.println("Ingrese la cadena: ");
        cadena=br.readLine();
        cadena+=" ";

        for(i=0;i<cadena.length();i++){
            palabra=palabra+cadena.charAt(i);
            if(cadena.charAt(i)==' '){
                if(palabra.length()-1>c){
                    c=palabra.length()-1;
                    mostrar=palabra.trim();
                }
                palabra="";
            } 
        }
        System.out.println("La palabra de mayor longitud es: "+mostrar);
        System.out.println("Su longitud es: "+c);
    }
}


2.  Ingresar una cadena y determinar cuantas palabras se encuentran en la cadena.  Cada palabra se separa por medio de un espacio en blanco.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc11 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, con=1;
        String cadena, palabra="";

        System.out.println("Ingrese la cadena a evaluar: ");
        cadena=br.readLine();
        for(i=0;i<cadena.length();i++){
            if(cadena.charAt(i)==' '){
                con++;
            }
        }
        System.out.println("La cadena contiene "+con+" palabras");       
    }

}


3.   Ingresar un número telefónico en formato de cadena y luego lo convierta de la siguiente manera:
            Número Telefónico: 5256284000
            Nueva Cadena: (52)-5-6284000

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc15 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i;
        String cadena,c1="", c2="", c3="";
        System.out.println("Ingrese la cadena a evaluar: ");
        cadena=br.readLine();

        for(i=0;i<cadena.length();i++){
            if(i<2){
                c1=c1+cadena.charAt(i);
            }
            else{
                if(i==2){
                    c2+=cadena.charAt(i);
                }
                else{
                    c3+=cadena.charAt(i);
                }
            }
        }
        System.out.println("la nueva cadena es: \n"+"("+c1+")"+"-"+c2+"-"+c3);
    }
}


4.   Hacer un programa que al recibir como datos dos cadenas de caracteres forme una tercera cadena intercalando los caracteres de las palabras de las cadenas recibidas.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc16 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, j, k=0;
        String cadena1, cadena2, cadena3="";

        System.out.println("Ingrese la primera cadena: ");
        cadena1=br.readLine();
        System.out.println("Ingrese la segudna cadena: ");
        cadena2=br.readLine();
       
        for(i=0;i<cadena1.length();i++){
            cadena3+=cadena1.charAt(i);
            for(j=k;j<cadena2.length();j++){
               cadena3+=cadena2.charAt(j);
               j=cadena2.length();
               k++;
            }
        }
        System.out.println("La cadena intercalada es: "+cadena3);
    }
}


5.       Ingrese un texto e indique que letras no han aparecido en el texto.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc20 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int ini, con=0;               
        String texto, nueva="", mensaje="";

        System.out.println("Ingrese el texto a evaluar: ");
        texto=br.readLine();

        for(ini=0;ini<texto.length();ini++){
            if(texto.charAt(ini)!=' '){
                nueva=nueva+texto.charAt(ini);
            }
        }
        nueva=nueva.toLowerCase();
        for(char caracter='a';caracter<='z';caracter++){
            for(ini=0;ini<nueva.length();ini++){           
            if(caracter==nueva.charAt(ini)){
                 con++;
               }
            }
            if(con==0){
                mensaje+=caracter+" ";
            }
            con=0;
        }
        System.out.println("\nLos caracteres que faltan son: \n"+mensaje);
    }
}

  
6.  Ingrese un texto e indique el porcentaje de palabras que tiene menos de 5 caracteres  y el porcentaje de palabras con 5 o más caracteres.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc21 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i;
        double porcentaje1, porcentaje2, con=0, p5=0, p6=0;
        String texto, palabra="";

        System.out.println("Ingrese el texto a evaluar: ");
        texto=br.readLine();
        texto=texto+" ";
        for(i=0;i<texto.length();i++){
            palabra+=texto.charAt(i);
            if(texto.charAt(i)==' '){
                palabra=palabra.trim();
                if(palabra.length()<5){
                    p5++;
                }
                else{
                    p6++;
                }
                palabra="";
                con++;
            }
        }
       
        porcentaje1=(double)((p5/con)*100);
        porcentaje2=(double)((p6/con)*100);
        System.out.println("El porcentaje de palabras con menos de 5 caracteres es: "+porcentaje1+" %");
        System.out.println("El porcentaje de palabras con 5 o mas caracteres es: "+porcentaje2+" %");
    }
}


7.   Escriba un programa que lea una frase y a continuación visualice cada palabra de la frase en columnas,  seguida del número de letras que tiene cada palabra.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc23 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, j;
        String frase, palabra="", nueva="";
        System.out.println("Ingrese la frase a evaluar: ");
        frase=br.readLine();
        frase+=" ";

        for(i=0;i<frase.length();i++){
            palabra+=frase.charAt(i);
            if(frase.charAt(i)==' '){
                palabra=palabra.trim();
                nueva=palabra;
                for(j=0;j<nueva.length();j++){
                    System.out.println("\t"+nueva.charAt(j));
                }
                System.out.println("\t"+nueva.length()+"\n\n");
                palabra="";
            }
        }
    }
}


8.  Escriba un programa que calcule la frecuencia de aparición de las vocales de un texto porcionado por el usuario. Esta solución se debe presentar en forma de histograma, por ejmplo:
             a   15     ***************
             e    8     ********

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc24 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, c1=0, c2=0,c3=0, c4=0, c5=0;
        String texto, m1="", m2="", m3="", m4="", m5="";

        System.out.println("Ingrese el texto a evaluar: ");
        texto=br.readLine();
        texto=texto.toLowerCase();
        for(i=0;i<texto.length();i++){
              if(texto.charAt(i)=='a'){
                  c1++;
                  m1+="*";
              }
              if(texto.charAt(i)=='e'){
                  c2++;
                  m2+="*";
              }
              if(texto.charAt(i)=='i'){
                  c3++;
                  m3+="*";
              }
              if(texto.charAt(i)=='o'){
                  c4++;
                  m4+="*";
              }
              if(texto.charAt(i)=='u'){
                  c5++;
                  m5+="*";
              }
        }
        System.out.println("");
        System.out.println("a"+"    "+c1+"    "+m1);
        System.out.println("e"+"    "+c2+"    "+m2);
        System.out.println("i"+"    "+c3+"    "+m3);
        System.out.println("o"+"    "+c4+"    "+m4);
        System.out.println("u"+"    "+c5+"    "+m5);
    }
}


9.  Escribir un programa que cuente el número de palabras en un texto, que tengan al menos cuatro vocales diferentes. 


SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc25 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, con=0, c1=0, c2=0, c3=0, c4=0, c5=0, vocales;
        String texto, palabra="";

        System.out.println("Ingrese la palabra a evaluar: ");
        texto=br.readLine();
        texto=texto.toLowerCase();
        texto+=" ";
        for(i=0;i<texto.length();i++){
            palabra+=texto.charAt(i);
            if(texto.charAt(i)==' '){
                palabra=palabra.trim();
                for(int j=0;j<palabra.length();j++){
                    if(palabra.charAt(j)=='a'){
                    c1++;
                    if(c1>1){
                        c1=1;
                    }
              }
              if(palabra.charAt(j)=='e'){
                  c2++;
                  if(c2>1){
                        c2=1;
                    }
              }
              if(palabra.charAt(j)=='i'){
                  c3++;
                  if(c3>1){
                        c3=1;
                    }
              }
              if(palabra.charAt(j)=='o'){
                  c4++;
                  if(c4>1){
                        c4=1;
                    }
              }
              if(palabra.charAt(j)=='u'){
                  c5++;
                  if(c5>1){
                        c5=1;
                    }
              }
                }
                palabra="";
                vocales=c1+c2+c3+c4+c5;
                c1=0; c2=0; c3=0; c4=0; c5=0;
                if(vocales>=4){
                    con++;               
                }
            }
        }       
        System.out.println("Las palabras son: "+con);
    }
}


10. Un grupo de inteligencia militar desea codificar los mensajes secretos de tal forma que no puedan ser interpretados con una lectura directa, para lo cual han establecido las siguientes reglas:
       a) Todo mensaje debe estar sus letras en mayúsculas.
   b) Reemplazar cada letra por la que sigue según abecedario, excepto Z que  se deberá reemplazar con la letra A.
    c) reemplazar cada dígito encontrado por el siguiente numero excepto el 9 que  deberá ser reemplazado por el 0.


SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class mensajemilitar {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        String mensaje, cod1="",cod2="", caracter;
        String ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String numeros="0123456789";

        System.out.println("Ingrese el mensaje: ");
        mensaje=br.readLine();
        System.out.println(""+mensaje);
        mensaje=mensaje.toUpperCase();
        for (int i = 0; i < mensaje.length(); i++) {
            caracter=mensaje.substring(i, i+1);
            if(caracter.equals(" ")){
                cod1=cod1+caracter;
            }
            else{
                for (int j = 0; j < ABC.length(); j++) {
                if(caracter.equals(ABC.substring(j,j+1))){
                    if(caracter.equals("Z")){
                        cod1=cod1+"A";
                        break;
                    }
                    else{
                        cod1=cod1+ABC.substring(j+1,j+2);
                        break;
                    }
                }
            }
            for (int k = 0; k <numeros.length(); k++) {
                if(caracter.equals(numeros.substring(k,k+1))){
                    if(caracter.equals("9")){
                        cod1=cod1+"0";
                        break;
                    }
                    else{
                        cod1=cod1+numeros.substring(k+1,k+2);
                        break;
                    }
                }
            }
            }
           
        }
        System.out.println("\nMENSAJE INGRESADO: "+mensaje);
        System.out.println("CODIGO RESULTANTE "+cod1);
    }

}