Top Banner
Ejercicios del Primer Parcial En VB2008 Por Manuel Fernández y Lisbeth Pacheco Ejercicios resueltos en el primer parcial traducidos al Visual Basic 2008, se incluyen análisis y algoritmos en Algor. El proceso de toma de datos es a través de proceso interactivo. Período 2-2009
33

Ejercicios resueltos estructuras repetitivas

Jan 24, 2023

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer

Parcial En VB2008 Por Manuel Fernández y Lisbeth Pacheco

Ejercicios resueltos en el primer parcial traducidos al Visual

Basic 2008, se incluyen análisis y algoritmos en Algor. El

proceso de toma de datos es a través de proceso interactivo.

Período 2-2009

Page 2: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

1

Período

2-2009

Contenido

Ejercicio 1 ...................................................................................................................................................... 3

Análisis del Problema .................................................................................................................. 3

Tabla de Variables ....................................................................................................................... 3

Algoritmo ..................................................................................................................................... 4

Código en Visual Basic 2008 ........................................................................................................ 5

Ejercicio 2 ...................................................................................................................................................... 7

Análisis del Problema .................................................................................................................. 7

Tabla de Variables ....................................................................................................................... 7

Algoritmo ..................................................................................................................................... 8

Código en Visual Basic 2008 ........................................................................................................ 9

Ejercicio 3 .................................................................................................................................................... 10

Análisis del Problema ................................................................................................................ 10

Tabla de Variables ..................................................................................................................... 10

Algoritmo ................................................................................................................................... 11

Código en Visual Basic 2008 ...................................................................................................... 11

Ejercicio 4 .................................................................................................................................................... 12

Análisis del Problema ................................................................................................................ 13

Tabla de Variables ..................................................................................................................... 13

Algoritmo ................................................................................................................................... 14

Código en Visual Basic 2008 ...................................................................................................... 15

Ejercicio 5 .................................................................................................................................................... 16

Análisis del Problema ................................................................................................................ 16

Tabla de Variables ..................................................................................................................... 17

Algoritmo ................................................................................................................................... 17

Código en Visual Basic 2008 ...................................................................................................... 19

Ejercicio 6 .................................................................................................................................................... 20

Análisis del Problema ................................................................................................................ 21

Tabla de Variables ..................................................................................................................... 21

Page 3: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

2

Período

2-2009

Algoritmo ................................................................................................................................... 22

Código en Visual Basic 2008 ...................................................................................................... 23

Ejercicio 7 .................................................................................................................................................... 25

Análisis del Problema ................................................................................................................ 26

Tabla de Variables ..................................................................................................................... 26

Algoritmo ................................................................................................................................... 27

Código en Visual Basic 2008 ...................................................................................................... 28

Ejercicio 8 .................................................................................................................................................... 30

Algoritmo ................................................................................................................................... 30

Código en Visual Basic 2008 ...................................................................................................... 31

Page 4: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

3

Período

2-2009

Ejercicio 1

En un experimento se obtuvieron un conjunto de pares de valores (S, V) y se requiere que

desarrolle un programa que determine e imprima:

1) Cuantos pares (S, V) tienen el mismo valor de S que el primer par (S, V) de la lista.

2) Primer valor de S mayor que V

3) En cuantos pares (S, V) se cumple que S es el doble de V

4) Productoria de los valores se S no nulos, donde V es nulo.

Análisis del Problema

¿Qué información está presente?

¿Qué resultados exige? ¿Cómo lo logro?

1. Conjunto de pares (S, V) 2. Centinela

1. Cuantos pares (S, V) tienen el mismo valor de S del primer par

2. Primer valor de S, donde S > V 3. Cuantas veces se cumple que

S=2*V 4. Productoria de los valores de S

no nulos, donde V=0

1. Se inician los contadores en cero, la productoria en uno y la bandera en cero antes del ciclo

2. Dentro del ciclo, después de leer, se captura con PS el primer valor de S leído y con el resto de los pares se cuenta con C1 cuantas veces S=PS

3. Luego, si se verifica que S > V, se captura con PSV el primer valor de S>V

4. Luego, si se verifica que S = 2*V se cuenta este hecho con C2

5. Luego, si se verifica que V = 0 y S no es nulo, se acumula por producto en P el valor de S

6. Después del ciclo, se imprimen los contadores y la productoria y si hubo algún S>V se imprime PSV

Tabla de Variables Descripción del dato Nombre de la Variable Tipo de Dato

Valor de S S O Entero ⊗ Real O Lógico O Cadena

Valor de V V O Entero ⊗ Real O Lógico O Cadena

Centinela Cent O Entero O Real O Lógico ⊗ Cadena

Bandera para capturar el primer valor de S

Capturado1 ⊗ Entero O Real O Lógico O Cadena

Primer Valor de S PS O Entero ⊗ Real O Lógico O Cadena

Cantidad de veces que se repite el primer valor de S en el resto de los pares

C1 | S=PS ⊗ Entero O Real O Lógico O Cadena

Bandera para capturar el primer valor de S cuyo V > 0

Capturado2 ⊗ Entero O Real O Lógico O Cadena

Primer valor de S donde su V >0 PSV O Entero ⊗ Real O Lógico O Cadena

Cantidad de veces que S=2*V C2 | S=2*V ⊗ Entero O Real O Lógico O Cadena

Productoria de los valores de S no nulos, donde V sea nulo

P <- P * S | (S <> 0) and (V=0) O Entero ⊗ Real O Lógico O Cadena

Page 5: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

4

Período

2-2009

Algoritmo Algoritmo uno Variables ; Entrada - Proceso

S, V : Real ; un par de valores de la lista Cent : Cadena ; Centinela ; Proceso - Auxiliar

Capturado1 : entero ; Bandera Captura Primer Valor de S Capturado2 : entero ; Bandera Captura del primer S | S > V PS : Real ; Primer valor de S de la lista ; Proceso - Salida

C1 : Entero ; Cantidad de pares donde se repite PS en S C2 : Entero ; Cantidad de veces donde S=2*V P : Real ; Productoria de S, (S<>0) AND (V=0) ; Salida

PSV : Real ; Primer valor de S | S > V Inicio ; iniciar contadores, productoria y banderas

Capturado1 <- 0 Capturado2 <- 0 C1 <- 0 C2 <- 0 P <- 1 Repetir Imprimir "Valor de S:" Leer S Imprimir "Valor de V:" Leer V Si Capturado1 = 0 entonces PS <- S Capturado1 <- 1 Sino Si S=PS entonces C1 <- C1 + 1 Finsi FinSi Si S > V entonces Si Capturado2 = 0 entonces PSV<-S Capturado2 <- 1 Finsi Finsi Si S=2*V entonces C2 <- C2 + 1 FinSi Si (S <> 0) AND (V = 0) entonces P <- P * S FinSi Imprimir "Ultimo Par (S/N)?:" Leer Cent Hasta (Cent = "S") OR (Cent = "s") Imprimir "Cantidad de veces que se repite el primer valor de S:",C1 Si Capturado2=0 entonces

Page 6: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

5

Período

2-2009

Imprimirln "En ningun par, S fue mayor que V" Sino Imprimirln "Primer valor de S, donde S fue mayor que V:",PSV FinSi Imprimirln "Cantidad de veces que S duplica a V:", C2 Imprimirln "Productoria de S donde V fue nulo:",P Fin

Código en Visual Basic 2008

Module Module1

Sub Main()

'Declaración de variables

' Entrada(-Proceso)

Dim S, V As Single ' un par de valores de la lista

Dim Cent As String ' Centinela

' Proceso - Auxiliar

Dim Capturado1 As Integer 'Bandera Captura Primer Valor de S

Dim Capturado2 As Integer ' Bandera Captura del primer S | S > V

Dim PS As Single 'Primer valor de S de la lista

' Proceso - Salida

Dim C1 As Integer ' Cantidad de pares donde se repite PS en S

Dim C2 As Integer' Cantidad de veces donde S=2*V

Dim P As Single ' Productoria de S, (S<>0) AND (V=0)

' Salida

Dim PSV As Single' Primer valor de S | S > V

' iniciar contadores, productoria y banderas

Capturado1 = 0

Capturado2 = 0

C1 = 0

C2 = 0

P = 1

Do

Console.Write("Valor de S:")

S = Console.ReadLine

Console.WriteLine("Valor de V:")

V = Console.ReadLine

If Capturado1 = 0 Then

PS = S

Capturado1 = 1

Else

If S = PS Then

C1 = C1 + 1

End If

End If

Page 7: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

6

Período

2-2009

If S > V Then

If Capturado2 = 0 Then

PSV = S

Capturado2 = 1

End If

End If

If S = 2 * V Then

C2 = C2 + 1

End If

If (S <> 0) And (V = 0) Then

P = P * S

End If

Console.Write("Ultimo Par (S/N)?:")

Cent = Console.ReadLine

Loop Until (Cent = "S") Or (Cent = "s")

Console.WriteLine("Cantidad de veces que se repite el primer valor de

S:" & C1)

If Capturado2 = 0 Then

Console.WriteLine("En ningun par, S fue mayor que V")

Else

Console.WriteLine("Primer valor de S, donde S fue mayor que V:" &

PSV)

End If

Console.WriteLine("Cantidad de veces que S duplica a V:" & C2)

Console.WriteLine("Productoria de S donde V fue nulo:" & P)

'para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module

Page 8: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

7

Período

2-2009

Ejercicio 2

Dadas las cédulas y notas de una evaluación complementaria correspondientes a una sección

de Computación I, organizadas según fueron recibidas en la aplicación de la evaluación,

desarrolle un programa Pascal que determine e imprima:

1) Cédula de la primera persona en la lista que aprobó la evaluación

2) Cuantas personas obtuvieron la misma nota que el primero de la lista que aprobó.

3) Porcentaje de reprobados.

Análisis del Problema

¿Qué información está presente?

¿Qué resultados exige? ¿Cómo lo logro?

1. Cédula del estudiante 2. Nota del Estudiante 3. Centinela

1. Cédula del primer estudiante de la lista que aprobó la evaluación

2. Cantidad de estudiantes con la misma nota del primer aprobado

3. Porcentaje de reprobados

1. Se inician los contadores en cero, la bandera en cero antes del ciclo

2. Dentro del ciclo, después de leer, se captura con PC y PN la cedula y nota de la primera nota >=10; si ya fue capturado, se cuenta con C1 las veces que se repite

3. Luego, si se verifica que la Nota < 10, se cuenta el hecho con C2, y se cuenta el hecho que se verificó la condición con C3

4. Después del ciclo, si alguien aprobó, se imprime PC y la cantidad de veces que se repite; Luego se calcula el porcentaje y se imprime

Tabla de Variables Descripción del dato Nombre de la Variable Tipo de Dato

Cédula del Estudiante CI O Entero ⊗ Real O Lógico O Cadena

Nota del Estudiante Nota O Entero ⊗ Real O Lógico O Cadena

Centinela Cent O Entero O Real O Lógico ⊗ Cadena

Bandera para capturar cédula y nota de la primera nota >=10

Capturado ⊗ Entero O Real O Lógico O Cadena

Primera Cédula cuya Nota >=10 PC ⊗ Entero O Real O Lógico O Cadena

Primera Nota >=10 PN O Entero ⊗ Real O Lógico O Cadena

Cantidad de veces que se repite la primera nota >=10 en el resto de la lista

C1 | Nota=PN ⊗ Entero O Real O Lógico O Cadena

Porcentaje de reprobados Por <- C2/C3*100 O Entero ⊗ Real O Lógico O Cadena

Cantidad de veces que Nota <10 C2 | Nota < 10 ⊗ Entero O Real O Lógico O Cadena

Cantidad total de notas C3 | Para toda nota ⊗ Entero O Real O Lógico O Cadena

Page 9: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

8

Período

2-2009

Algoritmo Algoritmo dos Variables ; Entrada - Proceso CI : Entero ; Cedula del Estudiante Nota : Entero ; Nota del Estudiane Cent : Cadena ; Centinela ; Proceso - Auxiliar Capturado : entero ; Bandera Captura Cedula y Nota | Nota >=10 C2 : Entero ; Cantidad de Notas < 10 C3 : Entero ; Cantidad Total de Notas ; Proceso - Salida PC : Entero ; Cedula de la primera Nota >=10 PN : Entero ; Primer Nota >=10 C1 : Entero ; Cantidad de veces que se repite PN en Nota ; Salida Por : Real ; Porcentaje de reprobados Inicio ; iniciar contadores y bandera Capturado <- 0 C1 <- 0 C2 <- 0 C3 <- 0 Repetir Imprimir "Cedula del estudiante:" Leer CI Imprimir "Nota del estudiante:" Leer Nota Si Nota >=10 entonces Si Capturado = 0 entonces PC <- CI PN <- Nota Capturado <- 1 Sino Si Nota = PN entonces C1 <- C1 + 1 FinSi FinSi Sino ; esta reprobado C2 <- C2 + 1 FinSi C3 <- C3 + 1 Imprimir "Ultimo Estudiante (S/N)?:" Leer Cent Hasta (Cent = "S") OR (Cent = "s") Si Capturado = 0 entonces Imprimirln "No hubo estudiantes aprobados en la lista" Sino Imprimirln "Primera Nota aprobatoria de la lista:", PN Imprimirln "Fue obtenida por:", PC Imprimirln "y se repitio en la lista:",C1 FinSi Por <- C2/C3*100 Imprimirln "Porcentaje de Reprobados:",Por Fin

Page 10: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

9

Período

2-2009

Código en Visual Basic 2008 Module Module1

Sub Main()

'Declaración de Variables

' Entrada - Proceso

Dim CI As Integer ' Cedula del Estudiante

Dim Nota As Integer ' Nota del Estudiane

Dim Cent As String 'Centinela

' Proceso - Auxiliar

Dim Capturado As Integer 'Bandera Captura Cedula y Nota | Nota >=10

Dim C2 As Integer ' Cantidad de Notas < 10

Dim C3 As Integer ' Cantidad Total de Notas

' Proceso - Salida

Dim PC As Integer ' Cedula de la primera Nota >=10

Dim PN As Integer ' Primer Nota >=10

Dim C1 As Integer ' Cantidad de veces que se repite PN en Nota

' Salida

Dim Por As Single ' Porcentaje de reprobados

' iniciar contadores y bandera

Capturado = 0

C1 = 0

C2 = 0

C3 = 0

Do

Console.Write("Cedula del estudiante:")

CI = Console.ReadLine

Console.Write("Nota del estudiante:")

Nota = Console.ReadLine

If Nota >= 10 Then

If Capturado = 0 Then

PC = CI

PN = Nota

Capturado = 1

Else

If Nota = PN Then

C1 = C1 + 1

End If

End If

Else

' esta reprobado

C2 = C2 + 1

End If

C3 = C3 + 1

Console.Write("Ultimo Estudiante (S/N)?:")

Cent = Console.ReadLine

Loop Until (Cent = "S") Or (Cent = "s")

Page 11: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

10

Período

2-2009

If Capturado = 0 Then

Console.WriteLine("No hubo estudiantes aprobados en la lista")

Else

Console.WriteLine("Primera Nota aprobatoria de la lista:" & PN)

Console.WriteLine("Fue obtenida por:" & PC)

Console.WriteLine("y se repitio en la lista:" & C1)

End If

Por = C2 / C3 * 100

Console.WriteLine("Porcentaje de Reprobados:" & Por)

'para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module

Ejercicio 3

Dada un conjunto de Q valores de A, positivos, negativos o nulos. Desarrolle un programa que

determine e imprima:

1) La sumatoria de los valores negativos o nulos de A

2) La productoria de los valores positivos no nulos 3) Porcentaje de valores de A nulos.

Análisis del Problema

¿Qué información está presente?

¿Qué resultados exige? ¿Cómo lo logro?

1. Cantidad de valores de A (Q)

2. Valores de A

1. Sumatoria A | A <=0 2. Productoria A | A > 0 3. Porcentaje A=0

1. Se inician el contador y la sumatoria en cero, y la productoria en uno antes del ciclo

2. Dentro del ciclo, después de leer A, si se verifica que A <= 0 se suma A en S1; si además de verifica que A=0, se cuenta este hecho en C2; si no se verifica, es decir que A>0, se acumula por producto en P

Tabla de Variables Descripción del dato Nombre de la Variable Tipo de Dato

Cantidad de Valores de A Q ⊗ Entero O Real O Lógico O Cadena

Valor de A A O Entero ⊗ Real O Lógico O Cadena

Sumatoria de A <=0 S1 O Entero ⊗ Real O Lógico O Cadena Contador de A = 0 C2 ⊗ Entero O Real O Lógico O Cadena

Productoria de A > 0 P ⊗ Entero O Real O Lógico O Cadena

Porcentaje de A=0 Por <- C2/Q*100 O Entero ⊗ Real O Lógico O Cadena

Page 12: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

11

Período

2-2009

Algoritmo Algoritmo tres Variables ; Entrada - Proceso Q : Entero ; Cantidad de valores de A A : Real ; Cada valor de A ; Proceso - Auxiliar I : Entero ; Variable de control C2 : Entero ; Cantidad de veces que A=0 ; Proceso - Salid S1 : Real ; Sumatoria de A | A <= 0 P : Real ; Productoria de A | A > 0 ; Salida Por : Real ; Porcentaje de A=0 Inicio ; iniciar sumador, contador y productoria S1 <- 0 C2 <- 0 P <- 1 Imprimir "Cantidad de valores de A:" Leer Q Para I <- 1 hasta Q hacer Imprimir "Valor de A:" Leer A Si A <= 0 entonces S1 <- S1 + A Si A = 0 entonces C2 <- C2 + 1 FinSi Sino ; A es positivo no nulo P <- P * A finsi Finpara Imprimirln "Sumatoria de valores de A <=0:",S1 Imprimirln "Productoria de valores de A>0:",P Por <- C2/Q*100 Imprimirln "Porcentaje de valores de A nulos:",Por Fin

Código en Visual Basic 2008 Module Module1

Sub Main()

'Declaración de Variables

' Entrada - Proceso

Dim Q As Integer ' Cantidad de valores de A

Dim A As Single ' Cada valor de A

' Proceso - Auxiliar

Dim I As Integer ' Variable de control

Dim C2 As Integer ' Cantidad de veces que A=0

' Proceso - Salid

Dim S1 As Single ' Sumatoria de A | A <= 0

Dim P As Single ' Productoria de A | A > 0

' Salida

Dim Por As Single ' Porcentaje de A=0

Page 13: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

12

Período

2-2009

' iniciar sumador & contador y productoria

S1 = 0

C2 = 0

P = 1

Console.Write("Cantidad de valores de A:")

Q = Console.ReadLine

For I = 1 To Q

Console.Write("Valor de A:")

A = Console.ReadLine

If A <= 0 Then

S1 = S1 + A

If A = 0 Then

C2 = C2 + 1

End If

Else

' A es poiftivo no nulo

P = P * A

End If

Next I

Console.WriteLine("Sumatoria de valores de A <=0:" & S1)

Console.WriteLine("Productoria de valores de A>0:" & P)

Por = C2 / Q * 100

Console.WriteLine("Porcentaje de valores de A nulos:" & Por)

'para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module

Ejercicio 4

Dado un conjunto de pares de valores X1 y X2, donde ambos son valores positivos no nulos,

desarrolle un programa que determine e imprima:

1) El promedio de X1 y X2

2) La media geométrica de X1 y X2, sabiendo que la media geométrica se calcula como 2X1*X2

3) Porcentaje de veces que el promedio es menor que la media geométrica.

4) El primer par de valores de X1 y X2 donde el promedio es igual a la media geométrica.

Page 14: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

13

Período

2-2009

Análisis del Problema

¿Qué información está presente?

¿Qué resultados exige? ¿Cómo lo logro?

1. Valor de X1 2. Valor de X2 3. Centinela

1. Promedio de X1 y X2

2. Media Geométrica de X1 y X2

3. Porcentaje donde el promedio es menor que la media geométrica

4. Primer Par donde el promedio es igual a la media geométrica

1. Se inician los contadores antes del ciclo

2. Dentro del ciclo, después de leer X1 y X2, se calcula e imprime el promedio y Media geométrica de X1 y X2

3. Luego, si se verifica que le promedio es menor que la media geométrica, se cuenta este hecho con C1, y se cuenta el total de pares con C2.

4. Luego, se captura el primer par que se verifica que el promedio es igual a la media geométrica.

5. Después del ciclo, se calcula e imprime el porcentaje y si

hubo algún par donde el promedio y la media geométrica fueron iguales, se imprime el primer par capturado.

Tabla de Variables Descripción del dato Nombre de la Variable Tipo de Dato

Valor de X1 X1 O Entero ⊗ Real O Lógico O Cadena

Valor de X2 X2 O Entero ⊗ Real O Lógico O Cadena

Centinela Cent O Entero O Real O Lógico ⊗ Cadena

Promedio de X1 y X2 Pro <- (X1+X2)/2 O Entero ⊗ Real O Lógico O Cadena

Media geométrica de X1 y X2 Por <- (X1*X2)^0.5 O Entero ⊗ Real O Lógico O Cadena

Bandera para capturar el primer par donde su promedio y media geométrica sean iguales

Capturado ⊗ Entero O Real O Lógico O Cadena

Primera Valor de X1 donde el promedio y media geométrica sean iguales

PX1 O Entero ⊗ Real O Lógico O Cadena

Primera Valor de X2 donde el promedio y media geométrica sean iguales

PX2 O Entero ⊗ Real O Lógico O Cadena

Cantidad de veces donde el promedio es menor que la media geométrica

C1 ⊗ Entero O Real O Lógico O Cadena

Cantidad Total de Pares C2 ⊗ Entero O Real O Lógico O Cadena

Page 15: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

14

Período

2-2009

Algoritmo Algoritmo cuatro Variables ; Entrada - Proceso X1, X2 : Real ; Cada par de valores Cent : Cadena ; Centinela ; Proceso - Auxiliar C1 : Entero ; Cantidad de veces que Pro < MG C2 : Entero ; Cantidad total de pares Capturado : Entero; ; Proceso - Salida Pro : Real ; Promedio de X1 y X2 MG : Real ; Media Geometrica de X1 y X2 PX1, PX2 : Real ; Primer par donde Pro=MG ; Salida Por : Real ; Porcentaje que Pro<MG Inicio ; iniciar C1 <- 0 C2 <- 0 Capturado <- 0 Repetir Imprimir "Valor de X1:" Leer X1 Imprimir "Valor de X2:" Leer X2 Pro <- (X1+X2)/2 Imprimirln "Promedio:",Pro MG <- (X1*X2)^0.5 Imprimirln "Media Geometrica:", MG Si Pro < MG entonces C1 <- C1 + 1 Sino Si Pro = MG entonces Si Capturado = 0 entonces PX1 <- X1 PX2 <- X2 Capturado <- 1 Finsi FinSi Finsi C2 <- C2 + 1 Imprimir "Ultimo par (S/N)?:" Leer Cent Hasta (Cent= "S") OR (Cent = "s") Por <- C1/C2*100 Imprimirln "Porcentaje donde el promedio < Media Geometrico:",Por Si Capturado = 0 entonces Imprimirln "En ningun par el promedio fue igual a la Media Geometrica" Sino Imprimirln "X1 del primer Par donde Promedio=Media Geometrica:",PX1 Imprimirln "X2 del primer Par donde Promedio=Media Geometrica:",PX2 Finsi

Fin

Page 16: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

15

Período

2-2009

Código en Visual Basic 2008 Module Module1

Sub Main()

'Declaración de Variables

' Entrada - Proceso

Dim X1, X2 As ifngle ' Cada par de valores

Dim Cent As String ' Centinela

' Proceso - Auxiliar

Dim C1 As Integer ' Cantidad de veces que Pro < MG

Dim C2 As Integer ' Cantidad total de pares

Dim Capturado As Integer 'bandera

' Proceso - Salida

Dim Pro As ifngle ' Promedio de X1 y X2

Dim MG As ifngle ' Media Geometrica de X1 y X2

Dim PX1, PX2 As ifngle ' Primer par donde Pro=MG

' Salida

Dim Por As Single ' Porcentaje que Pro<MG

' iniciar

C1 = 0

C2 = 0

Capturado = 0

Do

Console.Write("Valor de X1:")

X1 = Console.ReadLine

Console.Write("Valor de X2:")

X2 = Console.ReadLine

Pro = (X1 + X2) / 2

Console.WriteLine("Promedio:" & Pro)

MG = (X1 * X2) ^ 0.5

Console.WriteLine("Media Geometrica:" & MG)

If Pro < MG Then

C1 = C1 + 1

Else

If Pro = MG Then

If Capturado = 0 Then

PX1 = X1

PX2 = X2

Capturado = 1

End If

End If

End If

C2 = C2 + 1

Console.Write("Ultimo par (S/N)?:")

Leer(Cent)

Loop Until (Cent = "S") Or (Cent = "s")

Por = C1 / C2 * 100 Console.writeln("Porcentaje donde el promedio < Media Geometrico:", Por)

If Capturado = 0 Then

Console.WriteLine("En ningun par el promedio fue igual a la Media

Geometrica")

Else

Console.WriteLine("X1 del primer Par donde Promedio=Media

Geometrica:", PX1)

Page 17: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

16

Período

2-2009

Console.WriteLine("X2 del primer Par donde Promedio=Media

Geometrica:", PX2)

End If

'para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module

Ejercicio 5

En el plano cartesiano, la distancia entre dos puntos de coordenadas cartesianas (X1, Y1) y (X2,

Y2) se determina como (X2-X2)2+(Y2-Y1)2 . Dados un conjunto de L coordenadas cartesianas

de tres puntos, desarrolle un programa que determine e imprima para cada trío de puntos:

1) Porcentaje de veces que los puntos forman un triángulo isósceles

2) Entre los triángulos isósceles, porcentaje que forman triángulo rectángulo según el teorema de

Pitágoras: H2 = C12 + C22. Considere todos los casos.

3) Las coordenadas cartesianas de los tres puntos de la lista que forman el primer triángulo

equilátero.

Análisis del Problema

¿Qué información está presente?

¿Qué resultados exige? ¿Cómo lo logro?

1. Un conjunto de sextetos correspondientes, cada par, a la Abscisa y Ordenada de un Punto

2. Centinela 3. La fórmula para

determinar la distancia entre dos puntos

4. Las características de un triángulo Equilátero e Isósceles

1. Porcentaje de puntos que forman triángulo isósceles

2. Entre los triángulos isósceles, porcentaje que forman triangulo rectángulo

3. Coordenadas de los puntos del primer triángulo equilátero

1. Utilizando la fórmula dada se calcula la longitud de cada lado del triángulo (L1, L2, L3)

2. Si L1=L2≠≠≠≠L3 ó L1=L3≠≠≠≠L2 ó L2=L3≠≠≠≠L1 � a) Contar el

hecho que es isósceles con C1 y contar el hecho de verificar el tipo de triángulo con C2 b) Si forma triángulo rectángulo, contar este

hecho con C3. 3. Si L1=L2=L3 � Capturar las

coordenadas de los tres primeros puntos.

4. Después del ciclo, antes de imprimir los resultados,

chequear que hubo triángulos isósceles y equiláteros

Page 18: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

17

Período

2-2009

Tabla de Variables Descripción del dato Nombre de la Variable Tipo de Dato

Cantidad de sextetos L ⊗ Entero O Real O Lógico O Cadena

Abscisa del Primer punto X1 O Entero ⊗ Real O Lógico O Cadena Ordenada del Primer punto Y1 O Entero ⊗ Real O Lógico O Cadena

Abscisa del segundo punto X2 O Entero ⊗ Real O Lógico O Cadena

Ordenada del segundo punto Y2 O Entero ⊗ Real O Lógico O Cadena

Abscisa del tercer punto X3 O Entero ⊗ Real O Lógico O Cadena Ordenada del tercer punto Y3 O Entero ⊗ Real O Lógico O Cadena

Variable de Control I ⊗ Entero O Real O Lógico O Cadena

Longitud del primer punto al segundo punto

L1 O Entero ⊗ Real O Lógico O Cadena

Longitud del segundo punto al tercer punto

L2 O Entero ⊗ Real O Lógico O Cadena

Longitud del tercer punto al primer punto L3 O Entero ⊗ Real O Lógico O Cadena Porcentaje de Triángulos Isósceles Por1= C1/C2 * 100 O Entero ⊗ Real O Lógico O Cadena

Cantidad de triángulos Isósceles C1 ⊗ Entero O Real O Lógico O Cadena

Cantidad total de triángulos C2 ⊗ Entero O Real O Lógico O Cadena

Porcentaje de Isósceles que son triángulo rectángulo

Por2 = C3/C1 *100 O Entero ⊗ Real O Lógico O Cadena

Cantidad de Isósceles que son triángulo rectángulo

C3 ⊗ Entero O Real O Lógico O Cadena

Bandera para capturar los puntos que forman el primer triángulo equilátero

Bandera ⊗ Entero O Real O Lógico O Cadena

Coordenadas de los puntos que forman el primer triángulo equilátero.

PX1,PY1,PX2,PY2,PX3,PY3 O Entero O Real O Lógico ⊗ Cadena

Algoritmo Algoritmo cinco Variables ; Entrada - Proceso L : Entero ; Cantidad de sextetos X1,Y1,X2,Y2,X3,Y3 : Real ; Coordenadas de los tres puntos ; Proceso - Auxiliar I : Entero ; variable de control L1, L2, L3 : Real ; Longitud de los lados del triangulo C1 : Entero ; Cantidad de triangulos isosceles C2 : Entero ; Cantidad total de triangulos C3 : Entero ; Cantidad de triangulos isosceles que son rectangulo Bandera : Entero ; Bandera para capturar los puntos del primer equilatero ; Salida Por1 : Real ; porcentaje de Triangulos Isosceles Por2 : Real ; porcentaje de Triangulos Isosceles y rectángulos PX1,PY1,PX2,PY2,PX3,PY3 : Entero ; Puntos que formaron el primer equilatero Inicio C1 <- 0 C2 <- 0 C3 <- 0 Bandera <- 0 ; 0=No he capturado, 1=Ya capture Imprimir "Cantidad de Sextetos:" Leer L

Page 19: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

18

Período

2-2009

Para I <- 1 hasta L hacer Imprimir "Abscisa del primer punto:" Leer X1 Imprimir "Ordenada del primer punto:" Leer Y1 Imprimir "Abscisa del segundo punto:" Leer X2 Imprimir "Ordenada del segundo punto:" Leer Y2 Imprimir "Abscisa del tercer punto:" Leer X3 Imprimir "Ordenada del tercer punto:" Leer Y3 L1 <- ((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1))^0.5 L2 <- ((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-Y2))^0.5 L3 <- ((X1-X3)*(X1-X3)+(Y1-Y3)*(Y1-Y3))^0.5 C2 <- C2 + 1 Si (L1=L2) AND (L2<>L3) OR (L1=L3) AND (L3<>L2) OR (L2=L3) AND (L3<>L1) entonces ; es isosceles C1 <- C1 + 1 ; Caso L1 Hipotenusa or L2 Hipotenusa or L3 Hipotenusa Si (L1^2=L2^2+L3^2) or (L2^2=L1^2+L3^2) or (L3^2=L1^2+L2^2) entonces

; es rectangulo C3 <- C3 + 1 FinSi FinSi Si (L1=L2) AND (L2=L3) entonces ; es equilatero Si Bandera = 0 entonces PX1 <- X1 PY1 <- Y1 PX2 <- X2 PY2 <- Y2 PX3 <- X3 PY3 <- Y3 Bandera <- 1 FinSi FinSi FinPara Por1 <- C1/C2*100 Imprimirln "Porcentaje de Triangulos Isosceles:",Por1 Si C1 = 0 entonces Imprimirln "No hubo triangulos Isosceles para saber si eran rectangulos" Sino Por2 <- C3/C1 * 100 Imprimirln "Porcentaje de Triangulos isosceles rectangulos:",Por2 FinSi Si Bandera = 0 entonces Imprimirln "No hubo triangulos equilateros" Sino Imprimirln "Coordenadas del primer triangulo equilatero de la lista" Imprimirln "Punto 1: (",PX1,",",PY1,")" Imprimirln "Punto 2: (",PX2,",",PY2,")" Imprimirln "Punto 3: (",PX3,",",PY3,")" FinSi Fin

Page 20: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

19

Período

2-2009

Código en Visual Basic 2008

Module Module1

Sub Main()

'Declaración de Variables

' Entrada - Proceso

Dim L As Integer ' Cantidad de sextetos

Dim X1, Y1, X2, Y2, X3, Y3 As Single ' Coordenadas de los tres puntos

' Proceso - Auxiliar

Dim I As Integer ' variable de control

Dim L1, L2, L3 As Single ' Longitud de los lados del triangulo

Dim C1 As Integer ' Cantidad de triangulos isosceles

Dim C2 As Integer ' Cantidad total de triangulos

Dim C3 As Integer ' Cantidad de triangulos isosceles que son

rectangulo

Dim Bandera As Integer ' Bandera for capturar los puntos del primer

equilatero

' Salida

Dim Por1 As Single ' porcentaje de Triangulos Isosceles

Dim Por2 As Single ' porcentaje de Triangulos Isosceles y rectángulos

Dim PX1, PY1, PX2, PY2, PX3, PY3 As Integer ' Puntos que formaron el

primer equilatero

C1 = 0

C2 = 0

C3 = 0

Bandera = 0 ' 0=No he capturado, 1=Ya capture

Console.Write("Cantidad de Sextetosas")

L = Console.ReadLine

For I = 1 To L

Console.Write("Abscisa del primer punto: ")

X1 = Console.ReadLine

Console.Write("Ordenada del primer punto: ")

Y1 = Console.ReadLine

Console.Write("Abscisa del segundo punto:")

X2 = Console.ReadLine

Console.Write("Ordenada del segundo punto:")

Y2 = Console.ReadLine

Console.Write("Abscisa del tercer punto:")

X3 = Console.ReadLine

Console.Write("Ordenada del tercer punto:")

Y3 = Console.ReadLine

L1 = ((X2 - X1) * (X2 - X1) + (Y2 - Y1) * (Y2 - Y1)) ^ 0.5

L2 = ((X3 - X2) * (X3 - X2) + (Y3 - Y2) * (Y3 - Y2)) ^ 0.5

L3 = ((X1 - X3) * (X1 - X3) + (Y1 - Y3) * (Y1 - Y3)) ^ 0.5

C2 = C2 + 1

If (L1 = L2) And (L2 <> L3) Or (L1 = L3) And (L3 <> L2) Or (L2 =

L3) And (L3 <> L1) Then

' es isosceles

C1 = C1 + 1

' Caso L1 Hipotenusa or L2 Hipotenusa or L3 Hipotenusa

If (L1^2 = L2^2 + L3^2 ) Or (L2 ^2= L1 ^2+ L3 ^2) Or (L3 ^2=

L1 ^2+ L2 ^2) Then

Page 21: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

20

Período

2-2009

' es rectangulo

C3 = C3 + 1

End If

End If

If (L1 = L2) And (L2 = L3) Then

' es equilatero

If Bandera = 0 Then

PX1 = X1

PY1 = Y1

PX2 = X2

PY2 = Y2

PX3 = X3

PY3 = Y3

Bandera = 1

End If

End If

Next I

Por1 = C1 / C2 * 100

Console.WriteLine("Porcentaje de Triangulos Isoscelesas", Por1)

If C1 = 0 Then

Console.WriteLine("No hubo triangulos Isosceles for saber if eran

rectangulos")

Else

Por2 = C3 / C1 * 100

Console.WriteLine("Porcentaje de Triangulos isosceles

rectangulosas", Por2)

End If

If Bandera = 0 Then

Console.WriteLine("No hubo triangulos equilateros")

Else

Console.WriteLine("Coordenadas del primer triangulo equilatero de

la lista")

Console.WriteLine("Punto 1as (" & PX1 & "," & PY1 & ")")

Console.WriteLine("Punto 2as (" & PX2 & "," & PY2 & ")")

Console.WriteLine("Punto 3as (" & PX3 & "," & PY3 & ")")

End If

'Para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module

Ejercicio 6

Se tiene la siguiente información relacionada a los empleados de una empresa:

nombre del empleado Sexo: 0 = femenino, 1 = masculino departamento: 1= compras, 2= contabilidad, 3= control de calidad, 4= ingeniería edad tiempo en años que tiene trabajando en la empresa

Elabore un programa que determine lo siguiente:

Page 22: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

21

Período

2-2009

1) Promedio de edad de las mujeres

2) Promedio del tiempo trabajando para la empresa del personal mayor de 40 años

3) Nombre y edad de la persona con mayor tiempo trabajando en la empresa

4) Porcentaje de mujeres que trabajan en el departamento de contabilidad

Análisis del Problema

¿Qué información está presente?

¿Qué resultados exige? ¿Cómo lo logro?

1. Nombre del Empleado 2. Sexo del Empleado 3. Departamento 4. Edad 5. Tiempo trabajado en años 6. Centinela

1. Promedio de Edad de las mujeres

2. Promedio de Tiempo Trabajando para aquellos con Edad > 40 años

3. Nombre y Edad de la persona con mayor Tiempo en años en la empresa

4. Porcentaje de Sexo=0 y Dpto=2

1. Se inician los contadores, sumadores, banderas, mayor y menor

2. Dentro del ciclo, después de leer, si se verifica que Sexo=0, se suma la edad en S1 y se cuenta con C1; si además se verifica dpto=2, se cuenta este hecho en C3. Luego, para todo trabajador se cuenta en C4

3. Luego, se aplica la técnica de búsqueda del mayor TT, anotando en variables auxiliares el Nombre y la Edad

4. Luego, se verifica si Edad > 40 y se suma en S2 a TT y se cuenta en C2

5. Después del ciclo, antes de imprimir los resultados, chequear si hubo mujeres, personas mayores de 40 años, antes de calcular los promedios

Tabla de Variables Descripción del dato Nombre de la Variable Tipo de Dato

Nombre del Empleado Nombre O Entero O Real O Lógico ⊗ Cadena

Sexo del Empleado Sexo ⊗ Entero O Real O Lógico O Cadena

Departamento Dpto ⊗ Entero O Real O Lógico O Cadena

Edad del Empleado Edad ⊗ Entero O Real O Lógico O Cadena Tiempo trabajado en años TT ⊗ Entero O Real O Lógico O Cadena

Centinela Cent O Entero O Real O Lógico ⊗ Cadena

Promedio de Edad Sexo=0 Pro1 <- S1/C1 O Entero ⊗ Real O Lógico O Cadena Sumatoria de Edad Sexo = 0 S1 O Entero ⊗ Real O Lógico O Cadena

Cantidad de veces que S1 sumo C1 ⊗ Entero O Real O Lógico O Cadena

Promedio de TT Edad >40 Pro2 <- S2/C2 O Entero ⊗ Real O Lógico O Cadena

Sumatoria de TT Edad > 40 S2 ⊗ Entero O Real O Lógico O Cadena Cantidad de veces que S2 sumo C2 ⊗ Entero O Real O Lógico O Cadena

Bandera para Mayor TT Bandera ⊗ Entero O Real O Lógico O Cadena

Mayor TT Mayor ⊗ Entero O Real O Lógico O Cadena

Nombre del Mayor TT MNombre O Entero O Real O Lógico ⊗ Cadena Edad del Mayor TT Medad ⊗ Entero O Real O Lógico O Cadena

Porcentaje de Sexo Por <- C3/C4 *100 O Entero ⊗ Real O Lógico O Cadena

Cantidad de veces que Sexo=0 y Dpto=2

C3 ⊗ Entero O Real O Lógico O Cadena

Cantidad total de empleados C4 ⊗ Entero O Real O Lógico O Cadena

Page 23: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

22

Período

2-2009

Algoritmo Algoritmo seis Variables ; Entrada - Proceso Nombre : Cadena Sexo : Entero ; 0=Femenino,1=Masculino Dpto : Entero ; 1=compras,2=contabilidad,3=control de calidad,4=ingenieria Edad : Entero TT : Entero ; Tiempo en años Trabajado en la empresa Cent : Cadena ; Proceso - Auxiliar S1 : Entero ; Sumatoria de edad de las mujeres C1 : Entero ; Cantidad de veces que S1 sumo S2 : Entero ; Sumatoria de TT Edad > 40 C2 : Entero ; Cantidad de veces que S2 sumo Bandera : Entero ; Bandera para mayor TT C3 : Entero ; cantidad de mujeres que trabajan en contabilidad C4 : Entero ; cantidad Total de Mujeres Mayor : Entero ; Mayor TT ; Salida Pro1 : Real ; Promedio de Edad de las Mujeres Pro2 : Real ; Promedio de TT con Edad > 40 MNombre : Cadena ; Nombre del empleado con mayor TT MEdad : Entero ; Edad del empleado con mayor TT Por : Real ; Porcentaje de mujeres en contabilidad Inicio S1 <- 0 C1 <- 0 S2 <- 0 C2 <- 0 Bandera <- 0 C3 <- 0 C4 <- 0 Repetir Imprimir "Nombre de la Persona:" Leer Nombre Imprimir "Sexo (0=Femenino, 1=Masculino):" Leer Sexo Imprimir "Departamento (1=compras,2=contabilidad,3=control de calidad,4=ingenieria):" Leer Dpto Imprimir "Edad:" Leer Edad Imprimir "Tiempo en años trabajado en la empresa:" Leer TT Si Sexo=0 entonces S1 <- S1 + Edad C1 <- C1 + 1 Si Dpto=2 entonces C3 <- C3 + 1 FinSi FinSi C4 <- C4 + 1 Si Edad > 40 entonces S2 <- S2 + TT C2 <- C2 + 1 Finsi Si Bandera = 0 entonces

Page 24: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

23

Período

2-2009

Mayor <- TT MNombre <- Nombre MEdad <- Edad Bandera <- 1 Sino Si TT > Mayor entonces Mayor <- TT MNombre <- Nombre MEdad <- Edad FinSi FinSi Imprimir "Ultimo Trabajador (S/N):?" Leer Cent Hasta (Cent="S") or (Cent="s") Si C1 = 0 entonces Imprimirln "No hubo empleadas a quienes calcular el promedio de la edad" Sino Pro1 <- S1/C1 Imprimirln "Promedio de Edad de las Mujeres:",Pro1 FinSi Si C2 = 0 entonces Imprimirln "No Hubo empleados mayores de 40 años para el promedio" Sino Pro2 <- S2/C2 Imprimirln "Promedio de tiempo trabajado de aquellos con edad > 40:",Pro2 FinSi Imprimirln "Nombre del empleado con mayor tiempo trabajado:", MNombre Imprimirln "Edad del empleado con mayor tiempo trabajado:",MEdad Por <- C3/C4*100 Imprimirln "Porcentaje de mujeres que trabajan en contabilidad:",Por Fin

Código en Visual Basic 2008

Module Module1

Sub Main()

'Declaración de Variables

' Entrada - Proceso

Dim Nombre As String

Dim Sexo As Integer ' 0=Femenino , 1=Masculino

Dim Dpto As Integer ' 1=compras,2=contabilidad,3=control de calidad, 4=ingenieria

Dim Edad As Integer

Dim TT As Integer ' Tiempo en años Trabajado en la empresa

Dim Cent As String

' Proceso - Auxiliar

Dim S1 As Integer ' Sumatoria de edad de las mujeres

Dim C1 As Integer ' Cantidad de veces que S1 sumo

Dim S2 As Integer ' Sumatoria de TT Edad > 40

Dim C2 As Integer ' Cantidad de veces que S2 sumo

Dim Bandera As Integer ' Bandera para mayor TT

Dim C3 As Integer ' cantidad de mujeres que trabajan en contabilidad

Dim C4 As Integer ' cantidad Total de Mujeres

Dim Mayor As Integer ' Mayor TT

Page 25: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

24

Período

2-2009

' Salida

Dim Pro1 As Single ' Promedio de Edad de las Mujeres

Dim Pro2 As Single ' Promedio de TT con Edad > 40

Dim MNombre As String ' Nombre del empleado con mayor TT

Dim MEdad As Integer ' Edad del empleado con mayor TT

Dim Por As Single ' Porcentaje de mujeres en contabilidad

S1 = 0

C1 = 0

S2 = 0

C2 = 0

Bandera = 0

C3 = 0

C4 = 0

Do

Console.Write("Nombre de la Persona:")

Nombre = Console.ReadLine

Console.Write("Sexo (0=Femenino , 1=Masculino):")

Sexo = Console.ReadLine

Console.Write("Departamento (1=compras , 2=contabilidad ,

3=control de calidad ,4=ingenieria):")

Dpto = Console.ReadLine

Console.Write("Edad:")

Edad = Console.ReadLine

Console.Write("Tiempo en años trabajado en la empresa:")

TT = Console.ReadLine

If Sexo = 0 Then

S1 = S1 + Edad

C1 = C1 + 1

If Dpto = 2 Then

C3 = C3 + 1

End If

End If

C4 = C4 + 1

If Edad > 40 Then

S2 = S2 + TT

C2 = C2 + 1

End If

If Bandera = 0 Then

Mayor = TT

MNombre = Nombre

MEdad = Edad

Bandera = 1

Else

If TT > Mayor Then

Mayor = TT

MNombre = Nombre

MEdad = Edad

End If

End If

Console.Write("Ultimo Trabajador (S/N)?")

Cent = Console.ReadLine

Loop Until (Cent = "S") Or (Cent = "s")

Page 26: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

25

Período

2-2009

If C1 = 0 Then

Console.WriteLine("No hubo empleadas a quienes calcular el

promedio de la edad")

Else

Pro1 = S1 / C1

Console.WriteLine("Promedio de Edad de las Mujeres:" & Pro1)

End If

If C2 = 0 Then

Console.WriteLine("No Hubo empleados mayores de 40 años para el

promedio")

Else

Pro2 = S2 / C2

Console.WriteLine("Promedio de tiempo trabajado de aquellos con

edad > 40:" & Pro2)

End If

Console.WriteLine("Nombre del empleado con mayor tiempo trabajado:" &

MNombre)

Console.WriteLine("Edad del empleado con mayor tiempo trabajado:" &

MEdad)

Por = C3 / C4 * 100

Console.WriteLine("Porcentaje de mujeres que trabajan en

contabilidadas" & Por)

'Para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module

Ejercicio 7

Dado el nombre, día de la semana (0=domingo, 1=lunes, 2=martes, etc.), número de horas

diurnas y número de horas nocturnas trabajadas de un grupo de trabajadores, tomando en

cuenta que:

• La tarifa de las horas diurnas es de Bs. 10000

• La tarifa de horas nocturnas es de Bs. 25000 • En caso de ser Domingo la tarifa se incrementará en Bs. 5000 el turno diurno y Bs. 7500

el turno nocturno Desarrolle un programa que determine e imprima:

1) Para cada trabajador, el monto a cobrar por concepto de salario 2) Nombre del primer trabajador cuyas horas nocturnas son mayores que las diurnas 3) Nombre del trabajador y día de la semana con mayor salario. 4) Promedio de horas de los trabajadores que laboraron el día domingo

Page 27: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

26

Período

2-2009

Análisis del Problema

¿Qué información está presente?

¿Qué resultados exige? ¿Cómo lo logro?

1. Nombre del Empleado

2. Día de la semana 3. Horas Diurnas

Trabajadas 4. Horas Nocturnas

Trabajadas

5. Centinela

1. Por trabajador, monto total a

cobrar 2. Nombre del primer trabajador cuyas horas nocturnas son mayores que las diurnas

3. Nombre del trabajador y dia de la semana con mayor salario

4. Promedio de horas DS = 0

1. Se inician los contadores, sumadores, banderas, mayor y menor

2. Dentro del ciclo, después de leer, si se verifica que Sexo=0, se suma la edad en S1 y se

cuenta con C1; si además se verifica dpto=2, se cuenta este hecho en C3. Luego, para todo trabajador se cuenta en C4

3. Luego, se aplica la técnica de búsqueda del mayor TT, anotando en variables auxiliares el Nombre y la Edad

4. Luego, se verifica si Edad > 40 y se suma en S2 a TT y se

cuenta en C2 5. Después del ciclo, antes de imprimir los resultados, chequear si hubo mujeres, personas mayores de 40 años, antes de calcular los

promedios

Tabla de Variables Descripción del dato Nombre de la Variable Tipo de Dato

Nombre del Empleado Nombre O Entero O Real O Lógico ⊗ Cadena

Día de la Semana DS ⊗ Entero O Real O Lógico O Cadena

Horas Diurnas HD ⊗ Entero O Real O Lógico O Cadena

Horas Nocturnas HN ⊗ Entero O Real O Lógico O Cadena

Centinela Cent O Entero O Real O Lógico ⊗ Cadena

Monto individual a cobrar cada trabajador

MT O Entero ⊗ Real O Lógico O Cadena

Bandera para capturar el nombre del primer trabajador con HN>HD

Bandera1 ⊗ Entero O Real O Lógico O Cadena

Nombre del primer trabajador con HN > ND

PNombre O Entero O Real O Lógico ⊗ Cadena

Bandera para mayor MT Bandera2 ⊗ Entero O Real O Lógico O Cadena

Mayor MT Mayor O Entero ⊗ Real O Lógico O Cadena

Nombre del Mayor MT MNombre O Entero O Real O Lógico ⊗ Cadena

Día del Mayor MT MDia ⊗ Entero O Real O Lógico O Cadena

Promedio de horas DS=0 Pro <- S1/C1 O Entero ⊗ Real O Lógico O Cadena

Sumador de horas S1 ⊗ Entero O Real O Lógico O Cadena

Cantidad de veces que S1 Sumo

C1 ⊗ Entero O Real O Lógico O Cadena

Page 28: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

27

Período

2-2009

Algoritmo Algoritmo Siete Variables ; Entrada - Proceso Nombre : Cadena ; Nombre del empleado DS : Entero ; 0=domingo, 1=lunes, 2=martes, 3=Miercoles, etc HD : Entero ; Horas diurnas HN : Entero ; Horas Nocturnas Cent : Cadena ; Centinela ; Proceso - Auxiliar Bandera1 : Entero ; Bandera para capturar primer trabajador HN>HD Bandera2 : Entero ; Bandera para el mayor MT Mayor : Real ; Mayor MT S1 : Entero ; Sumatoria de Hora con DS=0 C1 : Entero ; Cantidad de veces que S1 sumo ; Proceso - Salida MT : Real ; Salario a cobrar por cada trabajador PNombre : Cadena ; Nombre del primer trabajador HN>HD MNombre : Cadena ; Nombre del mayor MT MDia : Entero ; Dia del Mayor MT ; Salida Pro : Real ; Proemdio de horas en DS=0 Inicio Bandera1 <- 0 ; 0=No he capturado, 1=Ya capture Bandera2 <- 0 ; 0=No hay un mayor aun, 1=Existe un mayor S1 <- 0 C1 <- 0 Repetir Imprimir "Nombre del empleado:" Leer Nombre Imprimir "Dia de la Semana (0=Do,1=Lu,2=Ma,3=Mi,4=Ju,5=Vi,6=Sa):" Leer DS Imprimir "Horas Diurnas:" Leer HD Imprimir "Horas Nocturnas:" Leer HN Si DS=0 entonces MT <- HD*15000+HN*32500 S1 <- S1 + HD + HN C1 <- C1 + 1 Sino MT <- HD*10000+HN*25000 FinSi Imprimirln Nombre,":",MT Si HN > HD entonces Si Bandera1 = 0 entonces PNombre <- Nombre Bandera1 <- 1 FInSi FinSi Si Bandera2 = 0 entonces Mayor <- MT MNombre <- Nombre MDia <- DS Bandera2 <- 1 Sino Si MT > Mayor entonces

Page 29: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

28

Período

2-2009

Mayor <- MT MNombre <- Nombre MDia <- DS FinSi FinSi Imprimir "Ultimo empleado (S/N)?:" Leer Cent Hasta (Cent="S") or (Cent="s") Si Bandera1 = 0 entonces Imprimirln "No hubo trabajadores con HN > HD" Sino Imprimirln "Nombre del primer trabajador con HN > HD:",PNombre FinSI Imprimirln "Nombre de la persona con mayor salario:", MNombre Imprimirln "Dia de la semana donde gano el mayor salario:",MDia Si C1 = 0 entonces Imprimirln "No hubo trabajadores en Domingo" Sino Pro <- S1/C1 Imprimirln "Promedio de horas los domingos:", Pro FinSi Fin

Código en Visual Basic 2008 Module Module1

Sub Main()

'Declaración de Variables

' Entrada - Proceso

Dim Nombre As String ' Nombre del empleado

Dim DS As Integer ' 0=domingo, 1=lunes, 2=martes, 3=Miercoles,

etc

Dim HD As Integer ' Horas diurnas

Dim HN As Integer ' Horas Nocturnas

Dim Cent As String ' Centinela

' Proceso - Auxiliar

Dim Bandera1 As Integer ' Bandera para capturar primer trabajador

HN>HD

Dim Bandera2 As Integer ' Bandera para el mayor MT

Dim Mayor As Single ' Mayor MT

Dim S1 As Integer ' Sumatoria de Hora con DS=0

Dim C1 As Integer ' Cantidad de veces que S1 sumo

' Proceso - Salida

Dim MT As Single ' Salario a cobrar por cada trabajador

Dim PNombre As String ' Nombre del primer trabajador HN>HD

Dim MNombre As String ' Nombre del mayor MT

Dim MDia As Integer ' Dia del Mayor MT

' Salida

Dim Pro As Single ' Proemdio de horas en DS=0

Bandera1 = 0 ' 0=No he capturado, 1=Ya capture

Bandera2 = 0 ' 0=No hay un mayor aun, 1=Existe un mayor

S1 = 0

C1 = 0

Page 30: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

29

Período

2-2009

Do

Console.Write("Nombre del empleado : ")

Nombre = Console.ReadLine

Console.Write("Dia de la Semana (0=Do , 1=Lu , 2=Ma , 3=Mi , 4=Ju

, 5=Vi , 6=Sa) : ")

DS = Console.ReadLine

Console.Write("Hor: Diurn: : ")

HD = Console.ReadLine

Console.Write("Hor: Nocturnas : ")

HN = Console.ReadLine

If DS = 0 Then

MT = HD * 15000 + HN * 32500

S1 = S1 + HD + HN

C1 = C1 + 1

Else

MT = HD * 10000 + HN * 25000

End If

Console.WriteLine(Nombre & " : " & MT)

If HN > HD Then

If Bandera1 = 0 Then

PNombre = Nombre

Bandera1 = 1

End If

End If

If Bandera2 = 0 Then

Mayor = MT

MNombre = Nombre

MDia = DS

Bandera2 = 1

Else

If MT > Mayor Then

Mayor = MT

MNombre = Nombre

MDia = DS

End If

End If

Console.Write("Ultimo empleado (S/N)? : ")

Cent = Console.ReadLine

Loop Until (Cent = "S") Or (Cent = "s")

If Bandera1 = 0 Then

Console.WriteLine("No hubo trabajadores con HN > HD")

Else Console.WriteLine("Nombre del primer trabajador con HN > HD : " & PNombre)

End If Console.WriteLine("Nombre de la persona con mayor salario : " & MNombre)

Console.WriteLine("Dia de la semana donde gano el mayor salario : " & MDia)

If C1 = 0 Then

Console.WriteLine("No hubo trabajadores en Domingo")

Else

Pro = S1 / C1

Console.WriteLine("Promedio de horas los domingos : " & Pro)

End If

'para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module

Page 31: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

30

Período

2-2009

Ejercicio 8

Para ser admitidos en el Club MENSA los candidatos deben aprobar un test de inteligencia con

un puntaje de 74 puntos como mínimo. Los nombres de los candidatos y los resultados son

suministrados a una computadora. Elabore un programa que procese la información y

determine lo siguiente:

1) Cuántos candidatos aprobaron el test

2) Porcentaje de candidatos que no aprobaron el test

3) Cuál fue el mayor puntaje

4) Cuál fue el menor puntaje

5) Cuántos candidatos aprobaron con un puntaje entre 80 y 100 puntos

Algoritmo Algoritmo ocho Variables ; Entrada - Proceso Nombre : Cadena Puntos : Entero Cent : Cadena ; Proceso - Auxiliar C2 : Entero ; Cantidad de Reprobados C3 : Entero ; Cantidad total de Candidatos Bandera1 : Entero ; Bandera para el mayor ptos Bandera2 : Entero ; Bandera para el menor ptos ; Proceso - Salida C1 : Entero ; Cantidad de candidatos con Ptos >= 74 C4 : Entero ; Cantidad de cantidatos con Ptos entre [80,100] Mayor : Entero ; Mayor puntaje Menor : Entero ; Menor puntaje ; Salida Por : Real ; Porcentaje de Candidatos Reprobados Inicio C1 <- 0 C2 <- 0 C3 <- 0 Bandera1 <- 0 Bandera2 <- 0 C4 <- 0 Repetir Imprimir "Nombre:" Leer Nombre Imprimir "Puntos obtenidos:" Leer Puntos Si Puntos >= 74 entonces C1 <- C1 + 1 Si (Puntos >= 80) AND (Puntos <= 100) entonces C4 <- C4 + 1 FinSi Sino ; Puntos < 74 C2 <- C2 + 1

Page 32: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

31

Período

2-2009

FinSi C3 <- C3 + 1 Si Bandera1 = 0 entonces Mayor <- Puntos Bandera1 <- 1 Sino Si Puntos > Mayor entonces Mayor <- Puntos FinSi FinSi Si Bandera2 = 0 entonces Menor <- Puntos Bandera1 <- 1 Sino Si Puntos < Menor entonces Menor <- Puntos FinSi FinSi Imprimir "Ultimo Candidato:" Leer Cent Hasta (Cent="S") or (Cent="s") Imprimirln "Cantidad de Candidatos que aprobaron el test:",C1 Por <- C2/C3*100 Imprimirln "Porcentaje de Candidatos reprobados:",Por Imprimirln "Mayor Puntaje:",Mayor Imprimirln "Menor Puntaje:",Menor Imprimirln "Cantidad de Candidatos con Puntos entre [80,100]:",C4 Fin

Código en Visual Basic 2008 Module Module1

Sub Main()

'Declaración de Variables

' Entrada - Proceso

Dim Nombre As String

Dim Puntos As Integer

Dim Cent As String

' Proceso - Auxiliar

Dim C2 As Integer ' Cantidad de Reprobados

Dim C3 As Integer ' Cantidad total de Candidatos

Dim Bandera1 As Integer ' Bandera para el mayor ptos

Dim Bandera2 As Integer ' Bandera para el menor ptos

' Proceso - Salida

Dim C1 As Integer ' Cantidad de candidatos con Ptos >= 74

Dim C4 As Integer ' Cantidad de cantidatos con Ptos entre [80,100]

Dim Mayor As Integer ' Mayor puntaje

Dim Menor As Integer ' Menor puntaje

' Salida

Dim Por As Single ' Porcentaje de Candidatos Reprobados

C1 = 0

C2 = 0

C3 = 0

Bandera1 = 0

Bandera2 = 0

Page 33: Ejercicios resueltos estructuras repetitivas

Ejercicios del Primer Parcial En VB2008

32

Período

2-2009

C4 = 0

Do

Console.Write("Nombre:")

Nombre = Console.ReadLine

Console.Write("Puntos obtenidos:")

Puntos = Console.ReadLine

If Puntos >= 74 Then

C1 = C1 + 1

If (Puntos >= 80) And (Puntos <= 100) Then

C4 = C4 + 1

End If

Else ' Puntos < 74

C2 = C2 + 1

End If

C3 = C3 + 1

If Bandera1 = 0 Then

Mayor = Puntos

Bandera1 = 1

Else

If Puntos > Mayor Then

Mayor = Puntos

End If

End If

If Bandera2 = 0 Then

Menor = Puntos

Bandera1 = 1

Else

If Puntos < Menor Then

Menor = Puntos

End If

End If

Console.Write("Ultimo Candidato:")

Cent = Console.ReadLine

Loop Until (Cent = "S") Or (Cent = "s")

Console.WriteLine("Cantidad de Candidatos que aprobaron el test:" &

C1)

Por = C2 / C3 * 100

Console.WriteLine("Porcentaje de Candidatos reprobados:" & Por)

Console.WriteLine("Mayor Puntaje:" & Mayor)

Console.WriteLine("Menor Puntaje:" & Menor)

Console.WriteLine("Cantidad de Candidatos con Puntos entre [80 &

100]:" & C4)

'para que la ventana de ejecución no se cierre

Console.ReadKey()

End Sub

End Module