Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SUPERIOR
TECNOLOGICO
PRIVADA
TEMA:
INTEGRANTES:
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 {
// 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.
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
import java.util.Scanner;
public class problema3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double costoTotal = 0;
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 {
System.out.print("K.Inicial: ");
int kmInicial = scanner.nextInt();
System.out.print("K.Final: ");
int kmFinal = scanner.nextInt();
double 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%
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:
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) {
a) if ( ( a < b && c != d ) && ( b > d || b == q ) ) { System.out.println ( " Hola Pera " ) ; } else
{ System.out.println ( " Adiós manzana " ) ; }
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;
}
}
}
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:
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 {
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;
}
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;
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:
Inicio: 0
Final: 1000
Incremento: 260
Código java:
import java.util.Scanner;
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");
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
5 8
Código java:
System.out.println("de: ");
int m = leer.nextInt();
System.out.println("suma: ");
int c = leer.nextInt();
int count = 2;
Divisor: 7 Di isor: 3
Dividendo:17
Divisor: —6
public class problema12 {
public static void main(String[] args) {
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;
}
}
}
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
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
X 10 == 60 7 X 10 = 704 8X
= 10 = 80 9 X 10 = 90 10 X 10 = 100
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));
}
}
}
}
14. Escribir un programa para imprimir los números enteros positivos entre 1 y n, en orden
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;
System.out.print("Dn: ");
int n = leer.nextInt();
count++;
}
19
15. La amistad es difícil de encontrar. Se dice que dos números A y B son amigos, si la suma
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
Escribir un programa para encontrar todos los números amigos comprendidos entre 1 y n.
Escribir el programa:
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.
Escribir un programa para imprimir y contar los números caprichosos entre a y b, para una
potencia de n.
20
escribir el
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
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) {
}
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
CÓDIGO
import java.util.Scanner;
int sum = 0;
int paid;
int price;
do {
price = scanner.nextInt();
if (price != -1) {
sum += price;
paid = scanner.nextInt();
System.out.println("Cambio:");
remaining %= num_notes[i];
if (count > 0) {
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
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
El mcm(50, 12) = 52.22.3 = 300. Ya que se tomaron los factores no comunes 52 y 3, además
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
int a = 450;
int b = 840;
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
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.
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
A:4200
B:234
2 234 222 12
3 222 12 6
CODIGO
import java.util.Scanner;
int a = scanner.nextInt();
29
int b = scanner.nextInt();
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);
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"
CODIGO
import java.util.Scanner;
String finaliza;
while (true) {
finaliza = leer.nextLine();
if (finaliza.equalsIgnoreCase("finaliza")) {
31
break;
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
CODIGO
32
int palabras = 0;
int letras = 0;
palabras++;
} else {
letras++;
if (letras != 0) {
palabras++;
return resultado;
33
23. Escribir un programa para leer tres números (a, b y c) de teclado y encontrar el promedio
A:9
B:5
C:8
Promedio =7.33
CODIGO
import java.util.Scanner;
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();
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
* 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.
(3,5)
(4,4)
CÒDIGO JAVA
36
import java.util.Scanner;
int count = 0;
count++;
26. Escribir un programa para tabular n puntos de la parábola y =3x"—4x+5. Leer los valores
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;
int n = scanner.nextInt();
double x = scanner.nextDouble();
double y = polinomio(x);
39
x += incremento;
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
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
programación. (π
rad=180º)
x:60
Error: 0.001
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;
double x = scanner.nextDouble();
double dif;
42
int n = 0;
do {
n++;
cosxAprox += termino;
System.out.println("n = " + n + " cos(x) Aprox. = " + cosxAprox + " Diferencia = "
+ dif);
if (num == 0) {
return 1;
} else {
leer un
maneras diferentes:
Número: 1704071
1704071 es palíndromo
Es palíndromo 1704071
import java.util.Scanner;
int reversedNum = 0;
while (num != 0) {
num /= 10;
if (originalNum == reversedNum) {
} else {
import java.util.Scanner;
int reversedNum = 0;
while (num != 0) {
num /= 10;
if (originalNum == reversedNum) {
} else {
apoderan del 0. Hay números clave que se deben de tomar, asegurarse que la computadora gane,
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.
11 ó 7 El jugador gana
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á:
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.
computadora
51
los resultados de los lanzamientos en la pantalla, indicar quien ganó y preguntar si se desea
seguir jugando.
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
Primer lanzamiento.
2 5
Gana jugador
Primer lanzamiento.
4 2
Lanzamientos siguientes
52
6 4
3 5
6 6
3 4
Gana la banca
CÓDIGO JAVA
import java.util.Random;
import java.util.Scanner;
int dinero = 0;
while (seguirJugando) {
dinero += apuesta;
System.out.println("Gana jugador.");
dinero -= apuesta;
System.out.println("Gana la banca.");
} else {
54
while (true) {
dado1 = random.nextInt(6) + 1;
dado2 = random.nextInt(6) + 1;
if (resultado == 7) {
dinero -= apuesta;
System.out.println("Gana la banca.");
break;
+ dado2) {
dinero += apuesta;
System.out.println("Gana jugador.");
break;
}
55
seguirJugando = decision.equalsIgnoreCase("s");
}
56
31. Escribir un programa que lea el valor de n y encuentre el resultado en forma recursiva de
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;
int n = scanner.nextInt();
// a) Sumatoria: 1+2+3+...+n
58
return n * (n + 1) / 2;
// b) Sumatoria: -1 +2-3+4—5+...+(-1)^n n
int sumatoria = 0;
sumatoria += ((-1) ^ i + 1) * i;
return sumatoria;
// c) Factorial: n!=1`2`3`...`(n—1)*n
long factorial = 1;
factorial *= i;
59
return factorial;
// d) Sumatoria: 1+4+9+....+n^2
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;
int n = scanner.nextInt();
if (n <= 1) {
return n;