Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Ezearaujo en 26 de Noviembre 2020, 05:30

Título: Pseint Error 303: Subindice (0) fuera de rango (1..) azar ejecución interrumpida
Publicado por: Ezearaujo en 26 de Noviembre 2020, 05:30
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



Título: Re: AYUDA CON PSeInt URGENTE POR FAVOR
Publicado por: Ogramar 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
Título: Re: AYUDA CON PSeInt URGENTE POR FAVOR
Publicado por: Ezearaujo 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
Título: Re: Pseint Error 303: Subindice (0) fuera de rango (1..) azar ejecución interrumpida
Publicado por: Ogramar en 26 de Noviembre 2020, 18:25
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
Título: Re: Pseint Error 303: Subindice (0) fuera de rango (1..) azar ejecución interrumpida
Publicado por: nengue en 30 de Noviembre 2020, 18:22
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.
Título: Re: Pseint Error 303: Subindice (0) fuera de rango (1..) azar ejecución interrumpida
Publicado por: +Elizabeth+ en 21 de Mayo 2021, 00:04
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.
Título: Re: Pseint Error 303: Subindice (0) fuera de rango (1..) azar ejecución interrumpida
Publicado por: Ogramar en 21 de Mayo 2021, 20:34
Buenas +Elizabeth+, esa opción parece que puede ser interesante, gracias por el aporte.