Ejerciciox Finales

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 42

1

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
2

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

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

Dn: 18

23

456

11 12 13 14 15

16 17 18

CÓDIGO

package Matematicas;

import java.util.Scanner;

public class Maim {

public static void main(String[] args) {

Scanner leer =new Scanner(System.in);


3

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

}
4

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.
5

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) {

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


6

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.");

}
7

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);

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;
8

} 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++) {

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();

}
9

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

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.
10

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;

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;
11

b = a % b;

a = temp;

return a;

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.


12

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

mcm(840,450) es:

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);


13

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

int a = scanner.nextInt();

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;
14

a = aux;

return a;

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) {
15

finaliza = leer.nextLine();

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

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


16

CODIGO

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;

}
17

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: ");

int c = scanner.nextInt();
18

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

Incremento de y: - 4.38

X y f(x,y)

2.00 19.00 -0.9781


19

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

import java.util.Scanner;

public class Ejercicio25 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);


20

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) {

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

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

return left + right <= 1.0;

}
21

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

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
22

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);

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;

}
23

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.

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º)
24

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

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();


25

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;

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);


26

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

= " + dif);

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

public static double factorial(int num) {

if (num == 0) {

return 1;

} else {

return num * factorial(num - 1);

}
27

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.

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();


28

int reversedNum = 0;

int originalNum = num;

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");

}
29

CÓDIGO SIN UTILIZAR LAS CADENAS DE JAVA

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");

} else {
30

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.
31

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

GANÓ la computadora.
32

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:

2,3 ó 12 La banca gana

11 ó 7 El jugador gana
33

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

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
34

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

6 4

3 5

6 6

3 4

Gana la banca

¿Seguir jugando (s/n)?: n

El jugador perdió = 800


35

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;

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: ");


36

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 {

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.");
37

break;

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

dado1 + dado2) {

dinero += apuesta;

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

break;

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

String decision = scanner.next();

seguirJugando = decision.equalsIgnoreCase("s");

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

}
38

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
39

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

private static int sumatoria1aN(int n) {

return n * (n + 1) / 2;

}
40

// 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;

return factorial;

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

private static long sumatoria1dN(int n) {


41

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

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();
42

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);

También podría gustarte