Vous êtes sur la page 1sur 15

ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

Problema 46

Etapa 01 - Descripción del problema.

Se tiene una relación de 50 obreros y su sueldo. Determine cuántos ganan menos de


S/.500, entre S/.500 y S/.2200 (Incluidos S/.500 y S/.2200), y cuántos más de S/.2200.

Etapa 02 - Definición de la solución.

‰ Resultado deseado.
‰ Datos necesarios.
‰ Procesamiento.

Etapa 03 - Diseño de la lógica.

1. Nombre del Proyecto: ProyObreros.

2. Definición de Paquetes y desarrollo del Diagrama de Paquetes.

Diagrama de paquetes

DominioDeLaAplicacion Libreria

3. Definición de las Clases.

Clases Clases
DominioDeLaAplicacion Librería

PrgObreros Math2

main() getString()
getChar()
getInt()
getLong()
getFloat()
getDouble()

Pag. 253
Juan José Flores Cueto

4. Diseño de algoritmo para el método principal.

Algoritmo PrgObreros - método main()

ENTRADA: sueldo
SALIDA: totalMenor, totalMediano, totalMayor

INICIO

NUMERO i = 1, sueldo, totalMenor, totalMediano, totalMayor

MIENTRAS ( i < 51 )

LEER sueldo

SI ( sueldo < 500 )


ENTONCES
totalMenor = totalMenor + 1
SINO

SI ( sueldo > 2200 )


ENTONCES
totalMayor = totalMayor + 1
SINO
totalMediano = totalMediano + 1
FINSI

FINSI

i=i+1

FINMIENTRAS

ESCRIBIR totalMenor, totalMadiano, totalMayor

FIN

Pag. 254
ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

Etapa 04 - Desarrollo de la Codificación.

Clase PrgObreros

package DominioDeLaAplicacion;
import Libreria.Math2;

class PrgObreros {

public static void main ( String arg[] ) {


int i = 1, sueldo, totalMenor = 0, totalMediano = 0, totalMayor = 0 ;

while ( i < 51) {

System.out.println ( “Ingrese el sueldo [” + i + “]: ” ) ;


num = Math2.getInt();

if ( sueldo < 500 ) {


totalMenor = totalMenor + 1 ;
}
else {

if ( sueldo > 2200) {


totalMayor = totalMayor + 1 ;
}
else {
totalMediano = totalMediano + 1 ;
}

i=i+1;
}

System.out.print ( “Los obreros que ganan menos de S/.500 son: ” );


System.out.println ( totalMenor );

System.out.print ( “Los obreros que ganan entre S/.500 y S/.2200 son: ” );


System.out.println ( totalMediano );

System.out.print ( “Los obreros que ganan mas de S/.2200 son:: ” );


System.out.println ( totalMayor );

}
}

Pag. 255
Juan José Flores Cueto

Problema 47

Etapa 01 - Descripción del problema.

Determinar la suma de sueldos de los obreros (categoría C), la suma de sueldos de los
empleados (categoría B) y la suma de sueldos de los gerentes (categoría A) de una
determinada empresa. Adicionalmente, determinar cuál es el mayor y el menor sueldo
en la empresa.

Etapa 02 - Definición de la solución.

‰ Resultado deseado.
‰ Datos necesarios.
‰ Procesamiento.

Etapa 03 - Diseño de la lógica.

1. Nombre del Proyecto: ProySueldoCategoria.

2. Definición de Paquetes y desarrollo del Diagrama de Paquetes.

Diagrama de paquetes

DominioDeLaAplicacion Libreria

3. Definición de las Clases.

Clases Clases
DominioDeLaAplicacion Librería

PrgSueldoCategoria Math2

main() getString()
getChar()
getInt()
getLong()
getFloat()
getDouble()

Pag. 256
ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

4. Diseño de algoritmo para el método principal.

Algoritmo PrgSueldoCategoria - método main()

ENTRADA: sueldo, categoria


SALIDA: sueldo1, sueldo2, sueldo3, mayorSueldo, menorSueldo

INICIO
NUMERO sueldo, categoria, mayorSueldo = 0, menorSueldo = 0
NUMERO sueldo1 = 0, sueldo2 = 0, sueldo3 = 0, i = 1

HACER

LEER categoria

SI (categoria <> 0)
ENTONCES

LEER sueldo
SI (i = 1)
ENTONCES
i=0
mayorSueldo = sueldo
menorSueldo = sueldo
SINO
SI ( sueldo < menorSueldo )
ENTONCES
menorSueldo = sueldo
FINSI

SI (sueldo > mayorSueldo)


ENTONCES
mayorSueldo = sueldo
FINSI
FINSI

SEGUN SEA (categoria)


CASO 1:
sueldo1 = sueldo1 + sueldo
CASO 2:
sueldo2 = sueldo2 + sueldo
CASO 3:
sueldo3 = sueldo3 + sueldo
FINSEGUN

FINSI

MIENTRAS ( categoria <> 0 )

ESCRIBIR sueldo1, sueldo2, sueldo3


ESCRIBIR menorSueldo, mayorSueldo
FIN

Pag. 257
Juan José Flores Cueto

Etapa 04 - Desarrollo de la Codificación.

Clase PrgSueldoCategoria

package DominioDeLaAplicacion;
import Libreria.Math2;

class PrgSueldoCategoria {

public static void main ( String arg[] ) {


int i = 1, categoria = 0 ;
double sueldo, categoria, mayorSueldo = 0, menorSueldo = 0 ;
double sueldo1 = 0, sueldo2 = 0, sueldo3 = 0 ;
do {
System.out.println ( “Ingrese la categoría del trabajador : ” ) ;
categoria = Math2.getInt();
if ( categoria <> 0 ) {
System.out.println ( “Ingrese el sueldo del trabajador : ” ) ;
sueldo = Math2.getDouble();
if ( i == 1) {
i=0;
mayorSueldo = sueldo ;
menorSueldo = sueldo ;
}
else {
if sueldo < menorSueldo ) {
menorSueldo = sueldo;
}
if (sueldo > mayorSueldo ) {
mayorSueldo = sueldo ;
}
}
switch (categoria) {
case 1:
sueldo1 = sueldo1 + sueldo ;
break ;
case 2:
sueldo2 = sueldo2 + sueldo ;
break ;
case 3:
sueldo3 = sueldo3 + sueldo ;
}
}
} while (categoria <> 0 ) ;
System.out.println (“Suma de sueldos de obreros: ” + sueldo1 ) ;
System.out.println (“Suma de sueldos de empleados: ” + sueldo2 ) ;
System.out.println (“Suma de sueldos de gerentes: ” + sueldo3 ) ;
System.out.println (“El sueldo mas bajo es: ” + sueldoMenor ) ;
System.out.println (“El sueldo mas alto es: ” + sueldoMayor ) ;
}
}

Pag. 258
ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

Problema 48

Etapa 01 - Descripción del problema.

Calcular y muestre el número de alumnos que tienen promedio final menos de 10; los
que tiene promedio final entre 10 y 14; aquellos que tienen promedio final entre 15 y 18;
y los que tienen promedio final mayor de 18. Ingrese 4 notas y calcule el promedio del
alumno sobre la base de la siguiente fórmula nf = ( n1 + n2 + n3 + ( n4 * 2 ) ) / 5.

Etapa 02 - Definición de la solución.

‰ Resultado deseado.
‰ Datos necesarios.
‰ Procesamiento.

Etapa 03 - Diseño de la lógica.

1. Nombre del Proyecto: ProyNotasRango.

2. Definición de Paquetes y desarrollo del Diagrama de Paquetes.

Diagrama de paquetes

DominioDeLaAplicacion Libreria

3. Definición de las Clases.

Clases Clases
DominioDeLaAplicacion Librería

PrgNotasRango Math2

main() getString()
getChar()
getInt()
getLong()
getFloat()
getDouble()

Pag. 259
Juan José Flores Cueto

3. Diseño de algoritmo para el método principal.

Algoritmo PrgNotasRango - método main()

ENTRADA: numAlumnos, n1, n2, n3, n4


SALIDA: total1, total2, total3, total4

INICIO

NUMERO n1, n2, n3, n4, nf, numAlumnos, i =1


NUMERO total1 = 0 , total2 = 0 , total3 = 0 , total4 = 0

LEER numAlumnos

MIENTRAS ( i <= numAlumnos )


HACER
LEER n1
MIENTRAS (n1 < 0 OR n1> 20)
HACER
LEER n2
MIENTRAS (n2 < 0 OR n2 > 20)
HACER
LEER n3
MIENTRAS (n3 < 0 OR n3 > 20)
HACER
LEER n4
MIENTRAS (n4 < 0 OR n4 > 20)

nf = (n1 + n2 + n3 + ( n4 * 2 ) ) / 5

SI (nf < 10)


ENTONCES
total1 = total1 + 1
FINSI
SI (nf > 9 AND nf < 15)
ENTONCES
total2 = total2 + 1
FINSI
SI (nf > 14 AND nf < 19)
ENTONCES
total3 = total3 + 1
FINSI
SI (nf > 18)
ENTONCES
total4 = total4 + 1
FINSI
i=i+1
FINMIENTRAS
ESCRIBIR total1, total2, total3, total4

FIN

Pag. 260
ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

Etapa 04 - Desarrollo de la Codificación.

Clase PrgNotasRango

package DominioDeLaAplicacion;
import Libreria.Math2;

class PrgNotasRango {

public static void main ( String arg[] ) {


int i = 1, numAlumnos ;
double n1, n2, n3, n4, nf, total1 = 0, total2 = 0, total3 = 0, total4 = 0 ;

System.out.println ( “Ingrese el número de alumnos: ” ) ;


numAlumnos = Math2.getInt();

while (i <= numAlumnos) {


do {
System.out.println ( “Ingrese nota 1 del alumno [” + i + “]:” ) ;
n1 = Math2.getDouble();
} while ((n1 < 0 || n1 > 20) ;
do {
System.out.println (“Ingrese nota 2 del alumno [” + i + “]:” ) ;
n2 = Math2.getDouble();
} while ((n2 < 0 || n2 > 20) ;
do {
System.out.println ( “Ingrese nota 3 del alumno [” + i + “]:” ) ;
n3 = Math2.getDouble();
} while (( n3 < 0 || n3 > 20 ) ;
do {
System.out.println ( “Ingrese nota 4 del alumno [” + i + “]:” ) ;
n4 = Math2.getDouble();
} while (( n4 < 0 || n4 > 20 ) ;
nf = (n1 + n2 + n3 + ( n4 * 2) ) / 5 ;
if (nf < 10)
total1 = total1 + 1;
if (nf > 9 && nf < 15)
total2 = total2 + 1;
if (nf > 14 && nf < 19)
total3 = total3 + 1;
if (nf > 18)
total4 = total4 + 1;
i ++ ;
}
System.out.println (“Total alumnos con promedio menor a 10: ” + total1) ;
System.out.println (“Total alumnos con promedio entre 10 y 14: ” + total2) ;
System.out.println (“Total alumnos con promedio entre 15 y 18: ” + total3) ;
System.out.println (“Total alumnos con promedio mayor a 18: ” + total4) ;
}
}

Pag. 261
Juan José Flores Cueto

Problema 49

Etapa 01 - Descripción del problema.

Implemente el siguiente menú de opciones y desarrolle las opciones mencionadas.

[1] Ingreso de datos (base y altura de un rectángulo).


[2] Proceso (determinar área y perímetro del rectángulo).
[3] Resultado (Mostrar el valor de área y perímetro obtenidos).
[4] Terminar.

Etapa 02 - Definición de la solución.

‰ Resultado deseado.
‰ Datos necesarios.
‰ Procesamiento.

Etapa 03 - Diseño de la lógica.

1. Nombre del Proyecto: ProyMenuRectangulo.

2. Definición de Paquetes y desarrollo del Diagrama de Paquetes.

Diagrama de paquetes

DominioDeLaAplicacion Libreria

3. Definición de las Clases.

Clases Clases
DominioDeLaAplicacion Librería

PrgMenuRectangulo Math2

main() getString()
getChar()
getInt()
getLong()
getFloat()
getDouble()

Pag. 262
ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

4. Diseño de algoritmo para el método principal.

Algoritmo PrgMenuRectangulo - método main()

ENTRADA: base, altura


SALIDA: area, perimetro

INICIO
NUMERO base, altura, area = 0, perimetro = 0, opc
HACER

ESCRIBIR “- MENU -”
ESCRIBIR “-------------------------------------------------”
ESCRIBIR “[1] Ingreso de datos”
ESCRIBIR “[2] Cálculo del área y perímetro”
ESCRIBIR “[3] Mostrar resultado”
ESCRIBIR “[4] Terminar”
ESCRIBIR “--------------------------------------------------”
ESCRIBIR “ Ingrese su opción: ”

LEER opc
SEGÚN SEA (opc)
CASO 1 :
HACER
LEER base
MIENRAS (base < 1)
HACER
LEER altura
MIENTRAS (altura < 1)
CASO 2 :
SI (base < 1 OR altura < 1)
ENTONCES
area = 0
perímetro = 0
SINO
area = base * altura
perimetro = (base + altura) * 2
FINSI
CASO 3 :
ESCRIBIR area, perimetro
CASO 4 :
ESCRIBIR “Hasta pronto... ”
OTROS :
ESCRIBIR “Opción no válida... ”

FINSEGUN
MIENTRAS (opc <> 4)
FIN

Pag. 263
Juan José Flores Cueto

Etapa 04 - Desarrollo de la Codificación.

Clase PrgMenuRectangulo

package DominioDeLaAplicacion;
import Libreria.Math2;

class PrgMenuRectangulo {

public static void main ( String arg[] ) {


int opc = 0 ;
double base, altura, area = 0, perimetro = 0 ;

do {
System.out.println ( “ [1] Ingreso de datos ” ) ;
System.out.println ( “ ----------------------------------------------------- ” ) ;
System.out.println ( “ [1] Ingreso de datos ” ) ;
System.out.println ( “ [2] Cálculo del área y perímetro ” ) ;
System.out.println ( “ [3] Mostrar resultados ” ) ;
System.out.println ( “ [4] Terminar ” ) ;
System.out.println ( “ ----------------------------------------------------- ” ) ;
System.out.println ( “ Ingrese su opción: ” ) ;
opc = Math2.getInt();

switch (opc) {
case 1 :
do {
System.out.println ( “Ingrese base del rectángulo: ”);
base = Math2.getDouble();
} while ( base < 1) ;
do {
System.out.println ( “Ingrese base del rectángulo: ”);
altura = Math2.getDouble();
} while (altura < 1) ;
break ;
case 2 :
if ( base == 0 || altura == 0 ) {
area = 0 ;
perimetro = 0 ;
}
else {
area = base * altura ;
perimetro = ( base + altura ) * 2 ;
}
break ;
case 3 :
System.out.println (“Área: ” + area ) ;
System.out.println (“Perímetro: ” + perimetro) ;
break ;
case 4 :
System.out.println (“Área: ” + area ) ;
break ;
default :
System.out.println (“Opción no válida... ”) ;
}
} while (opc <> 4) ;
}
}

Pag. 264
ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

Problema 50

Etapa 01 - Descripción del problema.

Elaborar una solución que permita controlar la venta de boletos en un determinado día en un
teatro de la capital, en base a la siguiente información:
• Al comenzar, se leerá una sola vez el precio de entrada para palco, platea y mezanine.
• Por cada entrada vendida se leerá los siguientes datos: número de boleto y lugar
(puede ser platea, palco o mezanine).
• El programa terminará cuando el número de boleto sea igual a cero.
• Antes de finalizar, se deberá proporcionar la siguiente información:
• Número total de entradas vendidas durante el día.
• El total de soles recaudados en el día.
• Número de entradas vendidas para platea, palco y mezanine en el
día.

Etapa 02 - Definición de la solución.

‰ Resultado deseado.
‰ Datos necesarios.
‰ Procesamiento.

Etapa 03 - Diseño de la lógica.

1. Nombre del Proyecto: ProyTeatro.

2. Definición de Paquetes y desarrollo del Diagrama de Paquetes.


Diagrama de paquetes

DominioDeLaAplicacion Libreria

3. Definición de las Clases.


Clases Clases
DominioDeLaAplicacion Librería

PrgTeatro Math2

main() getString()
getChar()
getInt()
getLong()
getFloat()
getDouble()

Pag. 265
Juan José Flores Cueto

4. Diseño de algoritmo para el método principal.

Algoritmo PrgTeatro - método main()

ENTRADA: costoPla, costoPal, costoMez


SALIDA: totalVendidas, totalGanancia, totalPla, totalPal, totaMez

INICIO

NUMERO numBoleto, tipo, totalVendidas = 0


NUMERO totalPla = 0, totalPal = 0, totalMez = 0
NUMERO costoPla, costoPal, costoMez, totalGanancia =0
NUMERO gananciaPla, gananciaPal, ganaciaMez

LEER costoPla, costoPal, costoMez


HACER
HACER
LEER numBoleto
MIENTRAS ( numBoleto < 0)

SI ( numBoleto <> 0 )
ENTONCES

HACER
LEER tipo
MIENTRAS (tipo < 1 OR tipo >3)

SEGUN SEA (tipo)


CASO 1 :
totalPla = totalPla + 1
CASO 2
totalPal = totalPal + 1
CASO 3
totalMez = totalMez + 1
FINSEGUN

MIENTRAS (numBoleto <> 0)


totalVendidas = totalPla + totalPal + totalMez
ganaciaPla = totalPla * costoPla
ganaciaPal = totalPal * costoPal
ganaciaMez = totalMez * costoMez
totalGanancia = gananciaPla + gananciaPal + gananciaMez

ESCRIBIR totalVendidas
ESCRIBIR totalGanancia
ESCRIBIR totalPla, totalPal, totalMez

FIN

Pag. 266
ESTRUCTURAS LÓGICAS DE CONTROL O REPETICIÓN

Etapa 04 - Desarrollo de la Codificación.

Clase PrgTeatro

package DominioDeLaAplicacion;
import Libreria.Math2;

class PrgTeatro {

public static void main ( String arg[] ) {


int numBoleto, tipo, totalVendidas = 0, totalPla=0, totalPal=0, totalMez=0 ;
double totalGanancia=0, costoPla, costoPal, costoMez ;
double gananciaPla, gananciaPal, ganaciaMez ;

System.out.println ( “Ingrese el costo de la entrada para platea: ”);


costoPla = Math2.getDouble();
System.out.println ( “Ingrese el costo de la entrada para palco: ”);
costoPal = Math2.getDouble();
System.out.println ( “Ingrese el costo de la entrada para mezanine: ”);
costoMez = Math2.getDouble();
do {
do {
System.out.println ( “Ingrese el número de boleto: ”);
numBoleto = Math2.getInt();
} while (numBoleto < 0) ;

if (numBoleto <> 0) {
do {
System.out.println ( “Ingrese el lugar”);
System.out.println ( “[1] Platea, [2] Palco [3] Mezanine”);
tipo = Math2.getInt();
} while (tipo < 1 || tipo > 3) ;

switch (tipo) {
case 1 :
totalPla ++ ;
break ;
case 2 :
totalPal ++ ;
break ;
case 3 :
totalMez ++ ;
}
}
} while ( numBoleto <> 0 ) ;

totalVendidas = totalPla + totalPal + totalMez ;


ganaciaPla = totalPla * costoPla ;
ganaciaPal = totalPal * costoPal ;
ganaciaMez = totalMez * costoMez ;
totalGanancia = gananciaPla + gananciaPal + gananciaMez ;
System.out.println ( “Número total de entradas: ” + totalVendidas ) ;
System.out.println ( “Total recaudado S/. ” + totalGanancia ) ;
System.out.println ( “Total vendidas platea: ” + totalPla ) ;
System.out.println ( “Total vendidas palco: ” + totalPal ) ;
System.out.println ( “Total vendidas mezanine: ” + totalMez ) ;
}
}

Pag. 267

Vous aimerez peut-être aussi