18 octubre, 2018

La estructura de selección doble if...else

La estructura de selección doble if...else

Continuando con las estructuras algorítmicas de selección. Hoy veremos el uso de la estructura de selección doble If...else, el cual nos va a permitir crear programas que resuelvan problemas que involucren tomas de decisiones. 

Así, en el tema de hoy vamos a diseñar algoritmos en pseudocódigo y en Java que permitan resolver problemas que involucren tomas de decisión haciendo uso de la estructura de selección doble if else.




En el tema anterior habíamos visto el uso de las estructura de selección simple if..

Todo esto es como una sopita donde le vamos poniendo ingredientes para que el resultado nos quede cada vez mejor.

Estos posts te servirán tanto si estás empezando de cero en el mundo de la programación, si eres estudiante de primer año y necesitas reforzar algunos temas, o si eres un curioso que le entró la duda y las ganas de aprender a programar. Sea el motivo que fuese por lo que estás aquí, te invito a seguir esta serie de publicaciones que estaré realizando, en donde aprenderás con los temas que te vaya enseñando lo básico de la programación para que puedas realizar tú mismo tus propios programas.

¡Bienvenido!

¿Qué es la estructura de selección doble if else?


La estructura de selección doble if…else (si…sino), evalúa una condición lógica y para el caso que resulte ser verdadera dicha condición, ejecutará una acción (acciona), caso contrario ejecutara la acción (accionb). En ambos casos, la acción puede ser una acción simple (una sola acción) o una acción compuesta (un bloque de acciones) como se puede apreciar en el siguiente diagrama de flujo.

Diagrama de flujo de la estructura de selección doble if else


En la tabla que sigue se muestra el código y el pseudocódigo de la estructura de selección doble if-else. Note que en el caso de bloques de acciones, estas deben estar encerradas entre llaves de bloque { }.

Código y pseudocódigo de la estructura de selección doble if else

Problemas


Problema 1

Una tienda ha puesto en oferta la venta por docenas de cierto tipo de producto ofreciendo un descuento del 15% por la compra de no menos de 6 docenas y 10% en caso contrario. Adicionalmente la empresa ofrece un obsequio de 2 lapiceros por cada 3 docenas por la compra de no menos 30 docenas del producto; en caso contrario, no efectúa ningún obsequio. Diseñe un programa que determine el monto de la compra, el monto del descuento, el monto a pagar y la cantidad de lapiceros de obsequio por la compra de cierta cantidad de docenas del producto.

Algoritmo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Inicio
   // Declaración de variables
   entero docenas, obsequio
   real montocom, montodes, montopag, precio
   // Entrada de datos
   Leer docenas, precio
   // Calcula el monto de la compra
   montocom = docenas * precio
   // Calcula el monto del descuento
   si(docenas >= 6)
      montodes = 0.15 * montocom
   sino
      montodes = 0.10 * montocom
   // Calcula el monto a pagar
   montopag = montocom - montodes
   // Calcula el número de lapiceros de obsequio
   si(docenas >= 30)
      obsequio = 2*(docenas/3)
   sino
      obsequio = 0
   // Salida de resultados
   Imprimir montocom, montodes, montopag, obsequio
Fin

Programa



Código Fuente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package problemas_resueltos;
 
// Importamos librerías
import java.awt.event.*; // Implementar los eventos de acción del programa
import java.awt.*; // Implementar los widgets más usados
import javax.swing.*; // Mejora del paquete awt
 
// Creamos una clase que herede de JApplet e implementamos los tipos de escuchadores que ocupemos
public class Problema1 extends JApplet implements ActionListener {
 
 // Declaración de variables
 JLabel lblDocenas, lblPrecio;
 JTextField txtDocenas, txtPrecio;
 JButton btnProcesar, btnBorrar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {
  getContentPane().setLayout(null); // Nosotros definimos la posición y el tamaño de los componentes
 
  lblDocenas = new JLabel("Docenas:");
  lblDocenas.setBounds(15, 15, 70, 23);
  getContentPane().add(lblDocenas);
 
  txtDocenas = new JTextField();
  txtDocenas.setBounds(80, 15, 50, 23);
  getContentPane().add(txtDocenas);
 
  lblPrecio = new JLabel("Precio:");
  lblPrecio.setBounds(15, 39, 70, 23);
  getContentPane().add(lblPrecio);
 
  txtPrecio = new JTextField();
  txtPrecio.setBounds(80, 39, 50, 23);
  getContentPane().add(txtPrecio);
 
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(305, 15, 101, 23);
  btnProcesar.addActionListener(this); // Al presionar se disparará el evento de acción (actionPerformed)
  getContentPane().add(btnProcesar);
 
  btnBorrar = new JButton("Borrar");
  btnBorrar.setBounds(305, 39, 101, 23);
  btnBorrar.addActionListener(this); // Al presionar se disparará el evento de acción (ActionPerformed)
  getContentPane().add(btnBorrar);
 
  txtArea = new JTextArea();
  txtArea.setFont(new Font("monospaced", 0, 12));
 
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 70, 394, 130);
  getContentPane().add(scpScroll);
 }
 
 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) { // Recibe como parámetro el evento que tuvo lugar la acción
  if (e.getSource() == btnProcesar) {
   // Declaración de variables
   int docenas, obsequio;
   double precio, icompra, idescuento = 0, ipagar;
 
   // Entrada de datos
   docenas = Integer.parseInt(txtDocenas.getText());
   precio = Double.parseDouble(txtPrecio.getText());
 
   // Cálculo del importe de la compra
   icompra = docenas * precio;
 
   // Cálculo del importe de descuento
   if (docenas >= 6)
    idescuento = 0.15 * icompra;
   else
    idescuento = 0.10 * icompra;
 
   // Cálculo del obsequio
   if (docenas >= 30)
    obsequio = docenas / 3 * 2;
   else
    obsequio = 0;
 
   // Cálculo del importe a pagar
   ipagar = icompra - idescuento;
 
   // Salida de resultados
   txtArea.setText("-------------------" + "\n");
   txtArea.append("Monto de la compra:  " + "S/." + icompra + "\n");
   txtArea.append("Monto del descuento: " + "S/." + idescuento + "\n");
   txtArea.append("Monto a pagar:       " + "S/." + ipagar + "\n");
   txtArea.append("Obsequio:            " + obsequio + " lapiceros");
  }
 
  if (e.getSource() == btnBorrar) {
   txtDocenas.setText("");
   txtPrecio.setText("");
   txtArea.setText("");
   txtDocenas.requestFocus();
  }
 
 }
}

Problema 2

Una institución benéfica recibe anualmente una donación proveniente de Europa y lo reparte entre un centro de salud, un comedor de niños y una parte lo invierte en la bolsa de acuerdo a lo siguiente:

• Si el monto de la donación es de $10000 o más: 30% se destina al centro de salud, 50% al comedor de niños y el resto se invierte en la bolsa.
• Si el monto de la donación es menor que $10000: 25% se destina al centro de salud, 60% al comedor de niños y el resto se invierte en la bolsa.

La institución desea saber cuanto de dinero destinará a cada rubro anualmente.

Algoritmo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Inicio
   // Declaración de variables
   real donacion, comedor, salud, bolsa
   // Entrada de datos
   Leer donacion
   // Reparte la donación
   si( donacion >= 10000 ){
       comedor = 0.30*donacion
       salud = 0.50*donacion
       bolsa = 0.20*donacion
   }
   sino{
       comedor = 0.25*donacion
       salud = 0.60*donacion
       bolsa = 0.15*donacion
   }
   // Salida de resultados
   Imprimir comedor, salud, bolsa
Fin

Programa


Código Fuente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
 
public class Problema2 extends JApplet implements ActionListener {
 /**
  *
  */
 private static final long serialVersionUID = 8496579728313908763L;
 
 // Declaración de variables
 JLabel lblDonacion;
 JTextField txtDonacion;
 JButton btnProcesar, btnBorrar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {
  getContentPane().setLayout(null);
 
  lblDonacion = new JLabel("Donación:");
  lblDonacion.setBounds(15, 15, 70, 23);
  getContentPane().add(lblDonacion);
 
  txtDonacion = new JTextField();
  txtDonacion.setBounds(80, 15, 50, 23);
  getContentPane().add(txtDonacion);
 
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(305, 15, 101, 23);
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
 
  btnBorrar = new JButton("Borrar");
  btnBorrar.setBounds(305, 39, 101, 23);
  btnBorrar.addActionListener(this);
  getContentPane().add(btnBorrar);
 
  txtArea = new JTextArea();
  txtArea.setFont(new Font("monospaced", 0, 12));
 
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 70, 394, 130);
  getContentPane().add(scpScroll);
 }
 
 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) {
  // Si hizo click en Procesar
  if (e.getSource() == btnProcesar) {
   // Declaración de variables
   double donacion, centrosalud, comedorniños, bolsa;
 
   // Entrada de datos
   donacion = Double.parseDouble(txtDonacion.getText());
 
   // Reparte la donación
   if (donacion >= 10000) {
    centrosalud = 0.30 * donacion;
    comedorniños = 0.50 * donacion;
    bolsa = 0.20 * donacion;
   } else {
    centrosalud = 0.25 * donacion;
    comedorniños = 0.60 * donacion;
    bolsa = 0.15 * donacion;
   }
 
   // Salida de resultados
   txtArea.setText("Centro de salud:  " + "S/." + centrosalud + "\n");
   txtArea.append("Comedor de niños: " + "S/." + comedorniños + "\n");
   txtArea.append("La bolsa:         " + "S/." + bolsa);
  }
 
  if (e.getSource() == btnBorrar) {
   txtDonacion.setText("");
   txtArea.setText("");
   txtDonacion.requestFocus();
  }
 }
}


Problema 3

En una oficina de empleos categorizan a los postulantes en función del sexo y de la edad de acuerdo a lo siguiente:

• Si la persona es de sexo femenino: categoría FA si tiene menos de 23 años y FB en caso contrario.
• Si la persona es de sexo masculino: categoría MA si tiene menos de 25 años y MB en caso contrario.

Diseñe un programa que determine la categoría de un postulante.

Algoritmo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Inicio
   // Declaración de variables
   entero sexo, edad
   cadena categoria
   // Entrada de datos
   Leer sexo, edad
   // Determina la categoría
   si( sexo == 0 ){
       si( edad < 23 )
           categoria = "FA"
       sino
           categoria = "FB"
   } sino {
       si( edad < 25 )
           categoria = "MA"
       sino
           categoria = "MB"
   }
   // Salida de resultados
   Imprimir categoria
Fin

Programa


Código Fuente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
 
public class Problema3 extends JApplet implements ActionListener {
 
 /**
  *
  */
 private static final long serialVersionUID = 3780056368010462959L;
 
 // Declaración de variables
 JLabel lblSexo, lblEdad;
 JComboBox cboSexo;
 JTextField txtEdad;
 JButton btnProcesar, btnBorrar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {
  getContentPane().setLayout(null);
 
  lblSexo = new JLabel("Sexo:");
  lblSexo.setBounds(15, 15, 70, 23);
  getContentPane().add(lblSexo);
 
  cboSexo = new JComboBox();
  cboSexo.addItem("Femenino");
  cboSexo.addItem("Masculino");
  cboSexo.setBounds(80, 15, 100, 23);
  getContentPane().add(cboSexo);
 
  lblEdad = new JLabel("Edad:");
  lblEdad.setBounds(15, 39, 70, 23);
  getContentPane().add(lblEdad);
 
  txtEdad = new JTextField();
  txtEdad.setBounds(80, 39, 100, 23);
  getContentPane().add(txtEdad);
 
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(305, 15, 101, 23);
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
 
  btnBorrar = new JButton("Borrar");
  btnBorrar.setBounds(305, 39, 101, 23);
  btnBorrar.addActionListener(this);
  getContentPane().add(btnBorrar);
 
  txtArea = new JTextArea();
  txtArea.setFont(new Font("monospaced", 0, 12));
 
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 70, 394, 130);
  getContentPane().add(scpScroll);
 }
 
 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) {
  // Si hizo clic en Procesar
  if (e.getSource() == btnProcesar) {
   // Declaración de variables
   int sexo, edad;
   String categoria, s;
 
   // Entrada de datos
   sexo = cboSexo.getSelectedIndex();
   edad = Integer.parseInt(txtEdad.getText());
 
   // Proceso de cálculo
   if (sexo == 0) {
    s = "Femenino";
    if (edad < 23)
     categoria = "FA";
    else
     categoria = "FB";
   } else {
    s = "Masculino";
    if (edad < 25)
     categoria = "FA";
    else
     categoria = "FB";
   }
 
   // Salida de resultados
   txtArea.setText("-------------------" + "\n");
   txtArea.append("Sexo: " + s + "\n");
   txtArea.append("Edad: " + edad + "\n");
   txtArea.append("Categoria: " + categoria);
  }
 
  if (e.getSource() == btnBorrar) {
   txtEdad.setText("");
   txtArea.setText("");
   cboSexo.requestFocus();
  }
 
 }
}


Problema 4

Diseñe un algoritmo que lea un número entero positivo de tres cifras y determine si las cifras del número son o no consecutivas (en orden ascendente o en orden descendente). En caso que el número no cumpla con ser positivo de tres cifras, imprima el mensaje: "El número debe ser positivo de tres cifras".

Algoritmo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Inicio
   // Declaración de variables
   entero numero, u, d, c
   cadena resultado
   // Entrada de datos
   Leer numero
   // Prosigue si el número es correcto, sino pone un mensaje de error
   si( numero >= 100 && numero <= 999 ){
       // Determina las cifras del número
       c = numero/100
       d = (numero%100)/10
       u = numero%10
       // Determina si las cifras del número son o no consecutivas
       si((d == c+1 && u == d+1) || (d == c-1 && u == d-1))
           resultado = "Las cifras del número son consecutivas"
       sino
           resultado = "Las cifras del número no son consecutivas"
       // Salida de resultados
       Imprimir resultado
   } sino
       Imprimir "El número debe ser positivo de tres cifras"
Fin

Programa

Código Fuente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package problemas_resueltos;
 
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
 
public class Problema4 extends JApplet implements ActionListener {
 
 // Declaración de variables
 JLabel lblNumero;
 JTextField txtNumero;
 JButton btnProcesar, btnBorrar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {
  getContentPane().setLayout(null);
 
  lblNumero = new JLabel("Número:");
  lblNumero.setBounds(15, 15, 70, 23);
  getContentPane().add(lblNumero);
 
  txtNumero = new JTextField();
  txtNumero.setBounds(80, 15, 100, 23);
  getContentPane().add(txtNumero);
 
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(305, 15, 101, 23);
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
 
  btnBorrar = new JButton("Borrar");
  btnBorrar.setBounds(305, 39, 101, 23);
  btnBorrar.addActionListener(this);
  getContentPane().add(btnBorrar);
 
  txtArea = new JTextArea();
  txtArea.setFont(new Font("monospaced", 0, 12));
 
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 70, 394, 130);
  getContentPane().add(scpScroll);
 }
 
 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) {
  // Si hizo clic en Procesar
  if (e.getSource() == btnProcesar) {
   // Declaración de variables
   int numero, c, d, u;
   String resultado = "";
   // Entrada de datos
   numero = Integer.parseInt(txtNumero.getText());
   // Validamos que el número ingresado sea de 3 cifras
   if (numero >= 100 && numero <= 999) {
    // Descomponer en cifras el número
    c = numero / 100;
    d = numero % 100 / 10;
    u = numero % 100 % 10;
    // Proceos de cálculo
 
    // Determina si las cifras del número son o no consecutivas
    if ((d == c + 1 && u == d + 1) || (d == c - 1 && u == d - 1))
     resultado = "Las cifras del número son consecutivas";
    else
     resultado = "Las cifras del número no son consecutivas";
 
    /*
     * if ((c < d && d < u) || (c > d && d > u)) resultado =
     * "Las cifras del número son consecutivas"; else resultado =
     * "Las cifras del número no son consecutivas";
     */
   } else
    resultado = "El numero debe ser positivo de 3 cifras";
   // Salida de resultados
   txtArea.setText("-------------------" + "\n");
   txtArea.append("Número: " + numero + "\n");
   txtArea.append("Resultado: " + resultado);
  }
 
  // Si hizo clic en Borrar
  if (e.getSource() == btnBorrar) {
   txtNumero.setText("");
   txtArea.setText("");
   txtNumero.requestFocus();
  }
 }
}

Problema 5

Una papelera ha puesto en oferta la venta al por mayor (en cientos) de papel bond de acuerdo a los siguientes criterios:

•  Para los primeros 5 cientos, se hace un descuento del 10% por cada ciento.
•  Para los cientos en exceso sobre 5, se hace un descuento del 15% por cada ciento.

Diseñe un algoritmo que determine el importe bruto, el importe del descuento y el importe a pagar por una compra de papel bond.

Algoritmo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Inicio
   // Declaración de variables
   real importebru, importedes, importepag, precio
   entero cientos
   // Entrada de datos
   Leer precio, cientos
   // Determina el importe bruto
   importebru = precio*cientos
   // Determina el importe del descuento
   si( cientos <= 5 )
       importedes = 0.10*precio*cientos
   sino
       importedes = 0.10*5*precio + 0.15*(cientos-5)*precio;
   // Determina el importe a pagar
       importepag = importebru - importedes
   // Salida de resultados
   Imprimir importebru, importedes, importepag
Fin

Programa


Código Fuente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package problemas_resueltos;
 
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
 
public class Problema5 extends JApplet implements ActionListener {
 
 // Declaración de variables
 JLabel lblCientos, lblPrecio;
 JTextField txtCientos, txtPrecio;
 JButton btnProcesar, btnBorrar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {
  getContentPane().setLayout(null);
 
  lblCientos = new JLabel("Cientos:");
  lblCientos.setBounds(15, 15, 70, 23);
  getContentPane().add(lblCientos);
 
  txtCientos = new JTextField();
  txtCientos.setBounds(80, 15, 50, 23);
  getContentPane().add(txtCientos);
 
  lblPrecio = new JLabel("Precio:");
  lblPrecio.setBounds(15, 39, 70, 23);
  getContentPane().add(lblPrecio);
 
  txtPrecio = new JTextField();
  txtPrecio.setBounds(80, 39, 50, 23);
  getContentPane().add(txtPrecio);
 
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(305, 15, 101, 23);
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
 
  btnBorrar = new JButton("Borrar");
  btnBorrar.setBounds(305, 39, 101, 23);
  btnBorrar.addActionListener(this);
  getContentPane().add(btnBorrar);
 
  txtArea = new JTextArea();
  txtArea.setFont(new Font("monospaced", 0, 12));
 
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 70, 394, 130);
  getContentPane().add(scpScroll);
 }
 
 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) {
  // Si hizo clic en Procesar
  if (e.getSource() == btnProcesar) {
   // Declaración de variables
   int cientos;
   double precio, ibruto, idescuento, ipagar;
 
   // Entrada de datos
   cientos = Integer.parseInt(txtCientos.getText());
   precio = Double.parseDouble(txtPrecio.getText());
 
   // Determinar el importe bruto
   ibruto = cientos * precio;
   // Determinar el importe de descuento
   if (cientos <= 5)
    idescuento = 0.10 * precio * cientos;
   else
    idescuento = 0.10 * 5 * precio + 0.15 * (cientos - 5) * precio;
 
   // Determinar el importe a pagar
   ipagar = ibruto - idescuento;
 
   // Salida de resultados
   txtArea.setText("-------------------" + "\n");
   txtArea.append("Importe bruto: " + ibruto + "\n");
   txtArea.append("Importe de descuento: " + idescuento + "\n");
   txtArea.append("Importe a pagar: " + ipagar);
  }
  // Si hizo clic en Borrar
  if (e.getSource() == btnBorrar) {
   txtCientos.setText("");
   txtPrecio.setText("");
   txtArea.setText("");
   txtCientos.requestFocus();
  }
 }
}


Problema 6

Una empresa desea adquirir cierta cantidad de unidades de dos productos A y B a un proveedor cuyos precios son los siguientes:

• Producto A: costo unitario igual a S/.25.0 y 15% de descuento para más de 50 unidades adquiridas.
• Proveedor B: costo unitario igual a S/.27.5 y 10% de descuento para más de 35 unidades adquiridas.

Diseñe un programa que determine el importe bruto total, el importe del descuento total y el importe total a pagar por la compra de cierta cantidad de unidades de ambos productos.

Algoritmo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Inicio
   // Declaración de variables
   entero unidadesA, unidadesB
   real impcomA, impdesA, imppagA
   real impcomB, impdesB, imppagB
   real impcomtot, impdestot, imppagtot
 
   // Entrada de datos
   Leer unidadesA, unidadesB
 
   // Determina los importes para el proveedor A
   impcomA = unidadesA*25.0
   si( unidadesA > 50 )
       impdesA = 0.15*impcomA
   sino
       impdesA = 0
   imppagA = impcomA - impdesA
 
   // Determina los importes para el proveedor B
   impcomB = unidadesB*27.5
   si( unidadesB > 35 )
       impdesB = 0.10*impcomB
   sino
       impdesB = 0
   imppagB = impcomB - impdesB
 
   // Determina los importes totales
   impcomtot = impcomA + impcomB
   impdestot = impdesA + impdesB
   imppagtot = imppagA + imppagB
 
   // Salida de resultados
   Imprimir impcomtot, impdestot, imppagtot
Fin


Programa


Código Fuente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package problemas_resueltos;
 
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
 
public class Problema6 extends JApplet implements ActionListener {
 
 // Declaración de variables
 JLabel lblProductoA, lblProductoB;
 JTextField txtProductoA, txtProductoB;
 JButton btnProcesar, btnBorrar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {
  getContentPane().setLayout(null);
 
  lblProductoA = new JLabel("Producto A:");
  lblProductoA.setBounds(15, 15, 80, 23);
  getContentPane().add(lblProductoA);
 
  txtProductoA = new JTextField();
  txtProductoA.setBounds(90, 15, 50, 23);
  getContentPane().add(txtProductoA);
 
  lblProductoB = new JLabel("Producto B:");
  lblProductoB.setBounds(15, 39, 80, 23);
  getContentPane().add(lblProductoB);
 
  txtProductoB = new JTextField();
  txtProductoB.setBounds(90, 39, 50, 23);
  getContentPane().add(txtProductoB);
 
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(305, 15, 101, 23);
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
 
  btnBorrar = new JButton("Borrar");
  btnBorrar.setBounds(305, 39, 101, 23);
  btnBorrar.addActionListener(this);
  getContentPane().add(btnBorrar);
 
  txtArea = new JTextArea();
  txtArea.setFont(new Font("monospaced", 0, 12));
 
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 70, 394, 130);
  getContentPane().add(scpScroll);
 }
 
 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) {
  // Si hizo clic en Procesar
  if (e.getSource() == btnProcesar) {
   // Declaración de variables
   int unidadesA, unidadesB;
   double icompraA, icompraB, idescuentoA, idescuentoB;
   Double icompratot, idescuentotot, ipagartot;
 
   // Entrada de datos
   unidadesA = Integer.parseInt(txtProductoA.getText());
   unidadesB = Integer.parseInt(txtProductoB.getText());
 
   // Determinar el importe bruto de ambos productos
   icompraA = unidadesA * 25.0;
   icompraB = unidadesB * 27.5;
 
   // Determinar el descuento del producto A
   if (unidadesA > 50)
    idescuentoA = 0.15 * icompraA;
   else
    idescuentoA = 0;
 
   // Determinar el descuento del producto B
   if (unidadesB > 35)
    idescuentoB = 0.10 * icompraB;
   else
    idescuentoB = 0;
 
   // Cálculo del importe bruto total
   icompratot = icompraA + icompraB;
 
   // Cálculo del importe de descuento total
   idescuentotot = idescuentoA + idescuentoB;
 
   // Cálculo del importe a pagar total
   ipagartot = icompratot - idescuentotot;
 
   // Salida de resultados
   txtArea.setText("-------------------" + "\n");
   txtArea.append("Importe de la compra total: " + icompratot + "\n");
   txtArea.append("Importe de descuento total: " + idescuentotot + "\n");
   txtArea.append("Importe a pagar total: " + ipagartot);
  }
  // Si hizo clic en Borrar
  if (e.getSource() == btnBorrar) {
   txtProductoA.setText("");
   txtProductoB.setText("");
   txtArea.setText("");
   txtProductoA.requestFocus();
  }
 
 }
}


Para recordar


- Poner ; al final de la condición de un if...else causa un error de sintaxis.
- Si el cuerpo del if o el cuerpo del else incluyen más de una acción, estas deben ir encerradas entre llaves de bloque { }.

Descargar ejercicios resueltos


 Descargar archivo

Puedes completar lo aprendido asistiendo el material en video.

   Clic aquí

¡Acabas de ver el tema La estructura de selección doble if...else del curso de Introducción a la Algoritmia y a la programación en Java! ¡Fácil verdad! Ir al índice


Asimismo, si deseas saber más acerca de estos temas, recuerda que puedes comprar la guía completa con todos los temas, ejercicios, evaluaciones resueltas, proyectos y más; para ello, tienes que ingresar al siguiente enlace. Y si eres seguidor de la comunidad Aprendec puedes acceder a un descuento del -%32.

¡Quiero esto!
¡Qué pases un buen día!

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!