Autor Tema: Scilab arreglos

0 Usuarios y 1 Visitante están viendo este tema.

26 Marzo, 2017, 08:24 pm
Leído 2714 veces

Dongatomate

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 304
  • Karma: +0/-0
  • Sexo: Masculino
Buenas tardes, me podrán dar una mano con el siguiente problema;

Dado un vector v, su cantidad de componentes n y una posición p, desplazar todos los elementos de v un lugar
a la derecha a partir de la posición p inclusive. Después del desplazamiento, el vector tendrá duplicadas
las componentes p y (p + 1)-ésimas y se perderá el valor de su último elemento.

lo habia pensado de la siguiente manera:

//INICIO
n= input ("ingrese elementos de v: ")
p= input ("Ingrese posicion: ")
[v]=(n)
t=n   
for i=1:n
    v(i)=input ("Ingrese elem" + string(i)+": ")
end

for k = 1:n-p
    v(t)=v(t-k) //Cuando ejecuto el programa me dice indice invalido
end
v(p)=2*v(p)
v(p+1)=2*v(p+1)
clear v(n)  //¿El ultimo elemento del que habla es el n cierto?
disp ( v )

//FIN

Plantee las dudas respecto al problema en rojo. Ademas tengo algunas consultas respecto al "for"

Por lo que se es un bucle, pero siempre lo vi como un bucle que se va incrementando iteración a iteración. ¿ Se puede tomar un "paso negativo" y que ¿bucle a bucle vaya decreciendo la variable asignada al for?.

Desde ya muchas gracias!.

27 Marzo, 2017, 12:43 pm
Respuesta #1

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 55,996
  • País: es
  • Karma: +0/-0
Hola

Buenas tardes, me podrán dar una mano con el siguiente problema;

Dado un vector v, su cantidad de componentes n y una posición p, desplazar todos los elementos de v un lugar
a la derecha a partir de la posición p inclusive. Después del desplazamiento, el vector tendrá duplicadas
las componentes p y (p + 1)-ésimas y se perderá el valor de su último elemento.

lo habia pensado de la siguiente manera:

//INICIO
n= input ("ingrese elementos de v: ")
p= input ("Ingrese posicion: ")
[v]=(n)
t=n   
for i=1:n
    v(i)=input ("Ingrese elem" + string(i)+": ")
end

for k = 1:n-p
    v(t)=v(t-k) //Cuando ejecuto el programa me dice indice invalido
end
v(p)=2*v(p)
v(p+1)=2*v(p+1)
clear v(n)  //¿El ultimo elemento del que habla es el n cierto?
disp ( v )

//FIN

Plantee las dudas respecto al problema en rojo. Ademas tengo algunas consultas respecto al "for"

Por lo que se es un bucle, pero siempre lo vi como un bucle que se va incrementando iteración a iteración. ¿ Se puede tomar un "paso negativo" y que ¿bucle a bucle vaya decreciendo la variable asignada al for?.

No conozco al 100% la sintaxis del Scilab, pero me parece que no has entendido lo que te piede el ejercico.

Tienes que hacer programa que dado un vector, le indiques una poscición a partir de la cual cada elemento del vector tome el valor del anterior.

La frase: "Después del desplazamiento, el vector tendrá duplicadas las componentes p y (p + 1)-ésimas y se perderá el valor de su último elemento." simplemente indica un efecto secundario de tu programa; no es que te pida hacer nada adicional.

Por ejemplo si el vector es \( (1,2,3,4,5,6) \) y la posición es \( 2 \), se trasnformará en \( (1,2,2,3,4,5) \).

Para ello lo troncal es plantear este bucle:

Código: [Seleccionar]
for k=n-1:-1:p
 v(k)=v(k-1)
end

El bucle va desde n-1 hasta p de forma decreciente.

Saludos.