feat(ch 3): added bl 3 & 4

This commit is contained in:
Rafa Muñoz
2024-10-15 13:47:37 +02:00
parent 848df6c340
commit 1d1ad19429
9 changed files with 286 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque03;
import java.util.Scanner;
public class Ejercicio01_SumaMediaNumerosHasta0 {
public static void main(String[] args) {
int suma = 0, contador = 0, num = 1;
Scanner sc = new Scanner(System.in);
for (;num != 0;) {
System.out.println("Introduzca número: ");
num = sc.nextInt();
suma += num;
contador++;
}
System.out.println("Suma: " + suma + " - Media: " + (suma / (float) (contador-1)));
}
}

View File

@@ -0,0 +1,29 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque03;
import java.util.Scanner;
public class Ejercicio02_MayorMenorNumerosHasta0 {
public static void main(String[] args) {
int mayor = 0, menor = 0, num = 1;
Scanner sc = new Scanner(System.in);
for (int i = 0; num != 0; i++) {
System.out.println("Introduzca número: ");
num = sc.nextInt();
if (i == 0) {
mayor = num;
menor = num;
}
else {
if (num > mayor) mayor = num;
if (num < menor) menor = num;
}
}
System.out.println("Mayor: " + mayor + " - Menor: " + menor);
}
}

View File

@@ -0,0 +1,26 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque03;
import java.util.Scanner;
public class Ejercicio03_TablaDeMultiplicarHasta0 {
public static void main(String[] args) {
int num = 1;
Scanner sc = new Scanner(System.in);
for (;num != 0;) {
System.out.println("Introduzca número: ");
num = sc.nextInt();
if (num == 0) {
break;
}
for (int i = 1; i <= 10; i++) {
System.out.println(num + " * " + i + " = " + (num * i));
}
}
}
}

View File

@@ -0,0 +1,26 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque03;
import java.util.Scanner;
public class Ejercicio04_ContadorPositivosYNegativosHasta0 {
public static void main(String[] args) {
int num = 1, contadorPos = 0, contadorNeg = 0;
Scanner sc = new Scanner(System.in);
for (;num != 0;) {
System.out.println("Introduzca número: ");
num = sc.nextInt();
if (num == 0) {
break;
}
if (num > 0) contadorPos++;
if (num < 0) contadorNeg++;
}
System.out.println("Positivos: " + contadorPos + " - Negativos: " + contadorNeg);
}
}

View File

@@ -0,0 +1,39 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque04;
import java.util.Scanner;
public class Ejercicio01_NumeroPrimoOCompuestoSinFor {
public static void main(String[] args) {
// Creo las variables necesarias
int numUsuario, i;
Scanner sc = new Scanner(System.in);
boolean numeroTieneDivisores;
// Pido el número al usuario
System.out.println("Por favor, introduzca un número y comprobaré si es primo: ");
numUsuario = sc.nextInt();
// Utilizo un bucle diferente al for, pero le imito con una variable "i"
i = 2;
numeroTieneDivisores = false;
// Pasaré con la variable "i" por todos los números entre el 2 y el anterior al número
// que ha introducido el usuario, buscando divisores
while (i < numUsuario) {
if (numUsuario % i == 0) { // He encontrado un divisor
numeroTieneDivisores = true;
break;
}
i++;
}
// Si el número tiene divisores se trata de un compuesto, si no se trata de un primo
if (numeroTieneDivisores) {
System.out.println("El número " + numUsuario + " es compuesto");
}
else {
System.out.println("El número " + numUsuario + " es primo");
}
}
}

View File

@@ -0,0 +1,52 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque04;
import java.util.Scanner;
public class Ejercicio02_NumerosPrimosOCompuestoEntreLimitesSinFor {
public static void main(String[] args) {
// Creo las variables necesarias
int limiteInf, limiteSup, numInvestigado, i;
Scanner sc = new Scanner(System.in);
boolean numeroTieneDivisores;
// Pido los límites al usuario
System.out.println("Por favor, introduzca un límite inferior: ");
limiteInf = sc.nextInt();
System.out.println("Por favor, introduzca un límite superior: ");
limiteSup = sc.nextInt();
// Utilizo un bucle diferente al for, con la variable "numInvestigado"
numInvestigado = limiteInf;
// Pasaré por todos los número entre el límite inferior y el superior, comprobando siempre el
// numInvestigado
while (numInvestigado <= limiteSup) {
// Supongo que el número investigado es primo e intento demostrar que tiene algún divisor.
numeroTieneDivisores = false;
i = 2;
// Pasaré con la variable "i" por todos los números entre el 2 y el anterior al número
// que ha introducido el usuario, buscando divisores
while (i < numInvestigado) {
if (numInvestigado % i == 0) { // He encontrado un divisor
numeroTieneDivisores = true;
break;
}
i++;
}
// Si el número tiene divisores se trata de un compuesto, si no se trata de un primo
if (numeroTieneDivisores == true) {
System.out.println("El número " + numInvestigado + " es compuesto");
}
else {
System.out.println("El número " + numInvestigado + " es primo");
}
// Sumamos uno al número investigado para comprobar el siguiente número
numInvestigado++;
}
}
}

View File

@@ -0,0 +1,24 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque04;
public class Ejercicio03_TablasMultiplicarHasta15 {
public static void main(String[] args) {
// Declaro las variables
int num = 1; // Número al que se le calculará su tabla de multiplicar
int factor; // Factor por el que se multiplicará al número "num"
// En lugar de bucles "for" usaré bucles while
do {
factor = 1;
System.out.println("\nTabla de multiplicar del " + num);
do {
System.out.println("\t" + num + " x " + factor + " = " + (num * factor));
factor++; // Aumento el factor
} while (factor <= 10);
num++; // Prepara para que se calcule la tabla de multiplicar del siguiente número;
} while (num <= 15);
}
}

View File

@@ -0,0 +1,39 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque04;
import java.util.Scanner;
public class Ejercicio04_ImprimirEnteroEnBinario {
public static void main(String[] args) {
// Declaro las variables
int numAImprimirEnBinario;
Scanner sc = new Scanner(System.in);
int numDescubrimientoBits;
// Pido el número al usuario
System.out.println("Por favor, introduzca un número y lo imprimiré en binario: ");
numAImprimirEnBinario = sc.nextInt();
// Voy a hacer la operación "&" para ir detectando los bits del número
numDescubrimientoBits = (int) Math.pow(2, 30);
while (numDescubrimientoBits > 0) {
if ( (numDescubrimientoBits & numAImprimirEnBinario) != 0) {
System.out.print("1");
}
else {
System.out.print("0");
}
// Acualizo el valor del numDescubrimientoBits para que apunte al siguiente bit por descubrir
numDescubrimientoBits >>= 1;
}
}
}

View File

@@ -0,0 +1,28 @@
package tutorialJava.capitulo3_bucles.ejercicios.bloque04;
import java.util.Scanner;
public class Ejercicio05_FactorialSinUsarBucleFor {
public static void main(String[] args) {
// Declaro las variables
int num, i, factorial = 1;
Scanner sc = new Scanner(System.in);
// Pido el número al usuario
System.out.println("Por favor, introduzca un número y calcularé su factorial: ");
num = sc.nextInt();
// Realizo el algoritmo de cálculo del factorial
factorial = num;
i = num - 1;
while (i > 1) {
factorial *= i;
i--;
}
// Imprimo el resultado
System.out.println("Factorial de " + num + " es: " + factorial);
}
}