2. EJERCICIOS
AreaTriangulo
Enunciado.
Escriba un programa que calcule el área de un triángulo rectángulo dadas la altura y la base.
Orientación.
El área de un triángulo es la base multiplicada por la altura y dividida entre 2.
Código.
// Area de un triangulo rectangulo
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class AreaTriangulo {
public static void main (String [ ] args) throws NumberFormatException, IOException {
float altura, base;
double area;
BufferedReader linea=new BufferedReader (new InputStreamReader (System.in));
System.out.println ("Base del triangulo ");
base = Float.parseFloat (linea.readLine ());
System.out.println ("Altura del triangulo ");
altura = Float.parseFloat (linea.readLine ());
area = 0.5 * (double) altura * base;
System.out.println ("Area = " + area);
}
}
3. CalcularMinimo
Enunciado.
Escriba un programa que halle el menor de dos números pedidos al usuario.
Orientación.
Se utiliza un if – else para devolver el menor de los dos números.
Código.
/* Calculo del menor de dos numeros dados */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CalcularMinimo {
public static void main(String[] args) throws NumberFormatException, IOException {
/* Calculo del menor de dos numeros dados */
int menor, numero1, numero2;
BufferedReader linea=new BufferedReader (new InputStreamReader (System.in));
System.out.println ("Escriba el primer numero y pulso INTRO: ");
numero1 = Integer.parseInt(linea.readLine());
System.out.println ("Escriba el segundo numero y pulso INTRO: ");
numero2 = Integer.parseInt(linea.readLine());
if (numero1 < numero2)
menor = numero1;
else menor = numero2;
/* la sentencia if-else es equivalente a:
* menor = numero1 < numero2 ? numero1 : numero2; */
System.out.println ("El menor de "+ numero1 + " y " + numero2+ " es " + menor);
}
}
4. ImprimirTablaPotencias
Enunciado.
Escriba un programa que imprima una tabla con las cuatro primeras potencias de los números del
1 al 10
Orientación.
Se utiliza un bucle for para avanzar por los diez primeros números. Para escribir las potencias
con formato de tabla se utiliza el carácter de Unicode t, que es equivalente a poner un tabulador.
Código.
public class ImprimirTablaPotencias {
public static void main (String [ ] args) {
/* Imprime la tabla de las primera 4 potencias del 1 al 10 */
int n;
System.out.println (" numerot exp2t exp3t exp4");
System.out.println ("------t-----t-----t-----");
for (n = 0; n <= 10; ++n)
System.out.println (" "+n+"t "+n*n+"t"+n*n*n+"t"+n*n*n*n);
}
}
5. EscribirMeses
Enunciado.
Escriba un programa que pida al usuario un número comprendido entre 1 y 12 y que muestre por
pantalla el nombre del mes correspondiente.
Orientación.
Primero se solicita al usuario el número y luego se utiliza switch para escribir el nombre del mes
correspondiente.
Código.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class EscribirMeses {
public static void main (String [] args) throws NumberFormatException, IOException {
BufferedReader linea = new BufferedReader (new InputStreamReader (System.in));
System.out.print("Opcion: ");
int opc = Integer.parseInt (linea.readLine ());
switch (opc) {
case 1: System.out.println ("enero");
break;
case 2: System.out.println ("febrero");
break;
case 3: System.out.println ("marzo");
break;
case 4: System.out.println ("abril");
break;
case 5: System.out.println ("mayo");
break;
case 6: System.out.println ("junio");
break;
case 7: System.out.println ("julio");
break;
case 8: System.out.println ("agosto");
break;
case 9: System.out.println ("septiembre");
break;
case 10:System.out.println ("octubre");
break;
case 11:System.out.println ("noviembre");
break;
case 12:System.out.println ("diciembre");
break;
default:System.out.println ("opcion no valida");
break;
}
}
}
6. CambioOptimo
Enunciado.
Escriba un programa que dándole el importe exacto de una cantidad indique el mínimo número
de monedas necesario. Las monedas son de 1, 2, 5, 10, 20 y 50 céntimos, y 1 y 2 euros.
Orientación.
Se utiliza un vector de ocho elementos inicializado con los valores de las distintas monedas. A
continuación se solicita al usuario el número y luego se utiliza un bucle for para ir comprobando si es
divisible entre la mayor de las monedas disponibles.
Código.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CambioOptimo {
public static void main(String[] args) throws NumberFormatException, IOException {
/* Cambio optimo de monedas */
final int LIM = 8;
BufferedReader linea = new BufferedReader (new InputStreamReader (System.in));
double [] monedas = {2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01};
double cantidad;
int num, numMonedas;
System.out.println ("Introduzca el importe exacto: ");
cantidad = Float.parseFloat (linea.readLine ());
System.out.println ("El cambio optimo es el siguiente: ");
for (num = 0; num < LIM; num++) {
numMonedas = (int) (cantidad / monedas [num]);
if (numMonedas != 0)
System.out.println (numMonedas + " de "+ monedas [num]);
cantidad = cantidad % monedas [num];
}
}
}
7. CalcularPotencias
Enunciado.
Escriba un programa que calcule la potencia entera de un número entero de forma iterativa y de
forma recursiva.
Orientación.
.......
Código.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CalcularPotencias {
/* Potencia entera. De manera iterativa y de menera recursiva */
static long potenciaIterativo (int base, int expo) {
long p = 1;
int i;
for (i = 1; i <= expo; i++)
p *= base;
return(p);
}
static long potenciaRecursivo (int base, int expo) {
long p;
if (base == 0)
p = 0;
else if (expo == 0)
p = 1;
else p = base * potenciaRecursivo (base, expo - 1);
return(p);
}
public static void main(String[] args) throws NumberFormatException, IOException {
long potencia;
int b, e;
BufferedReader linea = new BufferedReader (new InputStreamReader (System.in));
System.out.println ("Escriba una base entera para la operacion (b) ");
b = Integer.parseInt (linea.readLine ());
System.out.println ("nEscriba un exponente entero para la operacion (e) ");
e = Integer.parseInt (linea.readLine ());
/* Forma iterativa */
potencia = potenciaIterativo (b, e);
System.out.println ("El resultado de la potencia en forma iterativa es " + potencia);
/* Forma recursiva */
potencia = potenciaRecursivo (b, e);
System.out.println ("El resultado de la potencia en forma recursiva " + potencia);
}
}
8. SumaVectores
Enunciado.
Escriba un programa que obtenga un vector que contenga la suma de otros dos vectores
introducidos por el usuario.
Orientación.
.......
Código.
public class SumaVectores {
/* Suma de vectores */
public static void main(String[] args) {
final int FILAS = 4;
final int COLS = 5;
int j, k;
int vector1 [ ] [ ] = { {13,15,17,19,21},{20,22,24,26,28},{31,33,35,37,39},{40,42,44,46,48} };
int vector2 [ ] [ ] = { {10,11,12,13,14},{15,16,17,18,19},{20,21,22,23,24},{25,26,27,28,29} };
int vector3 [ ] [ ] = new int [FILAS] [COLS];
for (j = 0; j < FILAS; j++) {
for (k = 0; k < COLS; k++) {
vector3 [j] [k] = vector1 [j] [k] + vector2 [j] [k];
System.out.print (vector3 [j] [k]+", ");
}
System.out. println ();
}
}
}