Mostrando entradas con la etiqueta Nassi-Shneiderman. Mostrar todas las entradas
Mostrando entradas con la etiqueta Nassi-Shneiderman. Mostrar todas las entradas

jueves, 16 de junio de 2011

Ejercicio ¿alguno igual que la media?

Realizar el diagrama Nassi-Shneiderman para un programa que lea 10 números, calcule su media y nos informe de si alguno de ellos coincide con su media. El programa sólo dirá:
  • La media es **** y COINCIDE con uno de los números introducidos.
O bien:
  • La media es **** y NO COINCIDE con uno de los números introducidos.

DIAGRAMA DE NASSI-SHNEIDERMAN



EJERCICIO EN JAVA

public class CoincideConMedia {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int[] numeros;
        int i, suma=0;
        double media;
        boolean noCoincide = true;
        numeros = new int[10];
        System.out.println("Introduzca "+ numeros.length + " numeros enteros:");
        for (i=0; i<numeros.length; i++){
            numeros[i] = entrada.nextInt();
            suma = suma+numeros[i];
        }
        media = (double)suma / numeros.length;
        i=0;
        while (i<numeros.length & noCoincide){
            if (numeros[i] == media)
                noCoincide = false;
            i++;
        }
        System.out.println("La media es: "+media+ "...");
        if (noCoincide)
            System.out.println("y NO COINCIDE con uno de los números introducidos.");
        else
            System.out.println("y COINCIDE con uno de los números introducidos.");
    }
}

viernes, 25 de marzo de 2011

Ejercicio de binario a decimal

DIAGRAMA DE NASSI-SCHNEIDERMAN



EJERCICIO EN JAVA

public class BinDec {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int i, j=0, decimal=0;
        String binario;
        System.out.println("Escriba un número en binario. Este programa lo pasará a decimal.");
        binario = entrada.nextLine();
        for (i=binario.length()-1; i>=0; i--){
            if(binario.charAt(i) == '0'){
                decimal = (int) (decimal + 0 * (Math.pow(2, j)));
                j++;
            }
            if(binario.charAt(i) == '1'){
                decimal = (int) (decimal + 1 * (Math.pow(2, j)));
                j++;
            }
        }
        System.out.println(binario+" = "+decimal+" en base decimal.");
    }
}

jueves, 24 de marzo de 2011

Ejercicio calcular media (tabla de double)

Pedir al usuario que elija el tamaño de la tabla de double y que la rellene por teclado. Posteriormente, se le pedirá un número y se calculará la media de aquellos de la tabla que sean mayores que dicho número.

DIAGRAMA DE NASSI-SHNEIDERMAN



EJERCICIO EN JAVA

public class Media {
	public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int i, contador=0, elementos;
        double suma=0, media, minimo;
        double[] numeros;
        System.out.println("¿Cuántos números quiere introducir?");
        elementos = entrada.nextInt();
        numeros = new double[elementos];
        System.out.println("Introduzca "+ elementos +" números:");
        for (i=0; i<=elementos-1; i++){
            System.out.print("Número "+ (i+1) +": ");
            numeros[i] = entrada.nextDouble();
        }
        System.out.println("Introduzca el nº mínimo. Se calculará la media de los números mayores que este");
        minimo = entrada.nextDouble();
        for (i=0; i<=elementos-1; i++)
            if (numeros[i] > minimo){
                suma = suma + numeros[i];
                contador++;
            }
        if (contador == 0)
            System.out.println("El número introducido es mayor que todos los anteriores.");
        else{
            media = suma/contador;
            System.out.println("La media de los nº mayores que "+ minimo +" es: "+ media);
        }
    }	
}

Varios ejercicios

Busca el algoritmo de Euclides (implementado de manera iterativa) y exprésalo en forma de diagrama de nassi-shneiderman.

Después implementa una aplicación Java que lea de teclado dos números enteros positivos y que muestre su máximo común divisor.

NOTA: el algoritmo de Euclides calcula el Máximo Común Divisor de dos números enteros.

DIAGRAMA DE NASSI-SHNEIDERMAN


EJERCICIO EN JAVA

public class Euclides {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int num1, num2, aux;
        System.out.println("Escriba dos números enteros y este programa le mostrará el MCD.");
        System.out.println("Número 1:");
        num1 = entrada.nextInt();
        System.out.println("Número 2:");
        num2 = entrada.nextInt();
        while (num2 != 0){
            aux = num1;
            num1 = num2;
            num2 = aux % num2;
        }
        System.out.println("El MCD de los números introducidos es: " + num1);
    }	
}

Implementa un programa Java que lea de la entrada estándar una frase y la analice para informarnos de:
  • número de caracteres que tiene.
  • número de caracteres alfabéticos que tiene.
public class Caracteres {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String frase;
        int pos=0, caracteres, caracteresAlfa=0;
        System.out.println("Introduzca una frase:");
        frase = entrada.nextLine();
        caracteres = frase.length();
        while (pos < frase.length()){
            if (Character.isLetter(frase.charAt(pos)))
                caracteresAlfa++;
            pos++;
        }
        System.out.println("El número de caracteres es: "+ caracteres);
        System.out.println("El número de caracteres  alfabéticos es: "+ caracteresAlfa);
    }	
}

Implemente un programa que calcule los divisores de un número entero previamente leído de la entrada estándar.

public class Divisores {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int n, i;
        System.out.println("Introduzca un número entero. Este programa le mostrará sus divisores.");
        n = entrada.nextInt();
        System.out.println("Los divisores de "+ n +" son:");
        for (i=1; i<=n; i++)
            if ((n%i) == 0)
                System.out.println(i);
    }
}

Implemente un programa que lea de la entrada estándar una serie de 5 nombres y calcule la longitud media de los nombre introducidos.

public class LongMedia1 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String nombre;
        int i, longitud=0;
        double longMedia;
        System.out.println("Introduzca 5 nombres:");
        for (i=1; i<=5; i++){
            nombre = entrada.nextLine();
            longitud = longitud + nombre.length();
        }
        longMedia = (double)longitud/5;
        System.out.println("La longitud media de los nombres introducidos es de: "+ longMedia + " caracteres.");
    }
}

Repite el anterior ejercicio, pero leyendo nombres hasta que se introduzca el 'nombre' FIN.

public class LongMedia2 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int i, longitud=0, veces=0;
        double longitudMedia;
        String nombre="";
        System.out.println("Escriba los nombre que desee. Cuando haya finalizado escriba 'fin'.");
        while (!nombre.equals("fin")){
            nombre = entrada.nextLine();
            longitud = longitud + nombre.length();
            nombre = nombre.toLowerCase();
            veces++;
        }
        longitudMedia = (double)(longitud-3)/(veces-1); //sin tener en cuenta los caracteres de 'fin'
        System.out.println("La longitud media de los nombres introducidos es de: "+ longitudMedia + " caracteres.");
    }
}

Palíndromo

Realizar un programa que, dada una frase por el usuario, diga si dicha frase es o no un palíndromo.
NOTA: según el diccionario de la RAE, palíndromo es una palabra o frase que se lee igual de izquierda a derecha, que de derecha a izquierda.

DIAGRAMA DE NASSI-SHNEIDERMAN



EJERCICIO EN JAVA

public class Palindromo1 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int pos=0;
        StringBuffer frase, inversa;
        String s1, s2;
        System.out.println("Introduzca una frase. Este programa comprobará si se trata o no de un palíndromo.");
        frase = new StringBuffer(entrada.nextLine());
        while (pos < frase.length()) //si utilizamos for, dejamos la parte de pos++ vacía
            if (!Character.isLetter(frase.charAt(pos)))
                frase.deleteCharAt(pos);
            else
                pos++;
        inversa = new StringBuffer(frase);
        inversa.reverse();
        s1 = frase.toString();
        s2 = inversa.toString();
        if (s1.equalsIgnoreCase(s2)) //ignora si hay mayusculas o minisculas
            System.out.println("La frase introducida es un palíndromo.");
        else
            System.out.println("La frase introducida no es un palíndromo.");
    }	
}

El mismo ejercicio, pero sin emplear StringBuffer.

DIAGRAMA DE NASSI-SHNEIDERMAN


EJERCICIO EN JAVA

public class Palindromo2 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int i=0, j, pos=0, contador=0, contador2=0;
        String frase;
        System.out.println("Introduzca una frase. Este programa le dirá si es un palíndromo.");
        frase = entrada.nextLine();
        j=(frase.length()-1);
        while (i<frase.length() & j>=0)
            if (!Character.isLetter(frase.charAt(i)))
                i++;
            else
                if (!Character.isLetter(frase.charAt(j)))
                    j--;
                else
                    if (frase.charAt(i) == frase.charAt(j)){
                        contador++;
                        i++;
                        j--;
                    }
                    else{
                        i++;
                        j--;
                    }
        while (pos <= (frase.length()-1))
            if (Character.isLetter(frase.charAt(pos))){
                contador2++;
                pos++;
            }
            else
                pos++;
        if (contador == contador2)
            System.out.println("La frase es un palíndromo.");
        else
            System.out.println("La frase no es un palíndromo.");
    }	
}

OTRA FORMA DE HACER EL EJERCICIO EN JAVA (MÁS SENCILLA). Esta forma está basada en el diagrama anterior.

public class Palindromo3 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int i=0, j;
        String frase;
        boolean esPalindromo=true;
        System.out.println("Introduzca una frase. Este programa le dirá si es un palíndromo.");
        frase = entrada.nextLine();
        j=(frase.length()-1);
        while (i<j & esPalindromo)
            if (!Character.isLetter(frase.charAt(i)))
                i++;
            else
                if (!Character.isLetter(frase.charAt(j)))
                    j--;
                else
                    if (frase.charAt(i) == frase.charAt(j)){
                        i++;
                        j--;
                    }
                    else
                        esPalindromo = false;
        if (i>=j)
            System.out.println("La frase es un palíndromo.");
        else
            System.out.println("La frase no es un palíndromo.");
    }
}   

jueves, 28 de octubre de 2010

Ejercicio calcular TOTAL y MEDIA

Leer 5 números por teclado y calcular la suma total y la media. Se debe poder cambiar el número de elementos que se introduzcan, sin realizar ningún otro cambio en el programa.

DIAGRAMA DE NASSI-SHNEIDERMAN


EJERCICIO EN JAVA

public class TotalMedia {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int i, numero, total;
        float media;
        final int CUANTOS;
        total = 0;
        CUANTOS = 5;
        System.out.println("Introduzca " + CUANTOS + " números enteros:");
        for (i = 1; i <= CUANTOS; i++){
            numero = entrada.nextInt();
            total = total + numero;
        }
        media = (float)total/CUANTOS;
        System.out.println("El resultado total es: " + total + " y la media es: " + media);
    }	
}

jueves, 21 de octubre de 2010

Ejercicios con "for" y "Strings"

1.- Realizar un programa que lea una frase por teclado y después muestre los caracteres 'a' que contiene dicha frase, junto a la posición que ocupa (las posiciones se comienzan a contar desde 0).

public class Ejer1 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String frase;
        int pos;    //para ir indicando la posición de cada caracter
        System.out.println("A continuación escriba una frase (que contenga alguna 'a'):");
        frase = entrada.nextLine();
        if (frase.indexOf('a') == -1)
            System.out.println("La frase introducida no contiene ninguna 'a'.");
        else
            for (pos=0; pos < frase.length(); pos++)
                if (frase.charAt(pos) == 'a')
                    System.out.println("a - " + pos);
    }	
}

2.- El mismo ejercicio anterior, pero que busque los caracteres 'a' desde el final hasta el principio.

public class Ejer2 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String frase;
        int pos;    //para ir indicando la posición de cada caracter
        System.out.println("A continuación escriba una frase (que contenga alguna 'a'):");
        frase = entrada.nextLine();
        if (frase.indexOf('a') == -1)
            System.out.println("La frase introducida no contiene ninguna 'a'.");
        else
            for (pos= (frase.length()-1); pos >= 0; pos--)
                if (frase.charAt(pos) == 'a')
                    System.out.println("a - " + pos);
    }	
}

3.- El mismo programa, pero ahora debe mostrar sólo las 'a' que estén al principio de una palabra.

DIAGRAMA DE NASSI-SHNEIDERMAN



PROGRAMA EN JAVA

public class Ejer3 {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String frase;
        int pos;    //para ir indicando la posición de cada caracter
        pos = 0;
        System.out.println("A continuación escriba una frase (que contenga alguna 'a'):");
        frase = entrada.nextLine();
        if (frase.indexOf('a') == -1)
            System.out.println("La frase introducida no contiene ninguna 'a'.");
        else{
            if (frase.charAt(pos) == 'a')
                System.out.println("a - " + (pos));
            for (pos=0; pos < (frase.length()-1); pos++)
                if (Character.isLetter(frase.charAt(pos)) == false)
                    if (frase.charAt(pos + 1) == 'a')
                        System.out.println("a - " + (pos + 1));
        }
    }	
}

jueves, 7 de octubre de 2010

Diagrama y programa en Java

Realizar un programa que ofrezca el siguiente menú al usuario :
  1. Sumar a + b.
  2. Multiplicar a * b.
  3. Dividir a / b.
  4. Mostrar el mayor de a y b.
Si la opción no es correcta, mostrar un mensaje que lo indique.


A continuación se muestra el diagrama de Nassi-Shneiderman:



Otra manera de hacerlo:



A continuación se muestra el programa en Java correspondiente al primer diagrama mostrado:

public class MenuOpciones {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int opcion;
        float a, b, resultado;
        System.out.println("Elija una de las siguientes opciones:");
        System.out.println("1. Sumar a + b");
        System.out.println("2. Multiplicar a * b");
        System.out.println("3. Dividir a / b");
        System.out.println("4. Mostrar el mayor entre a y b");
        opcion = entrada.nextInt();
        switch (opcion){
           case 1: System.out.println("Introduzca los valores de 'a' y 'b':");
                   a = entrada.nextFloat();
                   b = entrada.nextFloat();
                   resultado = a + b;
                   System.out.println("El resultado es "+ resultado);
                   break;

           case 2: System.out.println("Introduzca los valores de 'a' y 'b':");
                   a = entrada.nextFloat();
                   b = entrada.nextFloat();
                   resultado = a * b;
                   System.out.println("El resultado es "+ resultado);
                   break;

           case 3: System.out.println("Introduzca los valores de 'a' y 'b':");
                   a = entrada.nextFloat();
                   b = entrada.nextFloat();
                   resultado = a / b;
                   System.out.println("El resultado es "+ resultado);
                   break;

           case 4: System.out.println("Introduzca los valores de 'a' y 'b':");
                   a = entrada.nextFloat();
                   b = entrada.nextFloat();
                   if (a > b)
                       System.out.println("El mayor es: " + a);
                   else
                       System.out.println("El mayor es: " + b);
                   break;

           default: System.out.println("La opción elegida no es válida.");
                    break;
        }
    }	
}

martes, 5 de octubre de 2010

Diagrama de Nassi-Shneiderman

Dado un número entero, saber si es negativo o positivo y si es par o impar.

Diagrama de Nassi-Shneiderman

Muestra el mayor y el menor de tres números enteros elegidos inicialmente.



Otra forma de hacerlo (propuesta por un compañero de clase):