Está en la página 1de 61

INSTITUTO

SUPERIOR

TECNOLOGICO

PRIVADA

TEMA:

CURSO: FUNDAMENTOS DE LA PROGRAMACIÓN

PROFESOR: EDER LEGUA ROMERO

INTEGRANTES:

1. ESCALANTE JEFFRY SAMIR

2. YANA BERISARIO RONAL

3. SANTO HANCCOCCALLO RUTH

4. LIMA LINDA
4.8 Problemas
1. Escriba un programa para leer los tres lados de un triángulo (a, b, c). Suponiendo que c es el lado
mayor determinar qué tipo de triángulo es de acuerdo a lo siguiente:
• SÍ C >= a+ b. No se trata de triángulo.
• Si c2 = a2 + b2. Es un triángulo rectángulo.
• Si c2 > a2 + b2. Se forma un triángulo obtusángulo.
• Si c2 < a2 + b2. Se forma un triángulo acutángulo.

a: 4
b: 3
c: 6
Es un triángulo

obtusángulo
import java.util.Scanner;
public class problema1 {

public static void main(String[] args) {


Scanner scanner = new Scanner(System.in);
System.out.println("Introduce el valor de a:");
int a = scanner.nextInt();
System.out.println("Introduce el valor de b:");
int b = scanner.nextInt();
System.out.println("Introduce el valor de c:");
int c = scanner.nextInt();

if (a + b > c && a + c > b && b + c > a) {


if (Math.pow(c, 2) == Math.pow(a, 2) + Math.pow(b, 2)) {
System.out.println("Es un triángulo rectángulo");
} else if (Math.pow(c, 2) > Math.pow(a, 2) + Math.pow(b, 2)) {
System.out.println("Es un triángulo obtusángulo");
} else if (Math.pow(c, 2) < Math.pow(a, 2) + Math.pow(b, 2)) {
System.out.println("Es un triángulo acutángulo");
}
} else {
System.out.println("No se trata de triángulo");
}
}
}
2: Suponer m=7 y n= 13. Colocar en el paréntesis de cada uno de los incisos una “V” si la proposición es
verdadera o “F” si es falsa
a) 2*m<=n ( )
b) 3m-n<n ( )
c) 2m-n>n-m ( )
d) m>0 && (n<34 &&!(m<47)) ( )
e)((n%m)+1)>=m ( )

public class problema2 {


public static void main(String[] args) {
int m = 7;
int n = 13;

// Inciso a
boolean a = 2 * m <= n;
System.out.println("Inciso a: " + (a ? "V" : "F"));

// Inciso b
boolean b = 3 * m - n < n;
System.out.println("Inciso b: " + (b ? "V" : "F"));

// Inciso c
boolean c = 2 * m - n > n - m;
System.out.println("Inciso c: " + (c ? "V" : "F"));

// Inciso d
boolean d = m > 0 && (n < 34 && !(m < 47));
System.out.println("Inciso d: " + (d ? "V" : "F"));

// Inciso e
boolean e = ((n % m) + 1) >= m;
System.out.println("Inciso e: " + (e ? "V" : "F"));
}
3:Un negocio de fotocopiado tiene la siguiente lista de precios.

Cantidad Precio por copia

100 o menos 0.50

101 a 200 0.35

201 a 500 0.25

Mas de 500 0.20

Si una persona ordena /20 copias; las primeras 100 se le cobran a 0.50, las segundas 100 a 0.35, las si-
guantes 300 a 0.25 y las restantes a 0.20. Escribir un programa que lea el nú mero de copias y que
calcule el costo total

Número de copias: 823


Importe — 5224.60

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

System.out.println("Ingrese la cantidad de copias: ");


int cantidadCopias = scanner.nextInt();

double costoTotal = 0;

if (cantidadCopias <= 100) {


costoTotal = cantidadCopias * 0.50;
} else if (cantidadCopias <= 200) {
costoTotal = 100 * 0.50 + (cantidadCopias - 100) * 0.35;
} else if (cantidadCopias <= 500) {
costoTotal = 100 * 0.50 + 100 * 0.35 + (cantidadCopias - 200) * 0.25;
} else {
costoTotal = 100 * 0.50 + 100 * 0.35 + 300 * 0.25 + (cantidadCopias - 500) *
0.20;
}

System.out.println("El costo total es: " + costoTotal);


}
}
4 : Una agencia de alquiler de automóviles tiene la siguiente tarifa:

Recorrido (Km) Tarifa


300 o menos 1200.00 (Fija)

301 a 1000 4.00 c/u

Más de 1000 2.00 c/ u

Escribir un programa para leer el kilometraje inicial y final de un auto y calcular el pago de la renta.

K.Inició: 438
K.Final: 1672 Costo 1200 700 * 4 + (1672 438) 1000) * 2

Costo= $4468.00

import java.util.Scanner;
public class problema4 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("K.Inicial: ");
int kmInicial = scanner.nextInt();

System.out.print("K.Final: ");
int kmFinal = scanner.nextInt();

double tarifa;

if (kmFinal <= 300) {


tarifa = 1200;
} else if (kmFinal <= 1000) {
tarifa = 1200 + 4 * (kmFinal - kmInicial);
} else {
tarifa = 1200 + 4 * (1000 - kmInicial) + 2 * (kmFinal - 1000);
}

System.out.println("Costo $" + tarifa);

scanner.close();
}
}
5:En un comercio se realizan descuentos en función del monto total de la compra, como se muestra
a continuación:

Importe Descuento

500 o menos 0%

Entre 501 y 1000 OO

Entre 1001 y 2000 8%

Más de 2000 10%

Los descuentos solamente se hacen a las cantidades que se encuentran dentro de ese rango; por ejem-
plo, si una persona realiza una compra de $2345.00 el importe a pagar sera el siguiente:

Pago= 500 + 500*95% + l000*92% +345*90% = 2205.50

Escribir un programa para leer el monto de compra y calcular el descuento y cantidad a pagar.

Monto de compra:
3498 Descuento =
$254.80 Pago =
$3243.20
import java.util.Scanner;
public class problema5 {
public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);


System.out.print("Ingrese el monto de compra: ");
double monto = scanner.nextDouble();
scanner.close();

double descuento = calcularDescuento(monto);


double pago = monto - descuento;

System.out.println("Descuento = $" + descuento);


System.out.println("Pago = $" + pago);
}

public static double calcularDescuento(double monto) {


if (monto <= 500) {
return 0;
} else if (monto <= 1000) {
return 0.05 * monto;
} else if (monto <= 2000) {
return 0.08 * monto;
} else {
return 0.10 * monto;
}
}
}
6: Expresar las líneas de código de cada uno de los incisos siguientes, usando solamente condiciones simples:

a) if ((a<b && c!=d) && (b>d l l b==q))


System.out.println (“Hola Pera”);
else
System.out.println (“Adiós manzana”);
b) if ((a*d>-c l l c!—d) && (b-c>a | d%c-
=a)) System.out.println (“Hola pera”);
else
System.out.println (“Adiós manzana”);

a) if ( ( a < b && c != d ) && ( b > d || b == q ) ) { System.out.println ( " Hola Pera " ) ; } else
{ System.out.println ( " Adiós manzana " ) ; }

b) if ( ( a * d >= c || c != d ) && ( b - c > a || d % c == a ) ) { System.out.println ( " Hola pera " ) ;


System.out.println ( " Adiós manzana " ) ; } else {

7: 5i a=1, b=2, c=3, d=4. ¿Cuá l es el resultado de la salida en cada uno de los incisos del proble-
ma anterior.

import java.util.Scanner;
public class problema7 {
public static void main(String[] args) {
int a = 3, b = 5, c = 4, d = 3, q = 7;

if ( ( a < b && c != d ) && ( b > d || b == q ) ) {


System.out.println ( " Hola Pera " ) ;
} else {
System.out.println ( " Adiós manzana " ) ;
}

if ( ( a * d >= c || c != d ) && ( b - c > a || d % c == a ) ) {


System.out.println ( " Hola pera " ) ;
System.out.println ( " Adiós manzana " ) ;
} else {

}
}
}
8:Los obreros de una fábrica de jabones pueden laborar en tres turnos: matutino, vespertino y nocturno, además
podrían trabajar horas extras en caso de ser necesario. El pago por hora de cada una de las opciones se
muestra en la siguiente tabla:

Turno Pago por hora


Matutino $20.00
Vespertino $28.00
Nocturno $35.00
Extra (Cualquier turno) $50.00
Los trabajadores laboran 40 o más horas a la semana, las que excedan a esa cantidad se consideran
horas extras. Se hará un descuento de 18%, por concepto de impuesto sobre la renta (ISR).
Escribir un programa para leer el turno y número de horas laboradas por el trabajador y calcular el

salario semanal. Considerar que el código de los turnos es: 1 = matutino, 2= vespertino, 3 = nocturno.

Turno: 2
Horas: 47
Salario= $1470.00
Descuento=$264.60
Salario neto esta semana: $1205.40
import java.util.Scanner;
public class problema8 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("Turno: ");
int turno = scanner.nextInt();

System.out.print("Horas: ");
int horas = scanner.nextInt();

double salario = 0;

switch (turno) {
case 1:
salario = 20.00;
break;
case 2:
salario = 28.00;
break;
case 3:
salario = 35.00;
break;
default:
System.out.println("Turno inválido.");
return;
}

double salario_horas_extra = 50.00;


double salario_base = salario * 40;
double salario_extra = salario_horas_extra * (horas - 40);
double salario_semanal = salario_base + salario_extra;
double descuento = salario_semanal * 0.18;
double salario_neto = salario_semanal - descuento;

System.out.printf("Salario $%.2f%n", salario_semanal);


System.out.printf("Descuento $%.2f%n", descuento);
System.out.printf("Salario neto esta semana: $%.2f%n", salario_neto);
}
}

El código de los meses del año es: 1: Enero, 2: Febrero,12: Diciembre. Escribir un programa para
leer el año y código dcl mes. Con esa información desplegar en la pantalla el nńmero de dias que tiene
dicho mes. El programa deberź seguir leyendo información hasta que el código dcl mes sea 999. Con- siderar
tambićn los ańos bisiestos; se sabe que un ańo es bisiesto si es mćiltiplo de 4, es decir si el resto de dividir el
ańo entre 4 es cero.

Mes: 6
Año: 1987
Junio tiene 30 días
Mes: 2
Aíío: 2008
Febrero tiene 29 días
Mes: 999

Código en java:

import java.util.Scanner;

public class problema9 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);


int codigoMes, ano;

do {
System.out.print("Ingrese el código del mes (1-12) o 999 para salir: ");
codigoMes = scanner.nextInt();

if (codigoMes != 999) {
System.out.print("Ingrese el año: ");
año = scanner.nextInt();

int dias = 0;

switch (codigoMes) {
case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:
dias = 31;

break;
case 4:
case 6:
case 9:
case 11:
dias = 30;
break;
case 2:
if (ano % 4 == 0) {
dias = 29;
} else {
dias = 28;
}
break;
default:
System.out.println("Código de mes no válido");
break;
}

if (dias != 0) {
System.out.println(codigoMes + " tiene " + dias + " días");
}
}
} while (codigoMes != 999);

scanner.close();
}
}
10:Escribir un programa para elaborar’ una tabla de conversiones entre las unidades
metros(m), l‹ilómetros(km) y millas(mi) tomando en cuenta las siguientes equivalencias:

1 km - 1000 m 1mi - 1609 m

Se leerá el inicio, final e incremento en metros de la tabla de con versión.

Inicio: 0

Final: 1000

Incremento: 260

Metros Kilómetros Millas


0 0.0000 0.0000
260 0.2600 0.1616
520 0.5200 0.3232
780 07800 04848
1040 1,0400 0.6464

Código java:

import java.util.Scanner;

public class problema10 {


public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

System.out.println("Inicio: ");
int inicio = scanner.nextInt();

System.out.println("Final: ");
int finalVal = scanner.nextInt();

System.out.println("Incremento: ");
int incremento = scanner.nextInt();

System.out.println("Metros\tKilometros\tMillas");

for (int i = inicio; i <= finalVal; i += incremento) {


double km = i / 1000.0;
double mi = i / 1609.0;

System.out.printf("%d\t%.4f\t\t%.4f%n", i, km, mi);


}
}

11:Escribir un programa para imprimir todos los pares de números que suman una cantidad determina- da
c, en un intervalo dado m y n.

De: —5

A: 8

Suma: 13

Pares cuya suma es 13

5 8
Código java:

public class problema11 {

public static void main(String[] args) {


Scanner leer = new Scanner(System.in);

System.out.println("de: ");
int m = leer.nextInt();

System.out.println("Ingrese el valor de a: ");


int a = leer.nextInt();

System.out.println("suma: ");
int c = leer.nextInt();

int count = 2;

System.out.println("Pares cuya suma es " + c + ":");

for (int i = m; i <= a; i++) {


for (int j = i; j <= a; j++) {
if (i + j == c) {
System.out.println(i + " " + j);
count++;
}
}
}

System.out.println("Total de pares = " + count);


}
}
12:Escribir un programa para realizar una clivisión de dos cantidades enteras, exclusivamente con restas.
Las cantidades pueden ser del mismo si¡_,no o de signo contrario. Obtener el cociente y el residuo.

Di› idendo: 25 Dividendo: -14

Divisor: 7 Di isor: 3

Dividendo:17

Divisor: —6
public class problema12 {
public static void main(String[] args) {

Scanner leer = new Scanner(System.in);

System.out.println("Turno: 1 = matutino, 2 = vespertino, 3 = nocturno");


System.out.print("Ingrese el turno: ");
int turno = leer.nextInt();

System.out.print("Ingrese el número de horas laboradas: ");


int horas = leer.nextInt();

double salario;
double descuento;
double salarioNeto;

if (turno == 1) {
salario = horas * 20;
} else if (turno == 2) {
salario = horas * 28;
} else if (turno == 3) {
salario = horas * 35;
} else {
System.out.println("Turno no válido.");
return;
}

if (horas > 40) {


int horasExtras = horas - 18;
salario += horasExtras * 50;
}

descuento = salario * 0.18;


salarioNeto = salario - descuento;

System.out.println("Salario $" + salario);


System.out.println("Descuento - $" + descuento);
System.out.println("Salario neto esta semana: $" + salarioNeto);

}
}
13:¡Escribir un programa para imprimir las tablas de multiplicar del 1 a! 10 de la siguiente manera6

10. Tabla del 1 Tabla del 2 Tabla del 3 Tabla del 4 Tabla del 5
1X1= 1 2X1= 2 3X1= 3 4X1= 4 5X1= 5

1X2= 2 2X2= 4 3X2= 6 4X2= 8 5x2= 1


11.
0
12. 1 X 10 = 10 2 X 10 = 20 3 X 10 = 30 4 X 10 = 40 5X 10 = 50

13. Tabla del 6 Tabla del 7 Tabla del 8 Tabla del 9 Tabla del 10
6X1 6 7X1= 7 8X1 8 9X1= 9 10 >( 1 10

6=X 2 12 7X2= 1 8=X 2 16 9X2= 18 10 X 2 20

X 10 == 60 7 X 10 = 704 8X
= 10 = 80 9 X 10 = 90 10 X 10 = 100

A=Hacer el programa primeramente sin usar métodos.


B= Hacerlo usando un método para desplegar las tablas
16

Código java:
public class problema13 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println("Tabla del " + i);
for (int j = 1; j <= 10; j++) {
System.out.println(i + " X " + j + " = " + (i * j));
}
}
}
}

public class problema13 {

public static void main(String[] args) {


for (int i = 1; i <= 10; i++) {
desplegarTabla(i);
}
}

public static void desplegarTabla(int num) {


System.out.println("Tabla del " + num);
for (int i = 1; i <= 10; i++) {
System.out.println(num + " X " + i + " = " + (num * i));
}
}
}
17

14. Escribir un programa para imprimir los números enteros positivos entre 1 y n, en orden

sucesivo por renglón, según lo siguiente:

a) En el primer renglón va solamente el 1

Dn: 18

23

456

11 12 13 14 15

16 17 18

b) A partir del segundo renglón se escribe un número más que en el renglón anterior.

CÓDIGO

package Matematicas;

import java.util.Scanner;

public class Maim {


18

public static void main(String[] args) {

Scanner leer =new Scanner(System.in);

System.out.print("Dn: ");

int n = leer.nextInt();

int count = 1; // Esta variable se usará para imprimir los números

for(int i = 1; i <= n; i++) {

for(int j = 1; j <= i; j++) {

System.out.print(count + " ");

count++;

System.out.println(); // Esto imprime un salto de línea después de cada renglón

}
19

15. La amistad es difícil de encontrar. Se dice que dos números A y B son amigos, si la suma

de los divisores de A (sin considerar al número A) es igual B, y si la suma de los divisores de B

es igual a A. Ejemplo.

Los divisores de A=28 son: suma1=1+2+4+7+14=28 y los divisores de B=28 son suma2=1

+2+4+7+14=28. Por lo tanto A y B son amigos.

Escribir un programa para encontrar todos los números amigos comprendidos entre 1 y n.

Escribir el programa:

a) Sin utilizar métodos.

b) Utilizando una función para sumar los divisores de los números

16. Se dice que un número es "caprichoso" si la suma de sus dígitos elevada a cierta potencia

n es igual

al mismo número. Los números siguientes son caprichosos si la suma de sus dígitos se eleva a

la potencia 3.

4913 = (4+9+1+3)3 = 4913

5832 = (5+8+3+2)3 = 5832

Escribir un programa para imprimir y contar los números caprichosos entre a y b, para una

potencia de n.
20

17. Se dice que un número x es "raro" si se cumple que: 3m + s = x. Donde m resulta de

escribir el

número x en orden inverso, y s es la suma de las cifras de x. Ejemplo:

Para x=51;

Se cumple que:

m=15; s=6;

3(15) + 6 = 51

Por lo tanto 51 es un número raro. Escribir un programa para listar todos los números raros

entre 1.

CÓDIGO

public class Ejercicio17 {

public static void main(String[] args) {


21

System.out.println(" n:600 ");

System.out.println(" numeros raros entre 1 y 600 ");

int a = 1; // Aquí puedes cambiar el valor de a

int b = 1000; // Aquí puedes cambiar el valor de b

for(int x = a; x <= b; x++) {

int m = 0;

int s = 0;

int num = x;

while(num > 0) {

m = m * 10 + num % 10;

s += num % 10;

num /= 10;

if(3 * m + s == x) {

System.out.println(x + " es un número raro.");

}
22

18. Suponer que el precio de todos los productos en una tienda departamental es una cantidad

entera. Escribir un programa que lea de teclado el precio de cada uno de los productos que un

cliente compra en dicha tienda, deja de leer precios de productos cuando el precio sea igual a -1.

Después de leer los precios de los productos se debe leer también la cantidad entera con que paga

el cliente. Finalmente deberá imprimir el cambio en billetes (o monedas) de 500, 200, 100, 50,

20, 10, 5, 2 y 1 pesos. Se requiere que la computadora indique el cambio con los billetes o

monedas de mayor denominación.

CÓDIGO

import java.util.Scanner;

public class Ejercicio18 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);


23

int sum = 0;

int paid;

int price;

do {

System.out.print("Ingrese el precio del producto (-1 para terminar): ");

price = scanner.nextInt();

if (price != -1) {

sum += price;

} while (price != -1);

System.out.print("Ingrese la cantidad con la que paga: ");

paid = scanner.nextInt();

System.out.println("Cambio:");

int payment = scanner.nextInt();

int remaining = paid - sum;

int num_notes[] = {500, 200, 100, 50, 20, 10, 5, 2, 1};

for (int i = 0; i < num_notes.length; i++) {


24

int count = remaining / num_notes[i];

remaining %= num_notes[i];

if (count > 0) {

System.out.println(count + " billete(s) de " + num_notes[i] + " pesos");

scanner.close();

19. El mínimo común múltiplo (mcm) de dos números a y b es el menor número natural que

es múltiplo de ellos. El mcm(a, b) se puede encontrar al multiplicar los factores primos comunes

y no comunes elevados a su mayor potencia.

El máximo común divisor (mcd) de dos números a y b es el mayor número que los divide. El

mcd(a, b), se puede encontrar al multiplicar los factores comunes con su menor exponente.

Para encontrar el mcm(50, 12) y el mcd(50, 12) se descomponen en sus factores primos cada

uno de ellos:

factores 50
50 2 2

25 5
25 5

5 5
5 5

1
1
25

De tal manera que a = 50=2.52 y b=12=22.3.

El mcm(50, 12) = 52.22.3 = 300. Ya que se tomaron los factores no comunes 52 y 3, además

del factor común de mayor exponente 22.

El mcd(50, 12) = 2, que es el único factor que es común a ambos números con el menor

exponente. Escribir un programa para leer dos números enteros positivos a y b. Descomponer

dichos números en sus factores. Encontrar el mcm(a, b) y el mcd(a, b), usando el método

anteriormente descrito.

A:450

B:840

Factores

450=2*3*3*5*5

840=2*2*2*3*3*5*5*7

CODIGO

import java.util.Scanner;
26

public class Ejerciocios {

public static void main(String[] args) {

int a = 450;

int b = 840;

System.out.println("mcm(450, 840) = " + mcm(a, b));

System.out.println("mcd(450, 840) = " + mcd(a, b));

public static int mcm(int a, int b) {

return a * b / mcd(a, b);

public static int mcd(int a, int b) {

while (b != 0) {

int temp = b;

b = a % b;

a = temp;

return a;

}
27

20. Existe relación entre el mcm y el mcd de los números a y b, ya que conociendo el

mcd(a,b) es posible

conocer el mcm(a,b), aplicando la siguiente fórmula.

El matemático Griego Euclides, diseñó un algoritmo para encontrar el mcd(a, b). El algoritmo

con- siste en llevar a cabo divisiones Euclidianas sucesiva. En la primera división, se toma como

dividendo el mayor de los números y como divisor el otro. Luego el divisor y el resto se utilizan

respectivamente como dividendo y divisor en la siguiente división. Se deja de iterar hasta que se

obtiene como resul- tado un resto de cero y el mcd(a, b) es el penúltimo resto obtenido.

Ejemplo. Para encontrar el mcd(840, 450) y el mcm(840, 450) usando el algoritmo de

Euclides se procede de la siguiente manera.

Por lo tanto mcd(840,450) = 30, ya que fue el penúltimo resto encontrado. El mcm(840,450)

es:
28

Escribir un programa para leer dos números enteros positivos a y b. Encontrar el mcm(a, b) y

el mcd(a, b), usando el algoritmo de Euclides.

A:4200

B:234

Iteración Dividendo Divisor Resto

1 4200 234 222

2 234 222 12

3 222 12 6

CODIGO

import java.util.Scanner;

public class Ejercicio20 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("Ingrese el primer número: ");

int a = scanner.nextInt();
29

System.out.println("Ingrese el segundo número: ");

int b = scanner.nextInt();

int mcd = mcd(a, b);

int mcm = a * b / mcd;

System.out.println("El máximo común divisor (mcd) de " + a + " y " + b + " es: " +

mcd);

System.out.println("El mínimo común múltiplo (mcm) de " + a + " y " + b + " es: " +

mcm);

public static int mcd(int a, int b) {

while (b != 0) {

int aux = b;

b = a % b;

a = aux;

return a;
30

21. Se considera que una frase palíndroma es aquella que se escribe igual al derecho y al revés

ignorando los espacios. Ejemplo de una frase palíndroma es “hola nena an enaloh”. Escriba un

programa con un método que acepte una frase de teclado y que determine si se trata de una frase

palíndroma o no. Leer varias frases hasta que la frase sea "finaliza"

Frase: esto es interesante

Etnaseret ni se etse = > No es frase palíndroma

Frase: el árbol les selo brale

CODIGO

import java.util.Scanner;

public class Ejercicios21 {

public static void main(String[] args) {

Scanner leer = new Scanner(System.in);

System.out.println("Escribe frases, la frase \"Frase\" terminará el programa");

String finaliza;

while (true) {

finaliza = leer.nextLine();

if (finaliza.equalsIgnoreCase("finaliza")) {
31

break;

System.out.println(esPalindromo(finaliza) ? "Es palíndromo" : "No es palíndromo");

public static boolean esPalindromo(String finaliza) {

String normalizado = finaliza.replaceAll(" ", "").toLowerCase();

StringBuilder reversa = new StringBuilder(normalizado);

reversa.reverse();

return normalizado.equals(reversa.toString());

22. Escribir un programa con un método que acepte una frase como parámetro y que regrese

al punto donde fue llamado el método, para imprimir el número de palabras de la frase y el

promedio de letras de las palabras. Considerar que la frase puede tener palabras separadas por

uno o más espacios.

Frase: el León no es como lo pintan

La frase tiene 7 palabras

CODIGO
32

public static String cuantasPalabras(String frase) {

int palabras = 0;

int letras = 0;

for (int i = 0; i < frase.length(); i++) {

if (frase.charAt(i) == ' ') {

palabras++;

} else {

letras++;

if (letras != 0) {

palabras++;

String resultado = "La frase tiene " + palabras + " palabras";

resultado += "\nPromedio de letras de las palabras = " + (letras / palabras);

return resultado;
33

23. Escribir un programa para leer tres números (a, b y c) de teclado y encontrar el promedio

aritmético de ellos por medio de una función.

A:9

B:5

C:8

Promedio =7.33

CODIGO

import java.util.Scanner;

public class Ejercicio23 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("A: ");

int a = scanner.nextInt();

System.out.println("B: ");

int b = scanner.nextInt();

System.out.println("C: ");
34

int c = scanner.nextInt();

double promedio = calcularPromedio(a, b, c);

System.out.println("El promedio aritmético es: " + promedio);

public static double calcularPromedio(int a, int b, int c) {

return (a + b + c) / 3.0;

24. Escribir un programa para leer el número de puntos a tabular "n", los valores de las

variables "x" y "y", con su correspondiente incremento. Con esta información desplegar en una

tabla los valores de las variables y el valor de la función, usando la siguiente expresión

matemática:

N:4

X:2

Incremento de x: 0.76

Y:19
35

25. Escribir un programa para contar los puntos con coordenadas enteras que se encuentran en la

siguiente elipse.

(x^2/16) + (y^2/25) = 1

* Considerar que los puntos sobre la elipse están dentro de ella.

* El intervalo de coordenadas está limitado por los ejes mayor y menor de la elipse. En este

caso

-4<=x<=4y-5<=y<=5

* Imprimir las parejas de puntos dentro de la elipse cuya suma sea la indicada por teclado.

Imprimir puntos donde (x+y) sea: 8

Puntos dentro de la elipse cuya suma es x+y=8

(3,5)

(4,4)

Total, dentro de la elipse = 95

CÒDIGO JAVA
36

import java.util.Scanner;

public class Ejercicio25 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("Imprimir puntos donde (x+y) sea: ");

int sum = scanner.nextInt();

int count = 0;

for (int x = -4; x <= 4; x++) {

for (int y = -5; y <= 5; y++) {

if (isPointInsideElipse(x, y) && (x + y == sum)) {

System.out.println("(" + x + "," + y + ")");

count++;

System.out.println("Total dentro de la elipse = " + count);

public static boolean isPointInsideElipse(int x, int y) {


37

double left = (x * x) / (16.0 * 16.0);

double right = (y * y) / (25.0 * 25.0);

return left + right <= 1.0;

26. Escribir un programa para tabular n puntos de la parábola y =3x"—4x+5. Leer los valores

de n, x y el incremento de x. El programa deberá funcionar:

a) Sin utilizar funciones.

a) Utilizando una función para encontrar el valor del polinomio.

In: 6

x: 3.23

Incremento de x: .75

Punto x y=3x^2-4x+5

1 3.23 23.3787
38

2 3.98 36.6012

3 4.73 53.1987

4 5.48 73.1712

5 6.23 96.5187

6 6.98 123.2412

CÓDIGO JAVA

import java.util.Scanner;

public class Ejercicio26 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("Escriba los valores de n, x e incremento de x: ");

int n = scanner.nextInt();

double x = scanner.nextDouble();

double incremento = scanner.nextDouble();

for (int i = 1; i <= n; i++) {

double y = polinomio(x);
39

System.out.println("Punto " + i + " x=" + x + " y=" + y);

x += incremento;

public static double polinomio(double x) {

return 3 * Math.pow(x, 2) - 4 * x + 5;

27. Escribir un programa para calcular el valor real de cos(s). Leer de teclado el valor de x y

el error permitido. Aproximar cos(x) al valor real usando la serie que se muestra a continuación.

El programa

terminará cuando el error entre la función real y la aproximada sea menor o igual al error

permitido.
40

Tabular los resultados de cada iteración hasta lograr la exactitud indicada.

cos(x) = 1 + ∑_(n=1)^∞▒(-1)^n(x^2n)/(2n)!01-(x^2/2!)+(x^4/4!)+(x^6/6!)+...

Usar una función para calcular la factorial y otra para calcular e imprimir cada uno de los

términos

que se van sumando. Leer el ángulo en grados, pero considerar que los ángulos de las

funciones trigonométricas se deben expresar en radianes en la mayoría de los lenguajes de

programación. (π

rad=180º)

x:60

Error: 0.001

cos(x) real = 0.500000

n cos(x) Aprox. Diferencia

0 1 0.500002

1 0.45168608 0.048312

2 0.501794106 0.001796
41

5 0.499962444 0.000035

CÓDIGO JAVA

import java.util.Scanner;

public class Ejercicio27 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("Escriba el valor de x, el error permitido y la precisión: ");

double x = scanner.nextDouble();

double errorPermitido = scanner.nextDouble();

int precision = scanner.nextInt();

x = Math.toRadians(x); // Convertir ángulo a radianes

double cosxReal = Math.cos(x);

System.out.println("cos(x) real = " + cosxReal);

double cosxAprox = 1.0;

double dif;
42

int n = 0;

do {

n++;

double fact = factorial(2 * n);

double pow = Math.pow(-1, n);

double numerador = pow * Math.pow(x, 2 * n);

double denominador = fact;

double termino = numerador / denominador;

cosxAprox += termino;

dif = Math.abs(cosxReal - cosxAprox);

System.out.println("n = " + n + " cos(x) Aprox. = " + cosxAprox + " Diferencia = "

+ dif);

} while (dif > errorPermitido && n <= precision);

public static double factorial(int num) {


43

if (num == 0) {

return 1;

} else {

return num * factorial(num - 1);

28. Un número es palíndromo si es el mismo al derecho y al revés. Escribir un programa para

leer un

número entero y determinar si el número leído es palíndromo. Hacerlo de las siguientes

maneras diferentes:

a) Apoyándose en las funciones cadena de Java.


44

b) Sin utilizar las cadenas de Java.

Número: 1704071

Con apoyo de funciones cadena de Java.

1704071 es palíndromo

Tratándolo como número

Es palíndromo 1704071

CÓDIGO CON APOYO DE FUNCIONES DE CADENA DE JAVA

import java.util.Scanner;

public class Ejercicio28 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("Escriba el número: ");

int num = scanner.nextInt();

int reversedNum = 0;

int originalNum = num;


45

while (num != 0) {

int digit = num % 10;

reversedNum = reversedNum * 10 + digit;

num /= 10;

if (originalNum == reversedNum) {

System.out.println(originalNum + " es palíndromo");

} else {

System.out.println(originalNum + " no es palíndromo");

CÓDIGO SIN UTILIZAR LAS CADENAS DE JAVA


46

import java.util.Scanner;

public class Ejercicio28_sinfunciones {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("Escriba el número: ");

int num = scanner.nextInt();

int reversedNum = 0;

int originalNum = num;

while (num != 0) {

int lastDigit = num % 10;

reversedNum = reversedNum * 10 + lastDigit;

num /= 10;

if (originalNum == reversedNum) {

System.out.println(originalNum + " es palíndromo");


47

} else {

System.out.println(originalNum + " no es palíndromo");

29. Escribir un programa para un juego en donde se realiza lo siguiente:

a) Se lee el nombre del jugador.

b) Se genera un número al azar mayor que 13

c) El jugador resta una cantidad entre 1 y 3. Posteriormente la computadora también restará

una cantidad entre 1 y 3.

El juego terminará cuando el número se reduce a 0. Ganará la computadora (o el usuario) si se

apoderan del 0. Hay números clave que se deben de tomar, asegurarse que la computadora gane,

si se llega a apoderar antes que el usuario de alguno de esos números clave.


48

run:

Nombre: Juan

Número generado: 15

Juan resta: 3

Número= 12

Compu. resta: 2

Número= 10

Juan resta: 3

Número= 7

Compu. resta: 3

Número= 4

Juan resta: 1

Número= 3

Compu. resta: 3

Número= 0
49

GANÓ la computadora.

30. El juego de dados es muy común en ferias y casinos. En dicho juego hay una banca

representada por

la persona que atiende, el jugador, una mesa con el número 7 al centro de dicha mesa, los

números

menores que 7 (2, 3,4, 5, 6) a la izquierda de la mesa y los mayores (8, 9, 10, 11, 12) a la

derecha.

El jugador coloca la cantidad apostada en el número 7, después se lanzan por primera vez los

dados.

Si el resultado de este primer lanzamiento sumando los dos dados es:


50

2,3 ó 12 La banca gana

11 ó 7 El jugador gana

Si no es ninguno de los resultados anteriores, la cantidad apostada por el jugador se pasa al

número

que salió. Supóngase que salió el 8 entonces la cantidad se pasa al número 8. El jugador

deberá seguir

lanzando los dados hasta obtener el número de la primera tirada (en este caso el 8) o bien

obtener el

número 7. Ganará:

a) El jugador; si obtiene nuevamente cl número que lanzó en la primera tirada,

b) La banca; si el número que sale es el 7.

Después de la primera tirada pueden salir el 2, 3, 12 ó 11 varias veces y nadie gana, ya que se

deberán seguir haciendo lanzamientos hasta obtener el número lanzado en la primera tirada o el

7.

Escribir un programa para simular el juego de dados. Considerar que la banca es la

computadora
51

y el usuario es el jugador. Primeramente preguntará el monto de la apuesta, deberán aparecer

los resultados de los lanzamientos en la pantalla, indicar quien ganó y preguntar si se desea

seguir jugando.

Al final informar las pérdidas o ganancias del jugador.

Los números que se generan aleatoriamente en un lenguaje de programación tienen una

distribución uniforme, esto significa que tienen la misma probabilidad de ser elegidos. Tomando

en cuenta esto; para la simulación del juego de dados se deben hacer los ajustes

correspondientes, teniendo en cuenta que la probabilidad de los diferentes resultados de los

números que se obtienen a lanzar los dados

(2=1/36, 3=2/36, 4=3/36, 5=4/36, 6=5/36, 7=6/36, 8=5/36, ....12= 1/36).

Monto de la apuesta: 1000

Primer lanzamiento.

2 5

Gana jugador

¿Seguir jugando (s/n)?: s

Monto de la apuesta: 1800

Primer lanzamiento.

4 2

Lanzamientos siguientes
52

6 4

3 5

6 6

3 4

Gana la banca

¿Seguir jugando (s/n)?: n

El jugador perdió = 800

CÓDIGO JAVA

import java.util.Random;

import java.util.Scanner;

public class Ejercicio30 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

Random random = new Random();

int dinero = 0;

boolean seguirJugando = true;


53

while (seguirJugando) {

System.out.println("Ingrese el monto de la apuesta: ");

int apuesta = scanner.nextInt();

int dado1 = random.nextInt(6) + 1;

int dado2 = random.nextInt(6) + 1;

int resultado = dado1 + dado2;

System.out.println("Primer lanzamiento: ");

System.out.println(dado1 + " " + dado2);

if (resultado == 2 || resultado == 3 || resultado == 12 || resultado == 7) {

dinero += apuesta;

System.out.println("Gana jugador.");

} else if (resultado == 11) {

dinero -= apuesta;

System.out.println("Gana la banca.");

} else {
54

while (true) {

dado1 = random.nextInt(6) + 1;

dado2 = random.nextInt(6) + 1;

resultado = dado1 + dado2;

System.out.println("Lanzamientos siguientes: ");

System.out.println(dado1 + " " + dado2);

if (resultado == 7) {

dinero -= apuesta;

System.out.println("Gana la banca.");

break;

} else if (resultado == 2 || resultado == 3 || resultado == 12 || resultado == dado1

+ dado2) {

dinero += apuesta;

System.out.println("Gana jugador.");

break;

}
55

System.out.println("¿Seguir jugando (s/n)?: ");

String decision = scanner.next();

seguirJugando = decision.equalsIgnoreCase("s");

System.out.println("El jugador perdió = " + dinero);

}
56

31. Escribir un programa que lea el valor de n y encuentre el resultado en forma recursiva de

cada una de las series de los siguientes incisos:

a) Sumatoria: 1+2+3+...+n

b) Sumatoria: -1 +2-3+4—5+...+(-1)^n n

c) Factorial: n!=1`2`3`...`(n—1)*n

d) Sumatoria: 1+4+9+....+n^2
57

CÓDIGO JAVA

import java.util.Scanner;

public class Ejercicio31 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("Ingrese el valor de n:");

int n = scanner.nextInt();

// Calcular y mostrar los resultados

System.out.println("Sumatoria (1+2+3+...+n): " + sumatoria1aN(n));

System.out.println("Sumatoria (-1 +2-3+4—5+...+(-1)^n n): " + sumatoria1bN(n));

System.out.println("Factorial (n!=1`2`3`...`(n—1)*n): " + factorial(n));

System.out.println("Sumatoria (1+4+9+....+n^2): " + sumatoria1dN(n));

// a) Sumatoria: 1+2+3+...+n
58

private static int sumatoria1aN(int n) {

return n * (n + 1) / 2;

// b) Sumatoria: -1 +2-3+4—5+...+(-1)^n n

private static int sumatoria1bN(int n) {

int sumatoria = 0;

for (int i = 1; i <= n; i++) {

sumatoria += ((-1) ^ i + 1) * i;

return sumatoria;

// c) Factorial: n!=1`2`3`...`(n—1)*n

private static long factorial(int n) {

long factorial = 1;

for (int i = 1; i <= n; i++) {

factorial *= i;
59

return factorial;

// d) Sumatoria: 1+4+9+....+n^2

private static long sumatoria1dN(int n) {

return n * (n + 1) * (2 * n + 1) / 6;

32. Escribir un programa para encontrar el nesimo término de la serie de Fibonacci en forma

recursiva.

Valor de n: 6

El elemento 6 de Fibonacci es = 8
60

CÓDIGO JAVA

import java.util.Scanner;

public class Ejercicio32 {

public static void main(String[] args) {

Scanner scanner = new Scanner (System.in);

System.out.println("Ingrese el valor de n:");

int n = scanner.nextInt();

System.out.println("El elemento " + n + " de Fibonacci es = " + fibonacci(n));

private static int fibonacci(int n) {

if (n <= 1) {

return n;

return fibonacci(n - 1) + fibonacci(n - 2);


61

También podría gustarte