Ejercicios Prácticos de Programación en JAVA

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

Ejercicios prácticos de programación en JAVA (ADA Backend).

Tips del profesor:


Para el resto usar el operador % (operador módulo o resto) que devuelve el resto de una
división entera entre 2 números.
Ej 10 % 5 = 0 ya que 0 es el resto de una división entera entre 10 y 5
11 % 5 = 1 ya que el resto de la división entera por 5 es 1.

Clase 3 y clase 8: Programación procedural lineal (15-02-2020)

1.1) .Dado 1 número que representa una cara de un cubo, calcular y mostrar la Volumen.
package app;

import java.util.Scanner;

//Calculo del Volumen de un Cubo

public class App {

public static Scanner Teclado = new Scanner(System.in);

public static void main(String[] args) {

int n1;
int volumen;

System.out.println("Ingrese lado del cubo para calcular volumen");


n1 = Teclado.nextInt();

volumen = n1*n1*n1;
/**
0 */

System.out.println("El volumen del cubo es: " + volumen);


}

1.2) .Dados 2 números que representan los lados de una cara de un cubo, calcular y
mostrar la superficie.

package app;

import java.util.Scanner;

// Calcular la superficie de un cubo


public class App {

public static Scanner Teclado = new Scanner(System.in);

public static void main(String[] args) throws Exception {

//Declaracion de variables
int n1;
int n2;
int superficie;
int ladosDelCubo = 6;

//Ingreso de un lado del cubo


System.out.println("Ingresar primer lado del cubo");
n1 = Teclado.nextInt();
System.out.println("Ingresar segundo lado del cubo");
n2 = Teclado.nextInt();

//Calculo de la superficie
superficie = ladosDelCubo * n1 * n2; //Math.pow(n,m)

System.out.println("La superficie del cubo es: " + superficie);

}
}

2) A partir de dos valores enteros A y B, informar la suma, la diferencia (A menos B) y el


producto. (primer ejercicio de la guia)

package app;

import java.util.Scanner;

public class App {

public static Scanner Teclado = new Scanner(System.in);

public static void main(String[] args) throws Exception {

//Declaro las variables


int n1;
int n2;
int suma;
int resta;
int multiplicar;

//Ingrese el primer codigo


System.out.println("Ingrese el primer numero");
n1 = Teclado.nextInt();

System.out.println("Ingrese el segundo numero");


n2 = Teclado.nextInt();

//Haga la suma
suma = n1 + n2;
resta = n1 - n2;
multiplicar = n1 * n2;

System.out.println("El resultado de la suma es " + suma);


System.out.println("El resultado de la resta es " + resta);
System.out.println("El resultado de la multiplicacion es " + multiplicar);

}
}

3) Dado un número real que representa el importe de una compra informar las posibles
formas de pago, según la siguiente tabla: (Segundo ejercicio de la guia)
1 cuota de $.................
2 cuotas de $................. total $................. ( 5% de recargo)
6 cuotas de $................. total $................. ( 40% de recargo)

package app;

import java.util.Scanner;
public class App {

public static Scanner Teclado = new Scanner(System.in);


public static void main(String[] args) throws Exception {
// Declaro las variables
int x;
double c1;
double c2;
double c2_Cargo;
double c6;
double c6_Cargo;
// muestro mensaje de ingresion
System.out.println("Ingrese un numero que represente un numero real:");
x = Teclado.nextInt();

c1 = x;
c2_Cargo = x * 1.05;
c6_Cargo = x * 1.40;
c2 = c2_Cargo / 2;
c6 = c6_Cargo / 6;
System.out.println("Su pago de 1 cuota es de: " + c1);
System.out.println("Su pago en 2 cuotas con un recargo del 5% es de: " + c2);
System.out.println("Su pago en 6 cuotas con un recargo del 40% es de: " + c6);

}
}

4) A partir de un valor entero ingresado por teclado, se pide informar:


a) La quinta parte de dicho valor
b) El resto de la división por 5
c) La séptima parte del resultado del punto a)

package app;

import java.util.Scanner;

public class App {

public static Scanner Teclado = new Scanner(System.in);


public static void main(String[] args) throws Exception {
int n1;
int x;
int y;
long z;

System.out.println("Ingresar un valor");
n1 = Teclado.nextInt();

x = n1 / 5;
y = n1 % 5;
z = x / 7;

System.out.println("La quinta parte del valor introducido es: " + x);


System.out.println("El resto de la división por 5: " + y);
System.out.println("La séptima parte del primer resultado: " + z);

}
}

Clase 5: Sentencia IF y Switch-Case

1) Dados un mes y el año correspondiente informar cuantos dias tiene el mes

package app;
import java.util.Scanner;

public class App {


public static Scanner Teclado = new Scanner(System.in);

public static void main(String[] args) throws Exception {

String mes;
int anio;
System.out.println("Ingresar mes");
mes = Teclado.nextLine();
System.out.println("Ingresar año");
anio = Teclado.nextInt();
mes = mes.toLowerCase();
switch (mes) {
case "enero":
case "marzo":
case "mayo":
case "julio":
case "agosto":
case "octubre":
case "diciembre":
System.out.println("Su mes " + mes + " tiene 31 dias");
break;
case "abril":
case "junio":
case "sepiembre":
case "noviembre":
System.out.println("Su mes " + mes + " tiene 30 dias");
break;
case "febrero":
if(anio % 4 == 0 && ((anio % 100 != 0) || (anio % 400 == 0)) ) {
System.out.println("Su mes " + mes + " tiene 29 dias");
} else {
System.out.println("Su mes " + mes + " tiene 28 dias");
}
break;
default:
System.out.println("el mes ingresado no se reconoce");
break;

}
}
}

2) Dado 5 números naturales mayores a 0, calcular y mostrar suma


3) Ejercicio de cuotas, seleccionar en qué cuota desea pagar

package app;

import java.util.Scanner;

public class App {

public static Scanner Teclado = new Scanner(System.in);

public static void main(String[] args) throws Exception {

/// Imprimir las siguientes opciones y luego hacer que el usuario ingrese una
/// opcion
// Opcion 1: 1 cuota
// Opcion 2: 2 cuotas
// Opcion 6: 6 cuotas.

int cuotas;

System.out.println("Ingrese la cantidad de cuotas a pagar");

// Mostrarle TODAS las opciones.


System.out.println("1: 1 cuota");
System.out.println("2: 2 cuotas");
System.out.println("6: 6 cuotas");

// Muestran las opciones, leen el valor.


cuotas = Teclado.nextInt();

// switch(expresion)
switch (cuotas) {
case 1:
// no abre llaves
System.out.println("Ud eligio la cuota 1");
break; // <-- El brake hace que no caiga en los otros cases.
case 2:
System.out.println("Ud eligio pagar en 2 cuotas");
break;
case 6:
System.out.println("Ud eligio pagar en 6 cuotas");
break;
default: //No es ninguno de los anteriores.
System.out.println("Opcion no valida");
break;
}
}
}

4) recibir dos valores n1 y n2 he imprimir cual es el mayor


package app;
import java.util.Scanner;
public class App {

public static Scanner Teclado = new Scanner(System.in);


public static void main(String[] args) throws Exception {
// Declaro las variables
int n1;
int n2;

System.out.println("Ingrese el primer valor");


n1 = Teclado.nextInt();
System.out.println("Ingrese el seguro valor");
n2 = Teclado.nextInt();

if (n1 > n2) {


System.out.println("N1 es mayor que N2");
}
else if (n2 > n1) {
System.out.println("N2 es mayor que N1");
}
else {
System.out.println("N1 es igual a N2");
}
}
}

Clase 6: Sentencia FOR, estructuras repetitivas (22-02-2020)

1) Dado dos números, mostrar menú con opciones de sumar, restar o multiplicar dichos
números. Solicite elegir una opción y mostrar resultados.

1.2) Dados 10 numeros, informar CUANTOS de ellos son positivos.

2) Dato 10 numeros que representan la nota de 10 alumnos, informar el promedio.

3) Dados 10 numeros que representan la nota de 10 alumnos, informar el promedio para


aquellos que hayan sacado mas de 7.

4) Dado un año, que representa la fecha de nacimiento de una perssona, indicar si es:
babyboomer, generacion X, millenial, centenial u otro
5) Dada una N cantidad de temperaturas de una region, se requiere informar cual fue la
mayor temperatura.

6) Se pide ingresar una cantidad de personas. Por cada persona ingresar el año de
nacimiento e informar el promedio de edad de aquellos que son millenials

7) imprimir los primeros 20 números naturales


package app;

public class App {


public static void main(String[] args) throws Exception {
for (int i = 0; i < 20; i++){
System.out.println("Numero " + (i + 1));
}
}
}

Clase 11: Sentencia While-Do estructuras repetitivas (7-03-2020)

1) Determine cuál es la cantidad del ingreso de números naturales

Primera forma While:


package app;

import java.util.Scanner;

public class App {

public static Scanner Teclado = new Scanner(System.in);

public static void main(String[] args) throws Exception {

int numero;
int cantidad;
// int cantidad = 0;

System.out.println("Ingrese un numero");

numero = Teclado.nextInt();

cantidad = 0;

while (numero >= 0) {


// Esto es lo que se repite mientras da vueltas
cantidad++; // es igual a cantidad = cantidad + 1
System.out.println("Ingrese un numero");

numero = Teclado.nextInt();
}

System.out.println("La cantidad de nros ingresados es " + cantidad);

}
}

Segunda forma DO-While:


package app;

import java.util.Scanner;

public class App {

public static Scanner Teclado = new Scanner(System.in);

public static void main(String[] args) throws Exception {

int numero;
int cantidad = 0;

do {
System.out.println("Ingrese un numero");
numero = Teclado.nextInt();

if (numero >= 0) {
cantidad++;
}
} while (numero >= 0);

System.out.println("La cantidad de numeros es: " + cantidad);


}
}

Clase 12: Funciones (10-03-2020)

1) Dado un colegio de N aulas, ingresar para casa aula nombre, anio de nacimiento y
promedio del alumno. Cada ingreso por aula termina cuadno alguien ingresa el
nombre "NADIE". Puede haber aulas vacias. Se pide como resultado final, el nombre
y nota del promedio mas alto. Cantidad de alumnos que sacaron menos de 4.
Cantidad de alumnos que nacieron en un anio bisiesto

package app;
import java.util.Scanner;
public class App {

public static Scanner Teclado = new Scanner (System.in);


public static void main(String[] args) throws Exception {

int aulas;
String nombre ;
int cantidad;
int anio;
int promedio;
int promedioT = 0;

System.out.println("Ingresar N° de aulas del instituto");


aulas = Teclado.nextInt();

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

System.out.println("Ingresar datos del aula n°: " + i);

while(nombre != "NADIE") {
System.out.println("Ingresar nombre");
nombre = Teclado.nextLine();
System.out.println("Ingresar anio de nacimiento");
anio = Teclado.nextInt();
System.out.println("Ingresar promedio del alumno");
promedio = Teclado.nextInt();

promedioT += promedio;
cantidad++;

}
promedioT = promedioT/cantidad;

if(promedioH <= promedioT){


promedioH = promedio T;

System.out.println("Promedio del aula: " + i + promedio);


promedio = 0;
}

}
public static boolean nombreAlumno(){
if(alumno)
return false;

}
}

Ej. MI-3: Dada una terna de números naturales que representan al día, al mes y al año
de una determinada fecha informarla como un solo número natural de 8 dígitos
(AAAAMMDD).

int dia;
int mes;
int año;
System.out.println("ingresar dia");
dia = Teclado.nextInt();
System.out.println("ingresar mes");
mes = Teclado.nextInt();
System.out.println("ingresar año");
año = Teclado.nextInt();
System.out.println("Fecha Actual: "+ año + "/" + (mes) + "/" + dia);
System.out.println(Math.abs(año) + " " + Math.abs(mes) + " " + Math.abs(dia));

Ej. MI-4: A partir de un valor entero ingresado por teclado, se pide informar:

1. La quinta parte de dicho valor


2. El resto de la división por 5
3. La séptima parte del resultado del punto a)

int n1;
int x;
int y;
double z;
System.out.println("Ingresar un valor entero");
n1 = Teclado.nextInt();
x = n1 / 5;
y = n1 % 5;
z = (double)x / 7;

System.out.println("La quinta parte del valor introducido es: " + x);


System.out.println("El resto de la división por 5: " + y);
System.out.println("La séptima parte del primer resultado: " + z);

II. Estructuras Selectivas:

II.a Selección Simple

Ej. MI-5

Enunciado: Dados dos valores enteros y distintos, emitir una leyenda apropiada que
informe cuál es el mayor entre ellos.

Ej. MI-6 Dadas dos fechas informar cual es la más reciente. Determine cuales serían
los datos de entrada y las leyendas a informar de acuerdo al proceso solicitado.

int dia1;

int mes1;

int año1;

System.out.println("ingresar dia 1:");

dia1 = Teclado.nextInt();

System.out.println("ingresar mes 1:");

mes1 = Teclado.nextInt();

System.out.println("ingresar anio 1:");

año1 = Teclado.nextInt();

int dia2;
int mes2;

int año2;

System.out.println("ingresar dia 2:");

dia2 = Teclado.nextInt();

System.out.println("ingresar mes 2:");

mes2 = Teclado.nextInt();

System.out.println("ingresar anio 2:");

año2 = Teclado.nextInt();

if (año1 > año2) {

System.out.println("Fecha mas reciente: "+ año1 + "/" + (mes1) + "/" + dia1);

} else if(año2 > año1) {

System.out.println("Fecha mas reciente: "+ año2 + "/" + (mes2) + "/" + dia2);

} else if(año2 == año1) {

if(mes1 > mes2) {

System.out.println("Fecha mas reciente: "+ año1 + "/" + (mes1) + "/" + dia1);

} else if(mes2 > mes1) {

System.out.println("Fecha mas reciente: "+ año2 + "/" + (mes2) + "/" + dia2);

else if(mes1 == mes2) {

if(dia1 > dia2) {

System.out.println("Fecha mas reciente: "+ año1 + "/" + (mes1) + "/" + dia1);

} else {

System.out.println("Fecha mas reciente: "+ año2 + "/" + (mes2) + "/" + dia2);

} else {

System.out.println("Las fechas son iguales");

break;
Ej. MI-7: Dado un triángulo representado por sus lados L1, L2, L3, determinar e
imprimir una leyenda según sea: equilátero, isósceles o escálenos.

int l1;

int l2;

int l3;

System.out.println("ingresar L1 del triangulo");

l1 = Teclado.nextInt();

System.out.println("ingresar L2 del triangulo");

l2 = Teclado.nextInt();

System.out.println("ingresar L3 del triangulo");

l3 = Teclado.nextInt();

if (l1==l2 && l2==l3) {

System.out.println("El triangulo es equilatero");

} else if(l1==l2 || l2==l3 || l3==l1) {

System.out.println("El triangulo es isosceles");

} else {

System.out.println("El triangulo es escaleno");

II.b Selección Múltiple

Ej. MI-8:

Enunciado: Dados un mes y el año correspondiente informar cuantos días tiene el mes.

String mes;

int anio;

System.out.println("Ingresar mes");

mes = Tecla.readLine();

System.out.println("Ingresar año");

anio = Teclado.nextInt();

mes = mes.toLowerCase();

switch (mes) {
case "enero":

case "marzo":

case "mayo":

case "julio":

case "agosto":

case "octubre":

case "diciembre":

System.out.println("Su mes " + me8 + " tiene 31 dias");

break;

case "abril":

case "junio":

case "sepiembre":

case "noviembre":

System.out.println("Su mes " + mes + " tiene 30 dias");

break;

case "febrero":

if(anio % 4 == 0 && ((anio % 100 != 0) || (anio % 400 == 0)) ) {

System.out.println("Su mes " + mes + " tiene 29 dias");

} else {

System.out.println("Su mes " + mes + " tiene 28 dias");

break;

default:

System.out.println("el mes ingresado no se reconoce");

break; }

Ej. MI-9:

Enunciado: Dados dos números, mostrar un menú con opciones de sumar, restar o
multiplicar dichos números. Solicite elegir una opción.

int nx;

int ny;
int opcion;

int sumar;

int restar;

int multiplicar;

System.out.println("Ingresar primer numero entero");

nx = Teclado.nextInt();

System.out.println("Ingresar segundo numero entero");

ny = Teclado.nextInt();

System.out.println("Ahora elige que quiere hacer:");

System.out.println("Sumar: 11");

System.out.println("Restar: 22");

System.out.println("Multiplicar: 33");

opcion = Teclado.nextInt();

switch (opcion) {

case 11:

sumar = nx + ny;

System.out.println("Su resultado es: " + sumar);

break;

case 22:

restar = nx - ny;

System.out.println("Su resultado es: " + restar);

break;

case 33:

multiplicar = nx * ny;

System.out.println("Su resultado es: " + multiplicar);

break;

default:

System.out.println("Resultado Incorrecto");

break;

}
Ej. MI-10 Se ingresa una edad, mostrar por pantalla alguna de las siguientes leyendas:


‘menor’ si la edad es menor o igual a 12

● ‘cadete’ si la edad está comprendida entre 13 y 18

● ‘juvenil’ si la edad es mayor que 18 y no supera los 26

● ‘mayor’ en el caso que no cumpla ninguna de las condiciones anteriores

int edad;

System.out.println("ingresar edad");

edad = Teclado.nextInt();

if (edad <= 12) {

System.out.println("Usted es menor de edad");

} else if (edad > 12 && edad < 19) {

System.out.println("Usted es cadete de edad");

} else if (edad > 18 && edad < 26) {

System.out.println("Usted es juvenil de edad");

} else {

System.out.println("Usted es mayor de edad");

III. Estructuras Repetitivas:

III. a Repetición definida o exacta

Ej. MI-11

Enunciado: Informar los primeros 100 números naturales y su sumatoria

Ej. MI-12: Dados N y M números naturales, informar su producto por sumas sucesivas.

public static void main(String[] args) throws Exception {

int n;
int m;

int cantidad = 0;

System.out.println("Ingrese un numero");

n = Teclado.nextInt();

System.out.println("Ingrese seguro numero");

m = Teclado.nextInt();

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

cantidad += m;

System.out.println("Su producto entre: " + m + " Y " + n + " fue: " + cantidad);

Ej. MI-13: Dados 50 números enteros, informar el promedio de los mayores que 100 y
la suma de los menores que –10.

int numero;

int promedio = 0;

int suma = 0;

int suma2 = 0;

int contador = 0;

System.out.println("Ingrese cantidad de numeros a evaluar");

numero = Teclado.nextInt();

while(contador < 50){

if(numero > 100){

suma += numero;

promedio++;

else if(numero < -10){

suma2 += numero;
}

System.out.println("Ingrese cantidad de numeros a evaluar");

numero = Teclado.nextInt();

contador++;

System.out.println("El promedio de los numeros mayores a 100 fue: " +


suma/promedio);

System.out.println("La suma de los numeros menores a -10 fue: " + suma2);

Ej. MI-14: En un torneo de fútbol participan K equipos. El torneo se juega con el


sistema de todos contra todos. Por cada partido disputado por un equipo se
dispone de la siguiente información :

1.
Nro. de equipo,

2. Código del resultado ('P'= Perdido, 'E'= Empatado, 'G'= Ganado).

Se arma un lote de datos con todos los resultados del torneo, agrupados por
Nro. de equipo.

Desarrollar el programa que imprima:

1) Por cada equipo, su número y el puntaje total que obtuvo (suma 3 si


gana, y 1 si empata).

2) Nro. de equipo que totalizó la menor cantidad de puntos. (hay solo


uno)

public static Scanner Teclado = new Scanner (System.in);

public static void main(String[] args) throws Exception {

String codigo;

int puntos;

int k;

System.out.println("Ingrese cantidad de equipos");

k = Teclado.nextInt();
for(int i = 1; i <= k; i++){

System.out.println("Ingrese si el equipo: " + i + " 'P'= Perdido, 'E'= Empatado, 'G'=


Ganado");

codigo = Teclado.nextLine();

switch(codigo){

case "P":

System.out.println("sus puntos fue de 0");

puntos = 0;

break;

case "E":

System.out.println("sus puntos fue de 1");

puntos = 1;

break;

case "G":

System.out.println("sus puntos fue de 3");

puntos = 3;

break;

default:

break;

System.out.println("El equipo: " + i + "tuvo un puntaje de: " +); }

III. b Repetición indefinida 0-n

Ej. MI-15: Ingresar e informar valores, mientras que el valor ingresado no sea
negativo. Informar la cantidad de valores ingresados.
Ej. MI-16: Se ingresa un conjunto de valores reales, cada uno de los cuales
representan el sueldo de un empleado, excepto el último valor que es cero e indica el fin
del conjunto. Se pide desarrollar un programa que determine e informe:

1.
Cuántos empleados ganan menos $1.520.

2. Cuántos ganan $1.520 o más pero menos de $2.780.

3. Cuántos ganan $2.780 o más pero menos de $5.999.

4. Cuántos ganan $5.999 o más.

Ej. MI-17: Dado un valor M determinar y emitir un listado con los M primeros múltiplos
de 3 que no lo sean de 5, dentro del conjunto de los números naturales.

III. c Repetición indefinida 1-n

Ej. MI-18: Reescribir los algoritmos MI-15 al MI-17, utilizando ciclos 1-n

IV Máximos y Mínimos.

Ej. MI-19: Dados 10 valores informar el mayor

Ej. MI-20: Dados N valores informar el mayor, el menor y en que posición del conjunto
fueron ingresados.

Ej. MI-21: Dado un conjunto de Nombres y Fechas de nacimientos (AAAAMMDD), que


finaliza con un Nombre = ‘FIN’, informar el nombre de la persona con mayor edad y el
de la más joven.

Ej. MI-22. Dado un conjunto de valores, que finaliza con un valor nulo, determinar e
imprimir (si hubo valores):

a) El valor máximo negativo

b) El valor mínimo positivo

c) El valor mínimo dentro del rango -17.3 y 26.9

d) El promedio de todos los valores.


Ej. MI-23: Se dispone de un lote de valores enteros positivos que finaliza con un
número negativo. El lote está dividido en sublotes por medio de valores cero. Desarrollar
un programa que determine e informe:

1.
por cada sublote el promedio de valores

2. el total de sublotes procesados

3. el valor máximo del conjunto, indicando en que sublote se encontró y la


posición relativa del mismo dentro del sublote

4. valor mínimo de cada sublote

Nota: el lote puede estar vacío (primer valor negativo), o puede haber uno, varios o
todos los sublotes vacíos (ceros consecutivos)

Ej. MI-24: Dada una serie de M pares {color, número} que corresponden a los tiros de
una ruleta. Se pide informar:

1.
cuántas veces salió el número cero y el número anterior a cada cero

2. cuántas veces seguidas llegó a repetirse el color negro

3. cuántas veces seguidas llegó a repetirse el mismo número y cuál fue

4. el mayor número de veces seguidas que salieron alternados el rojo y el


negro

5. el mayor número de veces seguidas que se negó la segunda docenas

IV Ejercicios Integradores

Ej. MI-25: Dada una serie de caracteres que conforman una oración, donde cada
palabra está separada de la siguiente por un carácter blanco y la oración finaliza con un
punto. Se pide informar:

1.
cantidad de veces que apareció cada vocal

2. cantidad de palabras que contiene la oración

3. cantidad de letras que posee la palabra más larga.


Ej. MI-26: Dado un número entero positivo entre 1 y 3999 informar su
correspondiente número Romano

Ej. MI-27: Dado un conjunto de valores enteros, calcular e informar a) cuántos valores
cero hubo, b) promedio de valores positivos, c) sumatoria de valores negativos.

Resolver el ejercicio para los siguientes lotes de datos:

1.
167 valores enteros

2. N valores, donde el valor de N debe ser leído previamente

3. El conjunto de valores termina con un valor igual al anterior

4. Se dan N valores, pero el proceso deberá finalizar si se procesan todos los


valores o si la cantidad de ceros supera a cuatro

5. Se dan N valores, pero el proceso deberá finalizar si se cumple alguna de


las condiciones de 4) o si el promedio de positivos resulta mayor que seis.

Ej. MI-28: El gobierno de la Ciudad de Buenos Aires realiza una encuesta en casas de
familia. De cada familia conoce: domicilio, tipo de vivienda (‘C’:casa, ‘D’:departamento),
y cantidad de integrantes.

De cada integrante de la familia se conoce: nombre y apellido, edad, sexo (‘F’, ‘M’, ’O’),
nivel de estudios alcanzados (‘N’: no posee, ‘P’: primario, ‘S’: secundario, ‘T’: terciario,
‘U’: universitario), y un indicador (‘I’: incompleto, ‘C’: completo) que se refiere al ítem
anterior.

Los datos finalizan cuando la cantidad de integrantes sea igual a cero.

Se pide emitir un listado con los resultados:

1.
los datos de los encuestados que hayan completado los estudios primarios

2. el porcentaje de analfabetismo en la ciudad (se considera analfabetos a los


mayores de 10 años que no posean estudios)

3. el domicilio de la familia con mayor cantidad de integrantes que viven en


departamento

4. edad promedio de cada familia y de la ciudad

5. cantidad de encuestados en cada tipo de nivel de estudios alcanzados


incompletos.

6. porcentaje de encuestados de sexo femenino y masculino.


Ej. MI-29: Una compañía aérea desea emitir un listado con los movimientos mensuales
de sus M vuelos al exterior. Para ello cuenta con la siguiente información. De cada vuelo
realizado el número de vuelo, destino, y cantidad de asientos. De cada pasajero el
número de pasaporte y el importe que abonó por el pasaje en dólares. La información
finaliza con un número de pasaporte igual a cero. Se pide emitir el siguiente listado:

Nro. de Vuelo 9999 Destino: xxxxxxxxxxxxxxxxx

Nro. de Pasaporte Importe en u$s

99999999 999.99

99999999 999.99

Total recaudado del vuelo: 99999.99

% de Asientos Libres del vuelo 999.99

% de Asientos Ocupados del vuelo 999.99

Total recaudado en el mes 999999.99

Cantidad de veces seguidas que se dieron vuelos completos 99

El número de vuelo que más recaudó 9999


VI Subprogramas

VI a. Funciones

Ej. MI-30: Desarrollar una función que calcule el máximo común divisor de dos
números enteros A, B con el siguiente algoritmo:

1.
Dividir A por B, y calcular el resto (0 < R < B)

2. Si R = 0, el MCD es B, si no seguir en 3)

3. Reemplazar A por B, B por R, y volver al paso 1)

Ej. MI-31: Desarrollar una función tal que dado un número entero positivo calcule y
retorne su factorial.

Ej. MI-32: Dada una serie de números enteros, informar:

1.
su factorial

2. cuantos múltiplos de 3

3. cuantos múltiplos de 5

4. cuantos múltiplos de 3 y de 5

Utilice las funciones de ejercicios anteriores.

Ej. MI-33: Dada la fracción P/Q, para P y Q naturales informar la mayor cantidad de
simplificaciones. Desarrolle y utilice una función que reciba dos números naturales y
retorne el menor factor común. Ej: 360/60 = 180/30 = 90/15 = 30/5 = 6/1

VI b. Procedimientos
Ej. MI-34. Diseñar un procedimiento que imprima el cartel:

PRESIONE ENTER

PARA CONTINUAR

Ej. MI-35: Desarrollar un procedimiento que imprima una fecha en formato


DD/MM/AA. El dato que recibe es un longint con una fecha en formato aaaammdd.

Ej. MI-36: Desarrollar un procedimiento tal que dados una base y un exponente,
enteros positivos, calcule y retorne la potencia.

Ej. MI-37: Desarrollar un procedimiento tal que dada una fecha (AAAAMMDD) y un
número natural que representa una cantidad de días, calcule y retorne la nueva fecha en
tres parámetros año (AAAA), mes (MM) y día (DD) que resulte de incrementar al
parámetro fecha con el parámetro cantidad de días.

Ej. MI-38: Desarrollar un procedimiento tal que dada una hora (HHMMSS) y un tiempo
también en formato HHMMSS devuelva la nueva hora que surge de sumar el tiempo a la
hora inicial, considere también si cambió el día.

1.
Ejercicios integradores Subprogramas

Ej. MI-39: Una bodega quiere lanzar una oferta para terminar con el stock de dos
productos. Para ello cuenta con B cantidad de cajas de vino blanco y T cantidad de cajas
de vino tinto. Desea armar la mayor cantidad posible de paquetes con la oferta y que
todos los paquetes tengan igual cantidad de cajas de vino blanco y de vino tinto.

Se pide informar cuántos paquetes se podrán armar como máximo, y cuántas


cajas de vino blanco y cuantas de vino tinto contendrán cada uno.

Utilice la función desarrollada en el Ej. MI-30.

Ej. MI-40: Desarrollar:


1.
Una función tal que dados tres números naturales (x, y, z) retorne el
mínimo común múltiplo.

2. Un procedimiento tal que dado un valor entero positivo retorne el cociente y


el resto de la división entera por 24.

Desarrolle un algoritmo que resuelva la siguiente situación problemática: En una fábrica


la sirena amarilla suena cada X horas, la sirena verde cada Y horas y la sirena azul cada
Z horas. Si hoy a las H horas sonaron las tres sirenas a la vez, informar cuantos días y
horas deben transcurrir como mínimo para que las tres vuelvan a sonar juntas. Además
informar el día mes y año y hora en que se producirá la ocurrencia. Utilice los
subprogramas desarrollados en los puntos a), b), el procedimiento del Ej. MI-37, e
invoque al procedimiento de Pascal Getdate.

Ej. MI-41: De un censo realizado en una población se conocen los siguientes


datos:


Día de nacimiento (2 dig.)

● Mes (2 dig.)

● Año (4 dig.)

● Sexo ('M'=masc. 'F'=fem., ‘O=Otro’)

Con estos datos de cada habitante se forma un lote finalizado con un día cero.
Desarrollar el programa que determine e imprima:

1) Cuántos nacimientos hubo en el mes de octubre de todos los años.

2) Cuántos nacimientos hubo antes del 9 de julio de 1990.

3) Cuántos nacimientos de mujeres hubo en la primavera del 1982.

4) Sexo de la persona más vieja (solo existe una).

Ej. MI-42: Un buque de carga traslada 100 contenedores a tres diferentes puertos del
país.

Los puertos se identifican con los números 1, 2 y 3.

De cada contenedor que el buque traslade se registran los siguientes datos:

- Identificación del contenedor

- Peso del contenedor en kg

- Puerto de arribo(un valor de 1 a 3).


El ingreso de datos finaliza con la identificación de un contenedor igual a cero.

Se pide calcular e informar:

1.
El peso total que el buque debe trasladar

2. La identificación del contenedor de mayor peso

3. La cantidad de contenedores que debe trasladar a cada puerto

Ej. MI-43: Dado un conjunto de 20 elementos, donde cada elemento son dos
puntos que representan las esquinas opuestas de un rectángulo x1, y1, x2, y2.

(x2, y2)

(x1, y1)

Se pide:

1.
Informe el perímetro de cada rectángulo que sea un cuadrado

2. Al final del algoritmo informe la cantidad de rectángulos


ingresados que no son cuadrados.

Utilice la función abs (x), que retorna el valor absoluto de x.

Ej. MI-44: Se realiza una inspección en una fábrica de pinturas, y se detectaron


algunas infracciones:

De cada infracción se tomó nota de los siguientes datos:


Tipo de Infracción (1, 2, 3, ó 4)

● Motivo de la infracción

● Valor de la multa

● Gravedad de la infracción (‘L’,‘M’, ‘G’)

Los datos finalizan con tipo de infracción igual a cero.


Se pide:

Informar al final del proceso:


Los valores totales de la multa a pagar de acuerdo al tipo de gravedad.

● La leyenda “Clausurar fábrica” si la cantidad de infracciones 3 y 4


con gravedad “G” sean mayor a 3.

● Cuál fue el motivo que corresponde a la infracción de menor valor.

Ej. MI-45: Desarrollar:

1.
Una función que reciba un número natural de 4 dígitos en formato de
HHMM que corresponde a un tiempo determinado en horas y minutos,
retorne ese tiempo en minutos.

2. Un procedimiento que reciba el costo en pesos de un abono telefónico, la


cantidad de minutos libres que incluye el abono, el cargo en pesos por minuto
excedente y la cantidad de minutos utilizados por un abonado, retorne la
cantidad de minutos excedidos y el monto en pesos a abonar (costo del
abono más minutos excedidos por el costo de minutos excedidos) más el
21% del valor del IVA

Desarrolle un algoritmo que resuelva la siguiente situación problemática: Todos los fines
de mes, una empresa de telefonía celular debe confeccionar las facturas con los
consumos de todos sus abonados, que se realizan en tres turnos de trabajo: Mañana,
Tarde y Noche.

Para ello se ingresará por teclado la siguiente información de cada celular:


Número de celular 9 dígitos ( 0 indica cambio de turno)

● Nombre del abonado 20 caracteres

● Dirección del abonado 25 caracteres

● Tiempo utilizado 4 dígitos en formato HHMM

● Tipo de abono (carácter, A, B, C, D o E)

Dependiendo del tipo de abono que se tenga, el usuario tiene cierta cantidad de
minutos libres, por los cuales no abona cargo extra, pero por cada minuto que se
exceda debe abonar una suma extra según la siguiente tabla:
Plan
A B C D
E

Costo

$70 $55 $40 $28 $19

Minutos
Libres
300 200 100 60 40

Cargo
por minuto
excedente $0.09 $0.15 $0.21 $0.29 $0.37

Emitir el siguiente listado por cada turno:

Turno Mañana

Nombre del Abonado Dirección Minutos libres Minutos Excedidos Monto Total a Abonar

xxxxxxxxxxxx xxxxxxxxx 99999 99999 $ 9999.99

xxxxxxxxxxxx xxxxxxxxx 99999 99999 $ 9999.99

xxxxxxxxxxxx xxxxxxxxx 99999 99999 $ 9999.99

……………………………………………………………………………………………………………

Turno Tarde
……………………………………………………………………………………………………………

Turno Noche

……………………………………………………………………………………………………………

Informar por cada turno de trabajo:


El nombre del abonado que debe abonar la factura más costosa y el monto de
ésta.

● El nombre y el número de celular de la persona que realizó la mayor cantidad de


minutos excedentes, indicando cuántos fueron.

Al final del día informar:



El monto total facturado

● En que turno y en que orden dentro del turno apareció el abonado que utilizó la
menor cantidad de minutos en el mes.

Utilice los subprogramas a) y b).

// Dado un colegio de N aulas, ingresar para casa aula nombre,


// anio de nacimiento y promedio del alumno. Cada ingreso por
// aula termina cuando alguien ingresa el nombre "NADIE". Puede
// haber aulas vacías. Se pide como resultado final, el nombre y
// nota del promedio más alto.
// Cantidad de alumnos que sacaron menos de 4
// Cantidad de alumnos que nacieron en un año bisiesto

package app;
import java.util.Scanner;

public class App {

public static Scanner Teclado = new Scanner (System.in);


public static void main(String[] args) throws Exception {

int aulas;
String nombre ;
int cantidad;
int anio;
int promedio;
int promedioT = 0;

System.out.println("Ingresar N° de aulas del instituto");


aulas = Teclado.nextInt();

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

System.out.println("Ingresar datos del aula n°: " + i);

while(nombre != "NADIE") {
System.out.println("Ingresar nombre");
nombre = Teclado.nextLine();
System.out.println("Ingresar anio de nacimiento");
anio = Teclado.nextInt();
System.out.println("Ingresar promedio del alumno");
promedio = Teclado.nextInt();

promedioT += promedio;
cantidad++;

}
promedioT = promedioT/cantidad;

if(promedioH <= promedioT){


promedioH = promedio T;

System.out.println("Promedio del aula: " + i + promedio);


promedio = 0;
}

}
public static boolean nombreAlumno(){
if(alumno)
return false;

También podría gustarte