UNIVERSIDAD FEMENINA DEL SAGRADO CORAZÓN FACULTAD DE INGENIERIA DE SISTEMAS Curso : Taller de Computación Tema : Problemas de Estructura Repetitivas Profesora : Gladys Hortencia, Garcia Vilcapoma Alumnas: Carpio Cárdenas, Claudia Pastor Humpiri, Fanny Rosana 2006-1
TRABAJO NRO 3 TALLER DE COMPUTACION 1. Problema de serie de las diapositivas presentadas 1.1. Hacer una aplicación que muestre la suma de S = 1 + 2 + 3 + + 15 Dim S, i As Integer For i = 1 To 15 S = S + i MessageBox.Show("S = " & S) Private Sub BtnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click Me.Close() 1.2. Hacer una aplicación que muestre la suma de S = 1 + ½ + 1/3 + + 1/15 Dim S, i As Integer For i = 1 To 15 S = S + 1 / i MessageBox.Show("S = " & S)
1.3. Hacer una aplicación que calcule el factorial de un numero n ingresado por teclado Dim Fac, n, i As Integer Fac = 1 For i = 1 To n Fac = Fac * i MessageBox.Show("Resultado: " & Fac) 1.4. Hacer una aplicación que calcule : S = 1 + 1/3! + 1/5! + + 1/n! +... + 1/7! Dim Fac, n, i As Integer Dim S As Single n = Val(InputBox("ingrese valor de n:")) For n = 1 To 8 Step 2 fac = 1 For i = 1 To n fac = fac * i MessageBox.Show("Fac = " & fac & " S = S + 1 / fac 1/Fac = " & 1 / fac) Next n MessageBox.Show(" S = " & S) 1.5. Hacer una aplicación que calcule : S = 1-1/2! + 1/3! - + 1/n! +... - 1/8! Dim i, signo, S, fac, n As Integer
Dim t As Single n = Val(InputBox("ingrese el valor de n: ")) signo = 1 For n = 1 To 8 Step 1 fac = 1 For i = 1 To n fac = fac * i t = (1 / fac) * signo S = S + t signo = -1 * signo Next n MessageBox.Show(" S = " & S) 1.6. S=3x2/1!-5x4/3!+7x6/5! -(n+2)xn+1/n!... +(NT+2)xNT+1/NT! Dim signo, Fac, n, NT, i As Integer Dim t, S, x As Single signo = 1 NT = 9 x = 1 ' se evalua S, para x = 1 For n = 1 To NT Step 2 ' Calculo del factorial de n Fac = 1 For i = 1 To n Fac = Fac * i t = signo * (n + 2) * x ^ (n + 1) / Fac S = S + t signo = signo * -1 'MessageBox.Show(" T = " & t) Next n MessageBox.Show(" S = " & S)
1.7. Simular un juego de 2 Dados. Si al jugador le sale 2 termina su juego. Evaluar su puntaje ( suma de los tiros validos diferentes de 2) Dim puntaje, valordado As Integer Dim mensaje As String puntaje = 0 ValorDado = Val(InputBox("Ingrese el valor que le salio")) Do While ValorDado <> 2 Puntaje = Puntaje + ValorDado ValorDado = Val(InputBox("Ingrese el valor que le salio")) Loop mensaje = "Su puntaje es = " & Puntaje MsgBox(mensaje) 1.8. Calcular y mostrar la cantidad de dinero acumulado en una TeleMaraton, se termina cuando el usuario lo decida Dim SDin, Dinero As Single Dim Opcion As String SDin = 0 Do Dinero = Val(InputBox("Ing. Dinero : ")) MessageBox.Show("Dinero = " & Dinero) SDin = SDin + Dinero Opcion = UCase(InputBox("Desea seguir S/ N : ")) Loop Until Opcion = "N" MessageBox.Show("Suma de Dinero = " & SDin) 1.9. Elabore un programa que muestre el nro de cta corriente y líneas con las transacciones de dicha cuenta con el saldo inicial y final de cada transacción. Los datos ingresados son el nro de cuenta y el saldo inicial. Luego se ingresa el tipo de transacción ( deposito o retiro ) y la cantidad de transacción. termina cuando la transacción es X Dim TipoTrans As Char Dim ValorTrans, saldo As Single Dim Mensaje As String
TipoTrans = UCase(InputBox("Ing. tipo de transaccion (D/R), PARA TERMINAR X: ")) Do ValorTrans = Val(InputBox("Ing. valor de la transaccion : ")) Mensaje = "Saldo Inicial " & saldo & " Valor Trans = " & ValorTrans If TipoTrans = "D" Then saldo = saldo + ValorTrans Else saldo = saldo - ValorTrans Mensaje = Mensaje & " Saldo Final = " & saldo MessageBox.Show(Mensaje) TipoTrans = UCase(InputBox("Ing. tipo de transaccion (D/R), PARA TERMINAR X: ")) Loop Until TipoTrans = "X" 1.10. Los datos de entrada de los postulantes a una beca son Nombre, Promedio ponderado y nro de créditos acumulados. Son aceptados si cumplen estos requisitos: Mínimo 50 créditos acumulados y promedio ponderado superior a 16. a) Determinar la cantidad de postulantes aceptadas b) Determinar el máximo promedio ponderado de los postulantes aceptados (0 a 20)y su nombre c) Determinar el mínimo NroCred de los postulantes rechazados (0 a 20) y su nombre El ingreso de datos termina cuando el usuario lo decida Dim Nombre, opcion, NomMPP, NomMNC As String Dim PromPon, MaxPP, MinNC As Single Dim NroCredA, NPAcep, NPRech As Integer NPAcep = 0 NPRech = 0 Do Nombre = InputBox("ing. nombre : ") PromPon = Val(InputBox("Ing. promedio ponderado : ")) NroCredA = Val(InputBox("Ing. nro de creditos acumulados : ")) If PromPon >= 16 And NroCredA >= 50 Then NPAcep = NPAcep + 1 ' cuenta los aceptados If PromPon > MaxPP Then MaxPP = PromPon : NomMPP = Nombre Else NPRech = NPRech + 1 ' cuenta los rechazados If NroCredA < MinNC Then MinNC = NroCredA : NomMNC = Nombre opcion = UCase(InputBox("Desea seguir ( S / N) : ")) Loop Until opcion = "N" MessageBox.Show("cantidad de postulantes aceptadas: " & NPAcep)
MessageBox.Show("máximo promedio ponderado de los postulantes " & MaxPP & " " & NomMPP) MessageBox.Show("mínimo NroCred de los postulantes rechazados : " & MinNC & " " & NomMNC) 1.11. S = 1 + 1/x + 1/x2 + 1/ pn + + 1/xn Dim S, Termino As Single Dim I, X As Integer S = 1 I = 0 X = InputBox("Ingrese el valor de x : ") Do I = I + 1 Termino = 1 / X ^ I S = S + Termino 'MessageBox.Show("termino = " & Termino) Loop Until Termino <= 0.0001 MessageBox.Show(" S = " & S) 2. Hallar la sumatoria de la serie, siendo los datos de entrada: el número de términos a sumar n y el valor de la variable x, ambos valores enteros >=0. 3x s = 1! 2 5x 3! 4 7x + 5! 6... Dim i, j, N, X As Integer Dim S, F, signo As Single N = Val(InputBox("Ingrese el valor de N: ")) X = Val(InputBox("Ingrese el valor de X: ")) F = 1 signo = -1 For i = 1 To N Step 1 signo = -signo For j = 1 To 2 * i - 1 Step 1 F = F * j Next j S = S + signo*((2 * i + 1) * X ^ (2 * N)) / F signo=-signo MessageBox.Show("La Suma de la serie es : " & S)
3. Desarrollar un programa que solicite diez números entre 100 y 999. El programa deberá encontrar cual de los diez números tiene la suma de dígitos más alta. Dim N, c, d, u As Integer Dim i, s, maximo As Integer For i = 1 To 3 Step 1 N = Val(InputBox("Ingrese numero " & i & " [100,999]: ")) c = N \ 100 d = (N Mod 100) \ 10 u = (N Mod 100) Mod 10 s = c + d + u maximo = 0 If s > maximo Then maximo = s MessageBox.Show("la suma de digitos maxima es: " & maximo) 4. En un gimnasio existe un programa que permite evaluar los resultados de un entrenamiento de máximo 30 días en una máquina caminadora. El programa solicita al inicio el número de días de entrenamiento(n) y luego pide los siguientes datos para cada día: -Número de calorías quemadas -Número de kilómetros recorridos -Velocidad de la carrera Después del ingreso de los datos el programa mostrará: -El total de calorías quemadas durante el entrenamiento -El promedio de velocidad del entrenamiento -El día que se logro el máximo de kilómetros recorridos Dim N, i, dia As Integer Dim NCQ, NKR, VC, S, PromVel, SVel, maximo As Single N = Val(InputBox("ing. numero de dias: ")) SVel = 0 maximo = 0
dia) For i = 1 To N Step 1 NCQ = Val(InputBox("Número de calorías quemadas: ")) NKR = Val(InputBox("Número de kilómetros recorridos: ")) VC = Val(InputBox("Velocidad de la carrera: ")) S = S + NCQ SVel = SVel + VC If NKR > maximo Then maximo = NKR dia = i PromVel = SVel / N MessageBox.Show("Total de calorias quemadas: " & S) MessageBox.Show("Promedio de Velocidad: " & PromVel) MessageBox.Show("El día que se logro el máximo de kilómetros recorridos: " & 5. Una fábrica de varillas circulares de fierro efectúa el control de calidad de la siguiente manera: Para aceptar o rechazar un lote de producción, extrae N varillas de dicho lote y mide el diámetro de cada una de ellas Si más del 10% de las N varillas tiene diámetro fuera del rango [1.5 cm-2.0 cm], el lote es rechazado. Desarrolle un programa que solicite el valor de N y luego solicite los diámetros de las N varillas. El programa debe mostrar: a) El diámetro promedio b) El número de varillas fuera del rango [1.5cms-2.0 cms] c) Si el lote es rechazado o aceptado. ç Dim N, i, cont As Integer Dim diam, sdiam, Pdiam As Single sdiam = 0 cont = 0 N = Val(InputBox("Ing. valor de N")) For i = 1 To N Step 1 diam = Val(InputBox("Ingrese diametro: ")) sdiam = sdiam + diam If diam >= 1.5 And diam <= 2 Then cont = cont + 1 cont = N - cont Pdiam = sdiam / N MessageBox.Show("Diametro promedio: " & Pdiam) MessageBox.Show("num. de varillas fuera del rango [1.5cms-2.0 cms]: " & cont) If cont > 0.1 * N Then MessageBox.Show("El lote es Rechazado")
1 Prob Adicional: Escribir un algoritmo para calcular el seno de un ángulo dado en grados sexagesimales, usando la siguiente serie de Taylor: Sen(x)=x - x 3 + x 5 - x 7 + 3! 5! 7! Donde x esta dado en radianes. Hallar el valor para N términos. Solucionario Dim i, j, cantidad As Integer Dim suma, num, numero, pot, fact As Single Const PI = 3.14159 num = Val(InputBox("Ingrese el angulo en grados sexagesimales : ")) cantidad = Val(InputBox("Ingrese la cantidad de terminos de la serie : ")) numero = num * PI / 180 pot = 1 fact = 1 suma = 0 For i = 0 To cantidad - 1 Step 1 For j = 0 To 2 * (i + 1) - 2 Step 1 pot = pot * numero Next j For j = 1 To 2 * (i + 1) - 2 Step 1 fact = fact * j Next j If i Mod 2 = 0 Then suma = suma + pot / fact Else suma = suma - pot / fact MessageBox.Show("El valor de Sen(" & num & ") es : " & suma)
2. Adicional: Ingresados por teclado los pesos y nombres de cuatro personas, diseñe un algoritmo y su respectivo programa, que muestre un mensaje indicando los nombres de las personas que tienen un peso superior al promedio. Ejm Rosa pesa mas que el promedio. Dim i As Integer Dim nom, nmayor As String Dim prom, mayor, peso, sum As Single sum = 0 For i = 1 To 4 Step 1 peso = Val(InputBox("Ingrese peso: ")) nom = InputBox("Ingrese nombre: ") sum = sum + peso If mayor < peso Then mayor = peso nmayor = nom Next prom = sum / 4 MessageBox.Show("promedio de pesos= " & prom) MessageBox.Show(nmayor & " pesa mas que el promedio")