Algoritmo visual basic

que pena molestarte tanto valeroasm con esto pero de verdad estoy necesitando de tu ayuda, por favor ayudame con esto gracias!!

Ingrese los valores finales del vector x() en las posiciones x(1),x(2) y x(3).

ReDim x(1 To 3) As Integer
For i = 1 To 3
x(i) = 0
For k = 1 To 2
If (i = 2) Then
x(i) = x(i) + 3 * k + 2
Else
x(i) = x(i) + 3 * k + 1
End If
Next k
x(k) = x(k) + x(i) + 2 * i
Next i

1 respuesta

Respuesta
1

No sé de donde salen estos ejercicios, pero no son ningún ejemplo de programación normal y entendible.

Es raro que la orden

x(k) = x(k) + x(i) + 2 * i

Esté situada fuera del bucle que trabaja con la k.

¿Seguro qué está bien así y no estaría esa orden dentro del bucle que termina con Next k?

Aunque como ejercicio de situaciones anormales no está mal.

seguro valeroasm, asi est{a el algoritmo, la verdad yo también estoy de acuerdo con lo que dices esos profesores inventan unos ejercicios fuera de lo normal

Pues hagamos el seguimiento del programa

i  K    x(1)
1  1  0+3+1 =  4
1  2  4+6+1 = 11
ahora al terminar el bucle de la k tenemos k=3
x(3)=x(3)+x(1)+2*i = 0 + 11 + 2 = 13
i  k    x(2)
2  1  0+3+2 =  5
2  2  5+6+2 = 13
de nuevo k=3
x(3)=x(3)+x(2)+2*i = 13 + 13+ 4 = 30
Y todas estas cuentas hechas con x(3) han sido tontas porque
al empezar el bucle de la i con i=3 se hace
x(3)=0
i k x(3)
3  1   0+3+1 =  4
3  2   4+6+1 = 11
ahora k=3
x(3)=x(3) + x(3) + 2*i = 11+11+6 = 28

Luego los resultados son

x(1) = 11

x(2) = 13

x(3) = 28

Y eso es todo.

que pena valeroasm pero me podrías hacer el favor de explicar porque cuando en el bucle de la "k" llegas al 3 porque no sigues por ejemplo en la primera con x(1)=x(1)+3*3+1 y en vez de esto pasas a la instrucción después del next k? muchas gracias

Cuando llegas a k=3 ya no está la k fuera de los límites del bucle ya que es un

for k= 1 to 2

Entonces ya no pasa por el bucle otra vez, va a la instrucción siguiente al next k. Cuando se sale del bucle el índice del bucle tiene una unidad más que el límite superior.

------------------------------

No es necesario que leas esto de abajo si con lo anterior ya lo has entendido. Lo escribí al principio porque no entendía lo que me preguntabas y lo he dejado porque me costó lo suyo escribirlo.

Hice una simplificación que a lo mejor no has entendido. Si quieres lo hacemos linea a línea pero me parece que lo vas a entender menos.

10 ReDim x(1 To 3) As Integer
20 For i = 1 To 3
30 x(i) = 0
40 For k = 1 To 2
50 If (i = 2) Then
60 x(i) = x(i) + 3 * k + 2
70 Else
80 x(i) = x(i) + 3 * k + 1
90 End If
100 Next k
110 x(k) = x(k) + x(i) + 2 * i
120 Next i

20 i=1

30 x(1) = 0

40 k=1

50 no se cumple

80 x(1) = 0 + 3·1 + 1 = 4

40 k=2

50 no se cumple

80 x(1) = 4 + 3·2 + 1 = 11

40 k=3 se abandona el bucle de la k

110 x(3) = 0+11+2·1 = 13

20 i=2

30 x(2) = 0

40 k=1

50 se cumple

60 x(2) = 0 + 3·1+2 = 5

40 k=2

50 se cumple

60 x(2) = 5 + 3·2 +2 = 13

40 k=3 se abandona el bucle de la k

110 x(3) = 13 + 13 + 2·2 = 30

20 i=3

30 x(3)=0

40 k=1

50 no se cumple

80 x(3) = 0 + 3·1 + 1 =4

40 k=2

50 no se cumple

80 x(3)= 4 + 3·2 + 1 = 11

40 k=3 se abandona el bucle de la k

110 x(3) = 11+11+ 2·3 = 28

Y lo dicho, los resultados son:

x(1) = 11
x(2) = 13
x(3) = 28

Y eso es todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas