Problemas del Curso de Formación del Profesorado
Problema No. 1
Desarrollar una aplicación Java que convierta un valor en pesetas
a euros (suponiendo un cambio de 1 euro = 166,387 pts). El valor se
pide por teclado.
import java.io.*;
public class Problema1
{
public static void main( String[] args ) throws Exception
{
BufferedReader teclado;
long pesetas;
double euros;
String linea;
teclado = new BufferedReader( new InputStreamReader(System.in) );
System.out.print("Cantidad (pts): ");
linea = teclado.readLine();
pesetas = Integer.parseInt(linea);
euros = pesetas/166.387;
System.out.println(pesetas+" pts. corresponden a "+euros+" euros.");
}
}
Problema No. 2
Modificar el programa anterior para que detecte si el usuario no introduce
un texto que se pueda convertir a un valor e imprima el mensaje "No ha
introducido un valor correcto".
import java.io.*;
public class Problema2
{
public static void main( String[] args ) throws Exception
{
BufferedReader teclado;
long pesetas;
double euros;
String linea;
teclado = new BufferedReader( new InputStreamReader(System.in) );
System.out.print("Cantidad (pts): ");
linea = teclado.readLine();
try {
pesetas = Integer.parseInt(linea);
euros = pesetas/166.387;
System.out.println(pesetas+" pts. corresponden a "+euros+" euros.");
} catch( Exception e ) {
System.out.println("No ha introducido un valor correcto.");
}
}
}
Problema No. 3
Modificar el programa anterior para que convierta indistintamente de euros
a pesetas y de pesetas a euros basandose en si en la linea que introduce
el usuario aparece la cadena "pts" o "euros". Si la linea no se ajusta al
esquema anterior, debera imprimir un mensaje explicando cual es el formato
correcto.
import java.io.*;
public class Problema3
{
public static void main( String[] args ) throws Exception
{
BufferedReader teclado;
long pesetas;
double euros;
String linea;
int n;
teclado = new BufferedReader( new InputStreamReader(System.in) );
System.out.print("Cantidad: ");
linea = teclado.readLine().toUpperCase();
if( linea.endsWith(" PTS") ) {
n = linea.indexOf(" PTS");
linea = linea.substring(0,n);
try {
pesetas = Integer.parseInt(linea);
euros = pesetas/166.387;
System.out.println(euros+" euros");
} catch( Exception e ) {
System.out.println("'"+linea+"' no es un numero entero valido.");
}
} else if( linea.endsWith(" EUROS") ) {
n = linea.indexOf(" EUROS");
linea = linea.substring(0,n);
try {
euros = Double.valueOf(linea).doubleValue();
pesetas = Math.round(euros*166.387);
System.out.println(pesetas+" pts");
} catch( Exception e ) {
System.out.println("'"+linea+"' no es un numero real valido.");
}
} else {
System.out.println("La linea debe terminar con 'pts' o 'euros'");
}
}
}
Problema No. 4
Crear un programa que adivine un numero entre 1 y 1000 en base a ir acotando
su posible valor mediante la pregunta de si el número es menor que otro.
import java.io.*;
public class Problema4
{
public static void main( String[] args ) throws Exception
{
BufferedReader teclado;
int min = 0;
int max = 1000;
int med;
char resp;
String linea;
teclado = new BufferedReader( new InputStreamReader(System.in) );
System.out.println("*** ADIVINA UN NUMERO ***");
System.out.println("");
System.out.println("Piense un numero de 1 a 1000");
do {
med = (min+max)/2;
System.out.print("Es menor de "+med+"? [S/N] ");
linea = teclado.readLine().toUpperCase();
resp = linea.charAt(0);
if( resp == 'S' )
max = med-1;
else
min = med;
} while( max>min );
System.out.println("LO TENGO! La respuesta es "+max+".");
}
}
Problema No. 5
Crear un programa que calcule el máximo comun divisor de dos valores
mediante el algoritmo de euclides. Implementar el algoritmo mediante una
función.
import java.io.*;
public class Problema5
{
public static void main( String[] args )
{
new Problema5();
}
public Problema5( )
{
BufferedReader teclado;
String linea;
int a,b,x;
teclado = new BufferedReader( new InputStreamReader(System.in) );
System.out.print("Escriba el primer valor: ");
linea = teclado.readLine();
try {
a = Integer.parseInt(linea);
System.out.print("Escriba el segundo valor: ");
linea = teclado.readLine();
b = Integer.parseInt(linea);
x = mcd(a,b);
System.out.println("El m.c.d. es "+x);
} catch( Exception e ) {
System.out.println("El valor introducido es erroneo.");
}
}
// Algoritmo de Euclides
public int mcd( int x, int y )
{
int a,b;
a = x;
b = y;
while( a != b ) {
if( a < b ) {
b = b - a;
} else {
a = a - b;
}
}
return(a);
}
}
Problema No. 6
Crear un applet que realize las tareas de conversión de euros a
pesetas.
Código fuente del programa.