Autor Tema: Pseint Error 303: Subindice (0) fuera de rango (1..) azar ejecución interrumpida  (Leído 5087 veces)

Ezearaujo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, estoy necesitando ayuda con un ejercicio. Básicamente tengo que ingresar palabras en una lista y las quiero devolver en una posición al azar, pero me tira error.

Pseint Error 303: Subindice (0) fuera de rango (1..3) la ejecución ha sido interrumpida
Agradecería muchísimo la ayuda, saludos!  :(

Código: [Seleccionar]
Algoritmo palabras_al_azar

Escribir "Escribe la cantidad de filas"
Leer cantFilas

Dimension palabrasIngresadas[cantFilas]

Para i = 1 hasta cantFilas Con Paso 1 Hacer
Escribir "Por favor, ingrese una palabra a ocultar"
Leer palabrasIngresadas[i]

FinPara

Para j = 1 hasta cantFilas Con Paso 1 Hacer
palabrasIngresadas[j]<-palabrasIngresadas[azar(cantFilas)]
Escribir "pos", " ", j, palabrasIngresadas[j]
FinPara

FinAlgoritmo



« Última modificación: 26 de Noviembre 2020, 09:50 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2635
    • Ver Perfil
Re: AYUDA CON PSeInt URGENTE POR FAVOR
« Respuesta #1 en: 26 de Noviembre 2020, 09:49 »
Buenas, es importante para escribir en los foros seguir las normas que se indican en https://aprenderaprogramar.com/foros/index.php?topic=1460.0
Si no lo haces así, tus consultas pueden ser eliminadas. En este caso, voy a encargarme yo de corregir el título, que no debe contener palabras como ayuda, urgente, por favor, etc. El código o pseudocódigo debes pegarlo dentro de etiquetas code, también lo corregiré.

No manejo Pseint, pero el error que te aparece parece estar relacionado con los índices de los arrays o arreglos.

Para manejar pseint debes remitirte a un manual o especificación que te diga cómo funcionan sus instrucciones. En este caso me he remitido a http://pseint.sourceforge.net/index.php?page=pseudocodigo.php para consultar cómo trabaja la función azar y veo que indica:

AZAR(X) devuelve un entero aleatorio entre 0 y X-1

El error que te aparece indica que el rango de índices del array o dimensión palabrasIngresadas[cantFilas] debe estar entre 1 y cantFilas, por ejemplo entre 1 y 3, pero  palabrasIngresadas[azar(cantFilas)] te devuelve números entre 0 y cantFilas-1, por ejemplo entre 0 y 2, y esto es lo que parece generarte el error.

Parece que el error se corregiría simplemente escribiendo palabrasIngresadas[azar(cantFilas+1)] Esto en teoría ya te debe generar los índices correctos, por ejemplo entre 1 y 3 en lugar de entre 0 y 2

Salu2

Ezearaujo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re: AYUDA CON PSeInt URGENTE POR FAVOR
« Respuesta #2 en: 26 de Noviembre 2020, 17:01 »
Buenas Ogramar, agradezco mucho tu ayuda, es mi primera vez en el foro y no lo entiendo mucho. Realicé tal cual me indicaste, en el segundo Para, palabrasIngresadas[j]<-palabrasIngresadas[azar(cantFilas+1)]

Resulta que me tira error fuera de rango de igual forma
« Última modificación: 26 de Noviembre 2020, 18:23 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2635
    • Ver Perfil
Sí, perdona, parece que me equivoqué al teclear y no sería  palabrasIngresadas[azar(cantFilas+1)]
sino palabrasIngresadas[azar(cantFilas)+1] ya que se debe sumar uno a lo que devuelva la función azar para que el resultado no pueda ser cero

nengue

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
El error es el siguiente , cuando preguntas cantFilas estas preguntando la cantidad de elementos (palabras) ,que vas a guardar en tu arreglo(dimension) ,y no es lo mismo cantidad de elementos al indice; el indice en un arreglo, es igual a n-1 donde n es la cantidad de elementos, entonces si queres obtener el elemento en la pocision 1, el indice debe ser 0....para explicar mejor..el arreglo es como una caja , que guarda elementos del mismo tipo, imaginemos frutas y lo vamos a representar de esta manera

[naranja, manzana, banana]

ahora bien, en nuestra caja tenemos 3 elementos, en la pocisión 1 una naranja, en la pocisión 2 una manzana y en la pocisión 3 una banana, pero en el arreglo si queremos obtener o sacar un elemento debemos usar el índice , fijate lo siguiente


     1             2           3             pocisión
[naranja, manzana, banana] -> cantidad de elementos =3
    0             1             2            índice

se cumple entonces que el índice es igual a n-1

si yo digo cajonDeFrutas[0] ,esto es igual a naranja ...el error viene porque estas apuntando a un indice que no existe ...espero que hayas entendido..la solución para el error seria cantFilas-1 en el ciclo para, ya que estas diciendo  en tu ciclo para que el índice debe ir de 1 hasta 3, y en tu ejercicio no solamente arrancamos mal con i=1(partimos desde manzana, y olvidamos la naranja) si no que apuntamos a un índice que no existe (el índice va desde 0 hasta 2)...espero haberte ayudado a que comprendas el error.

Por otro lado....¿como guardas las palabras que ingresas en el ciclo para en tu arreglo?
no veo una asignación..ojo con eso..espero que te des cuenta que lees las palabras pero no las estas guardando en el arreglo(dimension)palabrasIngresadas...para que esto suceda deberías escribir algo como

Código: [Seleccionar]
leer palabra
palabrasIngresadas[i]<-palabra

espero que se entienda..otra observación es que necesitas de una dimensión aux para mostrar la dimensión reordenada o un medio alternativo, como una variable auxiliar y una forma de controlar el reordenamiento,
azar te va a dar error,deberias indicar que el numero al azar este dentro de los valores del indice(tamaño del arreglo o dimension - 1 ), y que si un índice ya salió genere nuevamente otro valor...anda corrigiendo y vamos viendo, lo importante es que lo puedas ver y te des cuenta.
« Última modificación: 30 de Noviembre 2020, 19:00 por nengue »

+Elizabeth+

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
A veces ese error sale porque no está configurada la opción "Utilizar índices y arreglos en cadenas en base 0".
Hay que ir a...
Configurar->Opciones del Lenguaje (perfiles)->Personalizar->Utilizar índices y arreglos en cadenas en base 0.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2635
    • Ver Perfil
Buenas +Elizabeth+, esa opción parece que puede ser interesante, gracias por el aporte.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".