Aplicación cifrado/descifrado de mensajes

Aplicación para cifrar y descifrar mensajes de texto versión 3.0
Es una aplicación sencilla, rápida e intuitiva. Tiene 3 formas distintas de cifrado.
Funcionamiento:

  1. Debe elegir una opción de cifrado.
  2. Escribe su texto a cifrar.
  3. Escribe la clave de cifrado.
  4. Pulse el botón cifrar y le devolverá el mensaje cifrado.
  5. Si el mensaje esta cifrado, al introducir la misma clave que la de cifrado te descifra el mensaje cuando pulses el botón descifrar.




Imagen aleatoria en Javascript

<script type="text/javascript">
var indice = 0;
enlace = new Array();
enlace[0] = '<a href="URL_ENLACE0"><img src="URL_IMAGEN0"/></a>';
enlace[1] = '<a href="URL_ENLACE1"><img src="URL_IMAGEN1"/></a>';
enlace[2] = '<a href="URL_ENLACE2"><img src="URL_IMAGEN2"/></a>';

indice = Math.random() * (enlace.length);
indice = Math.floor(indice);
for (i=1;i<=enlace.length;i++) {
if (indice == enlace.length) indice = 0;
document.write(enlace[indice]);
indice++;
}
</script>

Comando borrar todo el historia de comandos en terminal linux

history -c

Lerr fichero en Java

public static void muestraContenido(String archivo) throws FileNotFoundException, IOException {
        String cadena;
        FileReader f = new FileReader(archivo);
        BufferedReader b = new BufferedReader(f);
        while((cadena = b.readLine())!=null) {
            System.out.println(cadena);
        }
        b.close();
    }


La llamada a este método se realiza de la siguiente forma:
muestraContenido("archivo.txt");


En lugar de un  'System.out.println(cadena);' se puede hacer un ArrayList y con .add(cadena), ir guardándolos para posteriormente usarlo.

Escribir ficheros en Java

File fichero = new File ("fichero.txt");
try {
//Crear objeto FileWriter que sera el que nos ayude a escribir sobre archivo
FileWriter escribir=new FileWriter(fichero,true);


//Escribimos en el archivo con el metodo write

escribir.write("holaa\nmundo");


//Cerramos la conexion
escribir.close();

} catch (Exception ex) {
System.out.println(ex.getMessage());
}

Cifrar Descifrar en Android

DESCARGAR


Codifica y descodifica el texto que desees parar que solo tú puedas entenderlo.
Tiene dos formas de hacerlo:

Primera:
Son necesarios dos números parar ello, que solo tú debes conocer.
Si deseas enviarle un mensaje a alguien, deberás darle los dos números para que pueda descodificarlo.

Segunda:
Cifrado Vigenere.
Es necesaria una clave para cifrar y descifrar el mensaje.

Cada una tiene un alfabeto distinto para su funcionamiento, y no todos los caracteres están permitidos.


DESCARGAR




Listas de definiciones en html

<dl>
<dt>Aquí va el término que definiremos</dt>
<dd>Y aquí dentro irá la definición propiamente dicha.</dd>
</dl>
<dl>
<dt>Aquí va la segunda definición</dt>
<dd>Y aquí dentro irá la segunda definición, separada automáticamente de la anterior.</dd>
</dl>

Listas html

<ul>
<li type="circle">Esto es un tipo de punto.</li>
<li type="square">Este es otro.</li>
<li type="disc">Y este es otro diferente.</li>
</ul>


Así se mostraría:
  • Esto es un tipo de punto.
  • Este es otro.
  • Y este es otro diferente.

Listas numéricas en html

<ol>
<li value="20">Este será el número 20. </li>
<li>Este será el 21. </li>
<li> Este será el 22. Y así sucesivamente. </li>
</ol>

Numero de meses entre dos fechas en java

public static int calcularMesesAFecha(Date fechaInicio, Date fechaFin) {
       try {
           //Fecha inicio en objeto Calendar
           Calendar startCalendar = Calendar.getInstance();
           startCalendar.setTime(fechaInicio);
           //Fecha finalización en objeto Calendar
           Calendar endCalendar = Calendar.getInstance();
           endCalendar.setTime(fechaFin);
           //Cálculo de meses para las fechas de inicio y finalización
           int startMes = (startCalendar.get(Calendar.YEAR) * 12) + startCalendar.get(Calendar.MONTH);
           int endMes = (endCalendar.get(Calendar.YEAR) * 12) + endCalendar.get(Calendar.MONTH);
           //Diferencia en meses entre las dos fechas
           int diffMonth = endMes - startMes;
           return diffMonth;
       } catch (Exception e) {
           return 0;
       }
}

Conversor de fecha en Java

private static Date convertirFecha(String fecha){
SimpleDateFormat formato = new SimpleDateFormat("dd-MMM-yyyy");
Date dat = null;
try{
dat=formato.parse(fecha);
}catch(ParseException ex){

}
return dat;
}

Vigenere en Máxima

alf:"abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQ-RSTUVWXYZáéíóúÁÉÍÓÚ0123456789 ,.;:";


codi_numerica(alf,msj):=block(
    [extra],
if stringp(msj) then (
    extra:makelist(mod(sposition(charat(msj,i),alf),slength(alf)),i,1,slength(msj))
     )
           else
        (
        extra:"",
        for i in msj do extra:concat(extra,alf[i-1])
        ),
    extra
    )$

hacer_clave(clave,longitud):=block(

    [solucion],
    solucion:"",
    for i:0 thru longitud do (
        solucion:concat(solucion,clave[mod(i,slength(clave))])
    ),
    solucion
);

/*funcion vigenere*/
vigenere(alfabeto, mensaje, clave):=block(

    [modulo, secuencia, secuencia_clave, longitud_clave, longitud_mensaje, solucion, secuencia_solucion],
    modulo:slength(alfabeto),
    secuencia:codi_numerica(alfabeto, mensaje),
    longitud_clave:slength(clave),  
    longitud_mensaje:slength(mensaje),
    secuencia_clave:codi_numerica(alfabeto, hacer_clave(clave, longitud_mensaje)),
    secuencia_solucion:makelist(mod(secuencia[i]-secuencia_clave[i], modulo),i,1,longitud_mensaje),
    solucion:codi_numerica(alfabeto,secuencia_solucion),
    solucion


);

/*ejecutar la funcion*/
vigenere(alf,":DoqqO67ogwegvwñAUgÑi6rodo:qWxjyKxYhVfÍeoi,:rlhujplCDR2;o6Bavz:fú6ndw", "G1-01: 2 de enero");


Repetir un string el número de veces deseado en Maxima

hacer_clave(clave,longitud):=block(

    [solucion],
    solucion:"",
    for i:0 thru longitud do (
        solucion:concat(solucion,clave[mod(i,slength(clave))])
    ),
    solucion
);


La solución es una cadena con la palabra clave, repetida tantas veces como sea necesario hasta que la cadena tenga la longitud introducida. 

Pasar de texto a números en Maxima y viceversa

alf:"abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQ-RSTUVWXYZáéíóúÁÉÍÓÚ0123456789 ,.;:";

codi_numerica(alf,msj):=block(
    [extra],
if stringp(msj) then (
    extra:makelist(mod(sposition(charat(msj,i),alf),slength(alf)),i,1,slength(msj))
     )
           else
        (
        extra:"",
        for i in msj do extra:concat(extra,alf[i-1])
        ),
    extra
    )$


alf es el alfabeto que usa, la 'a' es la posición 1, la 'b' la 2.... ':' la 0 y última posición.
Si a la función le pasas un mensaje en formato String (texto), te devolverá un array y en cada posición de este el valor de cada caracter de la cadena.
Si a la función le pasas un mensaje en formato array numérico, te devolvera una cadena String con el texto solución.

Coger IP local y IP de una URL java

import java.net.InetAddress;

/**
 *
 * @author
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)  throws Exception {
        // Aqui obtenemos la ip local de la maquina
        InetAddress address = InetAddress.getLocalHost();
        System.out.println("IP Local :"+address.getHostAddress());

        // Aqui obtenemos la ip de la web del programador
        String domain="www.google.es";
        InetAddress address2 = InetAddress.getByName(domain);
        byte IP[] = address2.getAddress();
        System.out.print("IP del dominio "+domain+" :");
        for (int index = 0; index < IP.length; index++)
        {
           if (index > 0)
                 System.out.print(".");
           System.out.print(((int)IP[index])& 0xff);
        }
    }
}

Cifrado en Java

public class Main {

private static String alfabeto = "abcdefghijklmnñopqrstuvxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ .,:áéíóúÁÉÍÓÚ";

public static void main(String[] args) {
int numero=113;
int[] clave = new int[]{3,numero*6+1};
String a = codificar(clave, "hola");
System.out.println(a);
System.out.println(codificar(claveDescifrado(clave), a));

}

private static int[] claveDescifrado(int[] clave){
int[] descif = new int[2];
descif[0]=inverso(clave[0], alfabeto.length());
descif[1]=-inverso(clave[0], alfabeto.length())*clave[1];
if(descif[1]<0){
descif[1]=alfabeto.length()+descif[1];
}
if(descif[0]<0){
descif[0]=alfabeto.length()+descif[0];
}
return descif;
}

private static String codificar(int[] clave, String mensaje){
int[] secuencia = pasarTextoNumero(mensaje);
String mensajeCodificado = "";
for (int i = 0; i < secuencia.length; i++) {
mensajeCodificado+=alfabeto.charAt(operacion(secuencia[i],clave));
}
return mensajeCodificado;
}

private static int operacion(int numero, int[] clave){
return (clave[0]*numero+clave[1])%alfabeto.length();
}

private static int[] pasarTextoNumero(String mensaje){
int[] secuencia = new int[mensaje.length()];//array con la longitud del mensaje

for (int i = 0; i < secuencia.length; i++) {
char letra = mensaje.charAt(i);
int valor = valorLetra(letra);
secuencia[i]=valor;
}
return secuencia;
}

private static int valorLetra(char letra){
for (int j = 0; j < alfabeto.length(); j++) {
if(letra==alfabeto.charAt(j)){
return j;
}
}
return -1;
}

    public static int inverso(int a,int m)
    {
        int c1=1,c2=-1*(m/a);//coeficiente de a y b respectivamente
        int t1=0,t2=1;//coeficientes penultima corrida
        int r=m%a;//residuo, asignamos 1 como condicion de entrada
        int x=a,y=r,c;
        while(r!=0){
       c= x/y;//cociente
       r= x%y;//residuo
       //guardamos valores temporales de los coeficientes
       //multiplicamos los coeficiente por -1*cociente de la division
       c1*=-1*c;
       c2*=-1*c;
       //sumamos la corrida anterior
       c1+=t1;
       c2+=t2;
       //actualizamos corrida anterior
       t1=-1*(c1-t1)/c;
       t2=-1*(c2-t2)/c;
       x=y;
       y=r;
        }
        if(x==1)//residuo anterior es 1 , son primos relativos y el inverso existe
            return t2;
        else
            return -1;
    }

}

Conversión de un DNI extranjero en Java

public static int conversionDni(String dni){
String nuevoDni = "";
switch(dni.charAt(0)){
case 'X':
nuevoDni="0"+dni.substring(1,dni.length());
break;
case 'Y':
nuevoDni="1"+dni.substring(1,dni.length());
break;
case 'Z':
nuevoDni="2"+dni.substring(1,dni.length());
break;
default:
nuevoDni=dni;
break;
}
return Integer.parseInt(nuevoDni);
}

Leer celdas de Excell en Java

String cellValue = hssfRow.getCell(c) == null?"":
                                (hssfRow.getCell(c).getCellType() == Cell.CELL_TYPE_STRING)?hssfRow.getCell(c).getStringCellValue():
                                (hssfRow.getCell(c).getCellType() == Cell.CELL_TYPE_NUMERIC)?"" + hssfRow.getCell(c).getNumericCellValue():
                                (hssfRow.getCell(c).getCellType() == Cell.CELL_TYPE_BOOLEAN)?"" + hssfRow.getCell(c).getBooleanCellValue():
                                (hssfRow.getCell(c).getCellType() == Cell.CELL_TYPE_BLANK)?"":
                                (hssfRow.getCell(c).getCellType() == Cell.CELL_TYPE_FORMULA)?"FORMULA":
                                (hssfRow.getCell(c).getCellType() == Cell.CELL_TYPE_ERROR)?"ERROR":"";

Dividir numero de cuenta en sus partes, sin incluir IBAN Java

//funcion que divide la cuenta en sus 5 partes
public static String[] dividirCuenta(String cuenta, String pais){
String[] numCuenta = new String[5];

numCuenta[0] = pais;//codigo del pais

numCuenta[1] = cuenta.substring(0,4);//codigo de entidad

numCuenta[2] = cuenta.substring(4,8);//codigo de oficina

numCuenta[3] = cuenta.substring(8,10);//digito de control

numCuenta[4] = cuenta.substring(10,20);//numero de cuenta


return numCuenta;
}

Correo de empresa en java

private static ArrayList<String> correos = new ArrayList<String>();

//le tienes que pasar el nombre, apellidos y empresa del empleado, para que cree un correo con el mismo formato para todo el personal
//metodo que devuelve el correo del empleado
public static String hacerCorreo(String nombre, String apell1, String apell2, String empresa){
//coge dos caracteres de cada cadena: nombre, apellido uno y apellido dos
String x = nombre.substring(0,2).toLowerCase()+apell1.substring(0,2).toLowerCase()+apell2.substring(0,2).toLowerCase();
x=quitarAcentos(x);
int contador=comprobarRepetido(x);//devuelve el numero de veces que se repite un correo
String correo = "";
if(contador==0){//si no esta en la lista
correos.add(x);
correo= x+"00";
}else if(contador<10){//si el numero es menor que 10
correos.add(x);
correo= x+"0"+contador;
}else if(contador>10){//si se repite mas de 10 veces
correos.add(x);
correo= x+contador;
}
correo=correo+"@"+empresa+".es";//le añado el nombre de la empresa

return correo;

}




//comprueba si el correo ya esta cogido y devuelve el número de veces que aparece
public static int comprobarRepetido(String elem){
int contador=0;
for (int i = 0; i < correos.size(); i++) {
if(correos.get(i).compareTo(elem)==0){
contador++;
}
}
return contador;
}

Quitar acentos de una cadena

private static String quitarAcentos(String cadena){

   String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇ";
   String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC";
   String cadenaSinAcentos = cadena;
   for (int i=0; i<original.length(); i++) {
    cadenaSinAcentos = cadenaSinAcentos.replace(original.charAt(i), ascii.charAt(i));
   }
   
   return cadenaSinAcentos;
}

Codificar descodificar texto

Codifica y descodifica el texto que desees parar que solo tú puedas entenderlo.
Son necesarios dos números parar ello, que solo tú debes conocer.
Si deseas enviarle un mensaje a alguien, deberás darle los dos números para que pueda descodificarlo.
Alguna duda con su funcionamiento notificadmela y os la resolveré lo mas rapido que pueda.

Descargar aplicación parar android

Codificar y descodificar en Máxima

DESCARGAR


alf:"abcdefghijklmnñopqrstuvxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ .,:áéíóúÁÉÍÓÚ";

mensajes_cif:["sqmzrkñbkmjrb númjbSSbkmÓúgcrqmqkñCkmjúWúmbrkqñqt","óyFIy,óItyAItAIyxIh,tÑyóyFÚyR,byN,yCIyC,rcG",
"MdrYBYKg.YKbWEKWRWEKEYKPYKt.oGYrdzKÚWbdNW"," VíeybKbVifbVflVtbÑQV:bVKbyyeyeVTeVtQKeÍ","DLRLódLÓfXóyfXóSLXfXórXdgÍóyyrÍfXóÓróRFófyRf","JAJKpJóflJfcgóf.Fógó fccJXgflJcfgcAgfAogD","ÚhPE zdhqyZqdíZÍzgqFZqhPZÉZdqhqiEqhUihg","NDScDYiVcfcnDiDziDYiziÑViDáczivfsztiú",
"LsOyCxíjxOñCjiXnOñjddjxOcOsxíYxOñnNnOXDxíjiísk","Ñ KHgmH xhuh tTKJmúÉhgKÚukóÁUhHk Kú kóóTVVhA","RÓd ÓbÁ QÓj Qj ÓA fbQsÓÁÓdCÓObNÓUbÓtÓlAGlUNlÉ",
"ÍWPmZdkyodkZdkOmeedkOÁHkdekúedHOúÁkIozÁé","UñmnItvAHtvVtvPnÓWtvVnIÓBñsvX:svVHvÉBWtsXB:","íBñqXIíXpXIYfñIBápNñqñmIgópNBLIíXpXIYfIñfóBBXx",
"gx.pTbRÓRTfoTéRbH.GTboffoúoTVTbRépj.foúoN","mtéAíXeRkíMéeAéheéeAxDeXXpZéxpRéXe:pRMéléAeRkíXXM,","TzKLqELudOdtGCGJGKqdsGDGdKzdyMrzuJqKdDMuJLGe",
"ZproFrgrxOroMpYApCMTzo:proTApOéTroxrTYrpt","jB,:ÓtIBsY,gU,SBsY,gU,BT,BMh,BctB:,sBLy,UÓtK"] $

claves:[[4,1],[8,2],[12,3],[16,4],[20,5],[24,6],[28,7],[32,8],[36,9],[40,10],[44,11],[48,12],[52,13],[56,14],[60,15],[64,16],[1,17],[5,18],[9,19]];

codi_numerica(alf,msj):=block(
    [extra],
if stringp(msj) then extra:makelist(sposition(charat(msj,i),alf)-1,i,1,slength(msj))
        else
        (
        extra:"",
        for i in msj do extra:concat(extra,alf[i])
        ),
    extra
    )$

clave_descifrado(clave, alf):=block(

    [modulo, descifrado],
    modulo:slength(alf),
    descifrado:[mod(inv_mod(clave[1], modulo),modulo), mod(-inv_mod(clave[1], modulo)*clave[2], modulo)]

);

clave_descifrado(claves[1], alf);

descodificar(alfabeto, mensaje, clave_cif):=block(

    [mensaje_numeros, clave_descif, descif, modulo, msg],
    modulo:slength(alfabeto),
    mensaje_numeros:codi_numerica(alfabeto, mensaje),
    clave_descif:clave_descifrado(clave_cif, alfabeto),
    descif:makelist(mod(clave_descif[1]*mensaje_numeros[i]+clave_descif[2],modulo) ,i,1,length(mensaje_numeros)),
    msg:codi_numerica(alfabeto, descif),
    msg
);

descodificar(alf, mensajes_cif[17], claves[17]);

codificar(alfabeto, mensaje, clave_cif):=block(

    [mensaje_numeros, cif, modulo, msg],
    modulo:slength(alfabeto),
    mensaje_numeros:codi_numerica(alfabeto, mensaje),
    cif:makelist(mod(clave_cif[1]*mensaje_numeros[i]+clave_cif[2],modulo) ,i,1,length(mensaje_numeros)),
    msg:codi_numerica(alfabeto, cif),
    msg
);

mensaje2:"Los españoles muy españoles y mucho españoles";
clavee:[3,10];

codificar(alf, mensaje2, clavee);


Abuelo, hijos, nietos y médico en C con hilos

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <unistd.h>
void manejadora1(int sig);
void manejadora2(int sig);
int calculaAleatorios(int min, int max);

void NIETOS();
void HIJOS(int estado, int enfermo, int suma, int pid);
void ABUELO(int estado, int enfermo, int suma);

int main(int argc, char*argv[]){

 //Comienza el abuelo
 //codigo para que el aleatorio varie
 srand(time(NULL));
 pid_t pid;
 //El abuelo crea al doctor
 pid=fork();
 if(pid==-1){
  //si la llamada al fork da error
  perror("Error en la llamada a fork\n");
 }else if(pid!=0){

  //Esta es la parte del abuelo
  pid_t pidHijos;
  struct sigaction sa,sa2;
  sa.sa_handler=manejadora2;//manejadora dos que se llama si el medico no esta disponible
  //que imprime que no esta disponible, y acaba el programa
  sa2.sa_handler=manejadora1;//la manejadora uno que no hace nada
  if(sigaction(SIGUSR1,&sa,NULL)==-1){//cambiamos el comportamiento de la señal sigusr1
   //si da error
   perror("Error en la llamada a sigaction\n");
   exit(-1);
  }
  if(sigaction(SIGUSR2,&sa2,NULL)==-1){//cambiamos el comportamiento de la señal sigusr1
   //si da error
   perror("Error en la llamada a sigaction\n");
   exit(-1);
  }
  //duerme un segundo, para que se ejecute el programa correctamente, si no se me peta
  sleep(1);
  //Enviamos la señal sigusr1 al doctor, le pregunta si esta disponible
  if(kill(pid,SIGUSR1)!=0){
   perror("Error en la llamada a kill\n");
   exit(-1);
  }
  //Esperamos su respuesta
  pause();
  int i,j; //variables de los for
  for(i=0;i<2;i++){
   //Creamos a los hijos
   pid=fork();
   if(pid==-1){
    perror("Error en la llamada a fork\n");
    exit(-1);
   }else if(pid==0){
    //aqui va cada hijo, que crea tres nietos
    
    for(j=0;j<3;j++){
     //Creamos a los nietos
     pidHijos=fork();
     
     switch(pidHijos){
      case -1:
       perror("Error en la llamada a fork\n");
       break;
      case 0:
       //NIETOS
       j=3;
       i=2;  
       break;
     }
    }
    i=2;
   }
  }
  if(pid==0){
   if(pidHijos==0){
    //NIETOS, son todos aquellos que tienen pidHijos 0
    NIETOS();
   }else{//si no tienen el pidHijos 0, es que es el padre
    //da igual el valor de pidHijos ya que todos los padres, o hijos del abuelo, hacen lo mismo
    int estado;
    int enfermo;
    int suma=0;
    //llamamos a la funcion que ejecutaran los hijos
    HIJOS(estado,enfermo,suma, pidHijos);
   }
  }else{
   //ABUELO
   int estado;
   int enfermo;
   int suma=0;
   ABUELO(estado, enfermo, suma);
  }

 }else{

  //Llamamos al medico
  int aleatorio, pidabuelo;
  struct sigaction sa;
  //llamamos a la manejadora1, para cambiar el comportamiento de la señal despues
  sa.sa_handler=manejadora1;
  //cambiamos el funcionamiento de sigusr1
  if(sigaction(SIGUSR1,&sa,NULL)==-1){
   //si da error
   perror("Error en la llamada a sigaction\n");
   exit(-1);
  }
  //Esperamos la llamada del abuelo
  pause();
  //consigues el pid del padre, en este caso el abuelo
  pidabuelo=getppid();
  //calculamos el aleatorio para saber si esta disponible o no
  aleatorio=calculaAleatorios(0,1);

  switch(aleatorio){
   case 0:
    //si el aleatorio es 0 envia al abuelo sigursr1, significa que no esta disponible
    if(kill(pidabuelo,SIGUSR1)!=0){
     perror("Error en la llamada a kill\n");
     exit(-1);
    }
    break;
   default:
    //si el aleatorio es distinto de 0 envia al abuelo sigurs2, significa que esta disponible
    if(kill(pidabuelo,SIGUSR2)!=0){
     perror("Error en la llamada a kill\n");
     exit(-1);
    }
    break;
  }

 } 

 return 0;

}

void manejadora1(int sig){

}
void manejadora2(int sig){

 //cuando el medico no esta disponible
 printf("Mis nietos no pueden salir porque el medico no esta disponible\n");
 exit(0);

}
int calculaAleatorios(int min, int max){

 return rand() % (max-min+1) + min;

}
void NIETOS(){
 
 int aleatorio;
 srand(getpid());
 sleep(calculaAleatorios(2,6));
 aleatorio=calculaAleatorios(0,1);
 printf("Nieto con pid %d y ppid %d: %d\n",getpid(),getppid(), aleatorio);
 //exit(calculaAleatorios(0,1));
 exit(aleatorio);

}
void HIJOS(int estado, int enfermo, int suma, int pid){

 printf("Comienza hijo de pid: %d.\n", pid);
 //Esperamos por todos los nietos
 if(wait(&estado)!=-1){
  enfermo=WEXITSTATUS(estado);
  suma=suma+enfermo;
 }
 if(wait(&estado)!=-1){
  enfermo=WEXITSTATUS(estado);
  suma=suma+enfermo;
 }
 if(wait(&estado)!=-1){
  enfermo=WEXITSTATUS(estado);
  suma=suma+enfermo;
 }
 printf("Numero de nietos enfermos: %d\n",suma);
 exit(suma);

}
void ABUELO(int estado, int enfermo, int suma){
/*
 while(wait(&estado)!=-1){
  enfermo=WEXITSTATUS(estado);
  suma=suma+enfermo;
 }
 //daria lo mismo hacerlo con el while que de forma individual
*/
 if(wait(&estado)!=-1){
  enfermo=WEXITSTATUS(estado);
  suma=suma+enfermo;
 }
 if(wait(&estado)!=-1){
  enfermo=WEXITSTATUS(estado);
  suma=suma+enfermo;
 }
 
 if(wait(&estado)!=-1){
  enfermo=WEXITSTATUS(estado);
  suma=suma+enfermo;
 }
 printf("El número de nietos enfermos que deben ir al doctor es %d\n",suma);

}


3 números primos en Matlab


function out=funcion_practica(n)
%
% Visualiza primeros tres números primos en caso que el argumento de
% entrada sea menor a 3.
if n==1
    out=true;
    return
end
%
if n==2
    out=true;
    return
end
%
% Incializa variables.
i=3;
val=3;
%
% Inicializa primeros 3 numeros primos.
prime=(1:3);
%
while length(prime)~=n
    val=val+2;
    fac=length(factor(val));
    if fac==1
        prime(i+1)=val;
        i=i+1;
    end
end
i=1;
while i<=length(prime)

if n==prime(i)

out=true;
return;

end
i=i+1;

end
out=false;
end

Codificar texto en Matlab

function out = funcion_practica()
   
    x=input('Ingresa el texto a codificar: ', 's');
    n=input('Ingrese el desplazamiento. ');
   
   
   
    i=((x-n)-97);%resta 97 a los valores ascci
    j=mod(i,26);%realiza la operacion modulo
    k=(j+97);%suma 97 al modulo
    l=char(k);%se pasa de numero a caracter
    disp('su decodificacion es');
    disp(l);
   
end

Primos en Matlab

function primos=practica()
n=1000;

enteros=2:n;
primos =[1];
    while length(enteros)>0
        sicPrim=enteros(1) ;
        primos=[primos,sicPrim];
        enteros1=[];
        for i=1:length(enteros)
            if(mod(enteros(i),sicPrim)~=0)
                enteros1=[enteros1, enteros(i)]
            end % if
        end % for
        enteros=enteros1;
    end % while  
end % function

Cifrado en Matlab

function r=codifica_vigemere(texto,clave)
    r='';
    k2=1;
    for k=1:length(texto)
        if texto(k)>='A' && texto(k) <= 'Z' %En caso de ser una letra mayuscula...
            desp=clave(mod(k2-1,length(clave))+1)-'A'; %%Habia un +1
            r(k)='A'+mod(texto(k)-'A'+desp, 'Z'-'A'+1);
            k2=k2+1;
        else
            r(k)=texto(k);
        end
    end
end

Números racionales en Java

DESCARGAR




import java.util.Scanner;


public class Main {

/**
* @param args
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

try {
Racional r1 = new Racional(scan.nextInt(), scan.nextInt());
Racional r2 = new Racional(scan.nextInt(), scan.nextInt());

System.out.println(r1.suma(r2));
System.out.println(r1.diferencia(r2));
System.out.println((r1.suma(r2)).multiplicacion(r1.diferencia(r2)));
System.out.println((r1.suma(r2)).division(r1.diferencia(r2)));
if (r1.esMenorQue(r2))
System.out.println("cierto");
else
System.out.println("falso");
if (r1.equals(r2))
System.out.println("cierto");
else
System.out.println("falso");
if (r1.esMayorQue(r2))
System.out.println("cierto");
else
System.out.println("falso");
} catch (RacionalException e){
System.out.println(e.getMessage());
} finally {
scan.close();
}
}

}






import static org.junit.Assert.*;

import org.junit.Test;


public class RacionalTest {

@Test
public void test1() {
Racional r1 = new Racional(2, 1);
Racional r2 = new Racional(4, 1);
Racional s = r1.suma(r2);
Racional d = r1.diferencia(r2);

assertEquals(s,new Racional(6));
assertEquals(d,new Racional(-2));
assertEquals(s.multiplicacion(d),new Racional(-12));
assertEquals(s.division(d), new Racional(-3));

assertTrue(r1.esMenorQue(r2));
assertFalse(r1.equals(r2));
assertFalse(r1.esMayorQue(r2));
}

@Test(expected=RacionalException.class)
public void test2() {
Racional r1 = new Racional(2, 4);
Racional r2 = new Racional(6, 12);
Racional s = r1.suma(r2);
Racional d = r1.diferencia(r2);

assertEquals(s,new Racional(1));
assertEquals(d,new Racional(0));
assertEquals(s.multiplicacion(d),new Racional(0));
assertEquals(s.division(d), new Racional(-3));
}

@Test(expected=RacionalException.class)
public void test3() {
Racional r1 = new Racional(-1, -10);
Racional r2 = new Racional(6, 0);
}

@Test
public void test4() {
Racional r1 = new Racional(-2, -10);
Racional r2 = new Racional(8, -6);
Racional s = r1.suma(r2);
Racional d = r1.diferencia(r2);

assertEquals(s,new Racional(-17,15));
assertEquals(d,new Racional(23,15));
assertEquals(s.multiplicacion(d),new Racional(-391,225));
assertEquals(s.division(d), new Racional(-17,23));

assertFalse(r1.esMenorQue(r2));
assertFalse(r1.equals(r2));
assertTrue(r1.esMayorQue(r2));
}

@Test
public void test5() {
Racional r1 = new Racional(0, -100);
Racional r2 = new Racional(-5, -1);
Racional s = r1.suma(r2);
Racional d = r1.diferencia(r2);

assertEquals(s,new Racional(5));
assertEquals(d,new Racional(-5));
assertEquals(s.multiplicacion(d),new Racional(-25));
assertEquals(s.division(d), new Racional(-1));

assertTrue(r1.esMenorQue(r2));
assertFalse(r1.equals(r2));
assertFalse(r1.esMayorQue(r2));
}
}







public class RacionalException extends ArithmeticException {

public RacionalException() {
super();
}

public RacionalException(String arg0) {
super(arg0);
}

}








/**
 * Clase que modeliza números racionales.
 
 * InvarianteClaseRacional: el denominador de un objeto bien formado
 *             siempre es distinto de cero
 */

public class Racional implements Cloneable {
private long numerador,denominador; 
/**
* Crea un nuevo número racional.
* @param i numerador del número racional
* @param j denominador del número racional
* @throws RacionalException cuando j es 0.
* Postc: referencia a un nuevo objeto Racional bien formado o excepción.
*/
public Racional(long i, long j) throws RacionalException{
if (j == 0)
throw new RacionalException("Número racional imposible");
this.numerador = i;
this.denominador = j;
}
/**
* Crea un nuevo número racional con denominador 1.
* @param i numerador 
* @throws RacionalException
* Postc: un nuevo objeto Racional bien formado.
*/
public Racional (long i){
this(i,1);
}
/**
* Suma el número racional actual con el parámetro recibido.
* @param r el segundo sumando a sumar 
* @return devuelve un nuevo número racional bien formado que es
* suma del número racional actual y el parámetro pasado siempre
* que no haya desbordamiento.
* Prec: No hay desbordamiento en ninguna operación aritmética utilizada
*/ 
public Racional suma (Racional r){
assert(!Racional.habraOverflowAlMultiplicar(this.numerador, r.denominador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.numerador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.denominador)
   && !Racional.habraOverflowAlSumar(this.numerador*r.denominador, this.denominador*r.numerador));

return new Racional(this.numerador*r.denominador + this.denominador*r.numerador,
this.denominador*r.denominador);
}
/**
* Diferencia entre el número racional actual y el parámetro recibido, en 
* ese orden.
* @param r número racional sustraendo en la resta. 
* @return devuelve un nuevo número racional bien formado que es
* la diferencia entre el número racional actual y el parámetro pasado en ese
* orden siempre que no haya desbordamiento.
* Prec: No hay desbordamiento en ninguna operación aritmética utilizada
*/
public Racional diferencia (Racional r){
assert(!Racional.habraOverflowAlMultiplicar(this.numerador, r.denominador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.numerador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.denominador)
&& !Racional.habraOverflowAlSumar(this.numerador*r.denominador, -this.denominador*r.numerador));

return new Racional(this.numerador*r.denominador - this.denominador*r.numerador,
this.denominador*r.denominador);
}
/**
* Producto entre el número racional actual y el parámetro recibido.
* @param r número racional a multiplicar con el actual.
* @return devuelve un nuevo número racional bien formado que es
* el producto entre el número racional actual y el parámetro pasado,
* siempre que no haya desbordamiento.
* Prec: Math.max(Math.abs(this.numerador*r.numerador),
* Math.abs(this.denominador*r.denominador)) < Long.MAX_VALUE
*/
public Racional multiplicacion (Racional r){
assert(!Racional.habraOverflowAlMultiplicar(this.numerador, r.numerador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.denominador));

return new Racional(this.numerador*r.numerador,
this.denominador*r.denominador);
}

/**
* División entre el número racional actual y el parámetro recibido.
* @param r número racional divisor.
* @return devuelve un nuevo número racional bien formado que es
* el cociente entre el número racional actual (dividendo) y el parámetro pasado.
* Prec: No hay desbordamiento en las operaciones aritméticas usadas.
* Postc: Un nuevo racional resultado de la división, si no hay desbordamiento,
* o excepción
*/
public Racional division (Racional r) throws RacionalException {
assert(!Racional.habraOverflowAlMultiplicar(this.numerador, r.denominador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.numerador));
try {
long i = this.denominador*r.numerador; 
return new Racional(this.numerador*r.denominador,i);
} catch (Exception e) {
throw new RacionalException("División por cero");
}
}

/**
* Devuelve una cadena representando el número racional en forma
* irreducible.
*/
@Override
public String toString(){
this.simplifica();
if (this.denominador==1)
return ""+this.numerador;
return ""+this.numerador + "/" + this.denominador;
}
/**
* Devuelve true si el número racional es igual al objeto pasado,
* que debe ser un racional y equivalente a él y false en otro caso.
*/
@Override
public boolean equals (Object o){
if (o instanceof Racional){
Racional aux =(Racional)o;
this.simplifica();
aux.simplifica();
return this.numerador==aux.numerador && this.denominador==aux.denominador;
}
return false;
}
@Override
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
/**
* Devuelve verdadero si el número racional actual es menor que r
* @param r un número racional a comparar.
* @return verdadero si this < r como números racionales.
* Prec: la versión irreducible de this y r deben verificar que 
* no hay desbordamiento en las operaciones aritméticas utilizadas
*/
public boolean esMenorQue (Racional r){
this.simplifica();
r.simplifica();
assert(!Racional.habraOverflowAlMultiplicar(this.numerador, r.denominador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.numerador));
return this.numerador*r.denominador < this.denominador*r.numerador;
}
/**
* Devuelve verdadero si el número racional actual es mayor que r
* @param r un número racional a comparar.
* @return verdadero si this > r como números racionales.
* Prec: la versión irreducible de this y r deben verificar que no hay
* desbordamiento en las operaciones aritméticas utilizadas
*/
public boolean esMayorQue (Racional r){
this.simplifica();
r.simplifica();
assert(!Racional.habraOverflowAlMultiplicar(this.numerador, r.denominador)
&& !Racional.habraOverflowAlMultiplicar(this.denominador, r.numerador));
return this.numerador*r.denominador > this.denominador*r.numerador;
}
/**
*  Calcula el máximo común divisor de dos enteros long. 
*  El máximo común divisor es el mayor entero que divide de forma exacta
*  a los dos números. Siempre será un número positivo y 1 si los dos enteros
*  son primos relativos.
* @param a Un long
* @param b Un long
* @return El máximo común divisor de a y b.
* Prec: a != 0 || b != 0
*/
private long mcd (long a, long b){
assert(a!=0 || b !=0);
long aa=Math.abs(a);
long bb=Math.abs(b);
if (aa < bb){ long aux = aa; aa = bb; bb =aux;}
while (bb != 0){
long r = aa % bb;
aa = bb;
bb = r;
}
return aa;
}
/**
* Simplifica un número racional de forma que cumple:
* this.denominador > 0 && mcd(this.numerador,this.denominador)==1
*/
private void simplifica(){
if (Math.signum(numerador) == Math.signum(denominador)){
if (Math.signum(denominador) < 0){
this.numerador = -this.numerador;
this.denominador = -this.denominador;
}
}
else 
if (Math.signum(denominador) < 0) {
this.denominador = -this.denominador;
this.numerador = -this.numerador;
}
// Postc: el signo está en el numerador solamente
long mcd = mcd(Math.abs(this.numerador), this.denominador);
this.numerador = this.numerador / mcd;
this.denominador = this.denominador / mcd;
// Ya está en forma irreducible
assert(this.denominador > 0 && mcd(this.numerador,this.denominador)==1);
}
/** Detecta si hay desbordamiento al multiplicar dos números long.
* @param a
* @param b
* @return true si hay desbordamiento al calcular a*b, false en otro caso.
*/
private static boolean habraOverflowAlMultiplicar(long a, long b) {
   // Casos por el signo de a y b
if (a == 0 || b == 0) {
       return false;
   } else if (a > 0 && b > 0) { 
       return a > Long.MAX_VALUE / b; 
   } else if (b < 0 && a < 0) {
       return a < Long.MAX_VALUE / b;
   } else { 
       if (b > 0) { // Observar que Long.MIN_VALUE / -1 provoca overflow. 
        // De ahí la necesidad de estas dos casos separados.
           return a < Long.MIN_VALUE / b;
       } else { // a > 0
           return b < Long.MIN_VALUE / a;
       }
   }
}

/** Detecta si hay desbordamiento al sumar dos números long.
* @param a
* @param b
* @return true si hay desbordamiento al calcular a+b, false en otro caso.
*/
private static boolean habraOverflowAlSumar(long a, long b) {
   if (a > 0 && b > 0) {
       return a > Long.MAX_VALUE - b;
   } else if (a < 0 && b < 0) {
       return a < Long.MIN_VALUE - b;
   }
   return false;
}

}