Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 10 de 16

Tema: Ayuda en Pseint

  1. #1

    Predeterminado Ayuda en Pseint

    ¡Muy buenas comunidad!
    Me han planteado el siguiente problema en Pseint ;

    Realizar un algoritmo para un programa que se encargue de leer10 textos y, posteriormente, nos muestre los textos ordenadosde menor a mayor número de caracteres. En caso de que dostextos tengan el mismo número de caracteres, se pondrá primeroel que tenga mayor número de vocales. Para este algoritmopodemos utilizar la función ObtenerLetra.

    De momento he avanzado esto ;


    Algoritmo Mod5
    Definir text Como Caracter ;
    Definir col,aux,tamaño1, tamaño2,intento Como Entero;
    col=40;
    Dimension mensaje[10,col];
    dimension aux[1,col];




    Para intento<-1 Hasta 10 Con Paso 1 Hacer *Aquí ingreso los datos a la matriz. Funciona, esta parte bien.

    Mostrar "Ingrese texto #", intento ;
    Leer mensaje[intento,1];
    Fin Para

    Para intento<-1 Hasta 9 Con Paso 1 Hacer
    tamaño1 = Longitud(mensaje[intento,1]);
    tamaño2 = Longitud(mensaje[intento+1,1]);

    Mostrar tamaño1 * Esto de mostrar lo puse de prueba para comprobar que en tamaño1 y tamaño2 estaba obteniendo los valores deseados.
    mostrar tamaño2

    //si tamaño1 > tamaño2 Entonces; *Aquí lo que pretendía era ordenar la matriz colocando las palabras más cortas primero, pero, no funciona jeje.
    Intenté hacer el método de la burbuja pero no sé cómo hacerlo en matrices, improvisé porque lamentablemente
    //aux[intento,40] = mensaje[intento,1]; en el curso que sigo no lo han explicado así que no tengo ese respaldo y no encontré nada parecido en internet.
    //mensaje[intento,1] = mensaje[intento+1,1];
    //mensaje[intento+1,1] = aux[intento,40];

    //FinSi

    Fin Para

    FinAlgoritmo



    Gracias anticipadas por la ayuda.
    Saludos.

  2. #2
    Con domicilio en Noticias3d.com Avatar de eXteR
    Ubicación
    Tarragona
    Mensajes
    8,229

    Predeterminado Re: Ayuda en Pseint

    Lo que tienes que hacer es ir guardando en la matriz ya ordenada.

    Cuando entres un texto, calculas longitud y número de vocales, y haces un bucle de esa misma matriz para comparar con la que ya tienes guardado.

    Si digamos que tocaría insertar dicho texto en la posición 4, mueves todo lo que haya de la 4 en adelante una posición y guardas el texto entrado.
    Ryzen 5800X - RL Custom (420+280) - MSI MEG X570 ACE - 16Gb FlareX 3600 CL16 - MSI RTX 2080Ti Lightning
    WD Black SN750 NVMe 1TB - Samsung 860 EVO 1TB - BeQuiet Straight Power 800W - MSI MAG274QRF
    Phanteks Evolv X - Logitech G513- Logitech G403 - Sennheiser Game One -
    Edifier R1280DB

    Tras 18 años en el foro(2003-2021), dejo de participar y ayudar debido a las malas actuaciones de moderación y falta de criterio en aplicación de las normas. Que den soporte ellos a la comunidad. Un saludo Cosita.

  3. #3

    Predeterminado Re: Ayuda en Pseint

    Gracias por la rpta eXteR , no lo había visto de esa forma. Gran ayuda.
    Pero ahora, la pregunta sería, ¿en Pseint ,cómo se mueve toda una línea de texto en la matriz?

    -Aquí me he quedado:

    Algoritmo sin_titulo
    Definir tam1, tam2 como entero

    col=40;
    Dimension mensaje[10,col];

    Para intento<-1 Hasta 10 Con Paso 1 Hacer
    Mostrar "Ingrese texto #", intento ;
    Leer mensaje[intento,1];
    tam1 = longitud (mensaje[intento,1]);

    Si tam1 > tam2 Entonces
    acciones_por_verdadero
    SiNo
    acciones_por_falso
    Fin Si



    Fin Para
    FinAlgoritmo
    Última edición por elbuscador; 16/04/2020 a las 15:24

  4. #4
    Con domicilio en Noticias3d.com Avatar de eXteR
    Ubicación
    Tarragona
    Mensajes
    8,229

    Predeterminado Re: Ayuda en Pseint

    Cita Iniciado por elbuscador Ver mensaje
    Gracias por la rpta eXteR , no lo había visto de esa forma. Gran ayuda.
    Pero ahora, la pregunta sería, ¿en Pseint ,cómo se mueve toda una línea de texto en la matriz?

    -Aquí me he quedado:

    Algoritmo sin_titulo
    Definir tam1, tam2 como entero

    col=40;
    Dimension mensaje[10,col];

    Para intento<-1 Hasta 10 Con Paso 1 Hacer
    Mostrar "Ingrese texto #", intento ;
    Leer mensaje[intento,1];
    tam1 = longitud (mensaje[intento,1]);

    Si tam1 > tam2 Entonces
    acciones_por_verdadero
    SiNo
    acciones_por_falso
    Fin Si



    Fin Para
    FinAlgoritmo
    No he usado nunca Pseint, pero vamos si por ejemplo "mensaje[3]" es el que queremos mover, entiendo que sería "mensaje[4]=mensaje[3]".

    Básicamente cuando encuentres en la posición que lo tienes que guardar, tienes que hacer un bucle de la posición 9 hacia abajo, para ir moviendo.

    Y fijate que digo 9 y no 10, porque si en esa posición hay texto es que ya los tienes todos guardados.

    Por tanto, sería algo como:

    Para intento=9 hasta N (posicion a la que tienes que moverlo) con paso -1 (entiendo que se puede ir restando al for, con visual basic es Step -1)
    mensaje[intento]=mensaje[intento-1]
    Fin Para
    Ryzen 5800X - RL Custom (420+280) - MSI MEG X570 ACE - 16Gb FlareX 3600 CL16 - MSI RTX 2080Ti Lightning
    WD Black SN750 NVMe 1TB - Samsung 860 EVO 1TB - BeQuiet Straight Power 800W - MSI MAG274QRF
    Phanteks Evolv X - Logitech G513- Logitech G403 - Sennheiser Game One -
    Edifier R1280DB

    Tras 18 años en el foro(2003-2021), dejo de participar y ayudar debido a las malas actuaciones de moderación y falta de criterio en aplicación de las normas. Que den soporte ellos a la comunidad. Un saludo Cosita.

  5. #5

    Predeterminado Re: Ayuda en Pseint

    Bueno, de momento ya lo tengo ordenado, estoy yendo paso a paso para entender mejor.
    Ahora sólo me falta ordenar por vocales en caso d igualdad.

    Lo que no entendí muy bien , es ¿por qué dices que debería hacer un bucle desde 9 hacia abajo? , yo recién estoy comenzando en esto y no sé técnicas, ni procedimientos de profesional.
    Muchas gracias por la ayuda, eXteR


    Algoritmo sin_titulo
    definir j, i,x,n Como Entero
    n=10
    largo2=0
    dimension textos[n]

    Para x<-1 Hasta n Con Paso 1 Hacer
    Escribir "Ingresar texto #",x ;
    leer ingreso;
    textos[x]= ingreso;

    Fin Para


    Para i<-1 Hasta n Con Paso 1 Hacer
    para j<-i+1 hasta n con paso 1 hacer


    Si longitud(textos[i])>longitud(textos[j]) Entonces
    aux = textos[j];
    textos[j] = textos[i];
    textos[i] = aux;
    Fin Si

    Fin Para
    Fin para

    Para x<-1 Hasta n Con Paso 1 Hacer
    Escribir textos[x];

    Fin Para


    FinAlgoritmo
    Última edición por elbuscador; 16/04/2020 a las 18:27

  6. #6

    Predeterminado Re: Ayuda en Pseint

    Bueno , al final lo terminé, pero me salió todo este tocho.
    Funciona, pero está feo. Seguramente se podría simplificar muchísimo más, pero mis conocimientos no dan para tanto.

    Algoritmo Modulo4Caso1
    definir a,b,j,i,x,n,conta1,conta2 Como Entero
    Definir c Como Caracter
    n=10
    largo2=0
    dimension textos[n]

    Para x<-1 Hasta n Con Paso 1 Hacer
    Escribir "Ingresar texto #",x ;
    leer ingreso;
    ingreso = Mayusculas(ingreso);
    textos[x]= ingreso;
    Fin Para

    Para i<-1 Hasta n Con Paso 1 Hacer
    para j<-i+1 hasta n con paso 1 hacer
    Si longitud(textos[i])>longitud(textos[j]) Entonces
    aux = textos[j];
    textos[j] = textos[i];
    textos[i] = aux;
    SiNo
    Si longitud(textos[i]) = Longitud(textos[j]) Entonces
    Para a<-1 Hasta Longitud(textos[i]) Con Paso 1 Hacer
    c = Subcadena(textos[i],a,a)
    Si (c="A" || c="E" || c="I" || c="O" || c="U" || c="Á" || c="É" || c="Í" || c="Ó" || c="Ú") Entonces
    conta1=conta1+1;
    FinSi
    Fin Para
    Para a<-1 Hasta Longitud(textos[j]) Con Paso 1 Hacer
    c = Subcadena(textos[j],a,a)
    Si (c="A" || c="E" || c="I" || c="O" || c="U" || c="Á" || c="É" || c="Í" || c="Ó" || c="Ú") Entonces
    conta2=conta2+1;
    Finsi
    Fin Para
    Si conta2 >conta1 Entonces
    aux = textos[j];
    textos[j] = textos[i];
    textos[i] = aux;
    Fin Si
    Fin Si
    Fin Si
    Fin Para
    Fin para

    Para x<-1 Hasta n Con Paso 1 Hacer
    Escribir textos[x];
    Fin Para

    FinAlgoritmo

  7. #7
    Con domicilio en Noticias3d.com Avatar de eXteR
    Ubicación
    Tarragona
    Mensajes
    8,229

    Predeterminado Re: Ayuda en Pseint

    Lo importante es que lo hayas sacado. Para optimizar código siempre estamos a tiempo

    Enviat des del meu RMX1931 usant Tapatalk
    Ryzen 5800X - RL Custom (420+280) - MSI MEG X570 ACE - 16Gb FlareX 3600 CL16 - MSI RTX 2080Ti Lightning
    WD Black SN750 NVMe 1TB - Samsung 860 EVO 1TB - BeQuiet Straight Power 800W - MSI MAG274QRF
    Phanteks Evolv X - Logitech G513- Logitech G403 - Sennheiser Game One -
    Edifier R1280DB

    Tras 18 años en el foro(2003-2021), dejo de participar y ayudar debido a las malas actuaciones de moderación y falta de criterio en aplicación de las normas. Que den soporte ellos a la comunidad. Un saludo Cosita.

  8. #8

    Predeterminado Re: Ayuda en Pseint

    Eso espero, toca practicar nada más.

    Ya puestos ; me podrías ayudar en lo siguiente?

    Funcion compararnumeros(numero1, numero2)
    Si numero1>numero2 Entonces
    aux = numero1;
    numero1 = numero2;
    numero2 = aux;
    FinSi
    FinFuncion

    Funcion factorial(numero)
    suma=1;
    Para x<-numero Hasta 1 Con Paso -1 Hacer
    suma=suma*x;
    Fin Para
    FinFuncion



    Algoritmo Mod5Alg2
    Definir num1, num2 como entero;

    Escribir "Ingresar número 1";
    leer num1;

    Escribir "Ingresar número 2";
    leer num2;

    Si num1=num2 Entonces
    Mostrar "Los números son iguales";
    factorial(num1);

    SiNo
    compararnumeros(num1,num2);
    num1 = numero1
    num2 = numero2


    factorial(num1);
    factorial(num2);
    Fin Si
    Mostrar num1
    Mostrar num2

    FinAlgoritmo



    Tengo un problema mostrando el mayor y el menor.
    Cuándo hago la prueba me muestra como num1 = 0 y num2=0 .
    Sé que el fallo está en la función compararnumeros, pero no sé exactamente en qué estoy fallando.

    Y acabo de probar que cuándo invoco a la función factorial , me dice que no entrega ningún número :S


    Saludos y gracias nuevamente por la ayuda.
    Última edición por elbuscador; 18/04/2020 a las 16:20

  9. #9
    Con domicilio en Noticias3d.com Avatar de eXteR
    Ubicación
    Tarragona
    Mensajes
    8,229

    Predeterminado Re: Ayuda en Pseint

    Cita Iniciado por elbuscador Ver mensaje
    Eso espero, toca practicar nada más.

    Ya puestos ; me podrías ayudar en lo siguiente?

    Funcion compararnumeros(numero1, numero2)
    Si numero1>numero2 Entonces
    aux = numero1;
    numero1 = numero2;
    numero2 = aux;
    FinSi
    FinFuncion

    Funcion factorial(numero)
    suma=1;
    Para x<-numero Hasta 1 Con Paso -1 Hacer
    suma=suma*x;
    Fin Para
    FinFuncion



    Algoritmo Mod5Alg2
    Definir num1, num2 como entero;

    Escribir "Ingresar número 1";
    leer num1;

    Escribir "Ingresar número 2";
    leer num2;

    Si num1=num2 Entonces
    Mostrar "Los números son iguales";
    factorial(num1);

    SiNo
    compararnumeros(num1,num2);
    num1 = numero1
    num2 = numero2


    factorial(num1);
    factorial(num2);
    Fin Si
    Mostrar num1
    Mostrar num2

    FinAlgoritmo



    Tengo un problema mostrando el mayor y el menor.
    Cuándo hago la prueba me muestra como num1 = 0 y num2=0 .
    Sé que el fallo está en la función compararnumeros, pero no sé exactamente en qué estoy fallando.

    Y acabo de probar que cuándo invoco a la función factorial , me dice que no entrega ningún número :S


    Saludos y gracias nuevamente por la ayuda.
    Así sin tabuladores el código es dificil de leer de cojones. XD

    quizás es que en la función comparanumeros no has declarado la variable aux? O no es necesario hacerlo?

    Tampoco entiendo que llamas a la función compararnumeros(num1,num2);

    y luego asignas num1=numero1 y num2=numero2. De dónde salen esas variables?

    Cuando estás pasando a la función los num1 y num2, entiendo que esos valores los devuelve por referencia (sobre la misma variable que le has pasado)
    Ryzen 5800X - RL Custom (420+280) - MSI MEG X570 ACE - 16Gb FlareX 3600 CL16 - MSI RTX 2080Ti Lightning
    WD Black SN750 NVMe 1TB - Samsung 860 EVO 1TB - BeQuiet Straight Power 800W - MSI MAG274QRF
    Phanteks Evolv X - Logitech G513- Logitech G403 - Sennheiser Game One -
    Edifier R1280DB

    Tras 18 años en el foro(2003-2021), dejo de participar y ayudar debido a las malas actuaciones de moderación y falta de criterio en aplicación de las normas. Que den soporte ellos a la comunidad. Un saludo Cosita.

  10. #10

    Predeterminado Re: Ayuda en Pseint

    [IMG][/IMG]

    Hola eXteR , perdona, al copiar el código se veía bien, con tabulaciones y todo pero luego al aparecer en el foro salió todo junto.
    Adjunto una imagen que acabo de subir.
    Luego he seguido tocando el programa, por lo que ha sufrido algunas modificaciones desde lo que te pasé, pero sigue sin funcionar.

    Ok, voy a intentar explicar que es lo que se supone que he hecho, jeje.

    Bueno, el ejercicio pide lo siguiente:

    ALGORITMO 2
    Aplicando técnicas de programación modular, realizar una serie de
    procedimientos y funciones para realizar las siguientes operaciones:
    • A partir de dos números nos devuelva el menor de los dos
    • A partir de dos números nos devuelva el mayor de los dos
    • A partir de dos números, devuelva la suma de todos los números
    comprendidos entre ellos
    • A partir de un número nos devuelva el factorial de dicho número.
    Después, el programa solicitará dos números y, usando los procedimientos
    y funciones anteriores, mostrará la suma de los números comprendidos
    entre estos dos números y el factorial de cada uno.


    Entonces, al inicio se ingresan dos números y luego de comprobar que no son iguales, llamo a la función COMPARARNUMEROS para comprobar cuál es mayor y cuál es menor.
    Y al llamar a la función agrego dos parámetros (¿o argumentos o valores?), que son num1 y num2.
    La función se llama COMPARARNUMEROS (numero1, numero2) .
    Si no he entendido mal, se supone que numero1 y numero2 van a tomar los valores de num1 y num2.
    Una vez allí, lo que intento hacer es intercambiar los números,es decir si numero1 es mayor que numero2, numero1 va a coger el menor valor y numero2 va a ser el mayor valor.

    Según yo, esos valores intercambiados son los que deberían retornar al programa principal, osea num1 debería ser el menor número ingresado y num2 el mayor número ingresado, pero obviamente, está mal porque al mostrarlos se muestran tal cuál fueron ingresados.


    Sobre la variable aux, no tendo el Pseint en modo estricto por lo que no hace falta inicializar, pero igualmente lo haré, por si acaso.

    Estoy un poco estancado en esta parte , del por qué no retornan los valores deseados al hacer la comparativa de los números, sigo en proceso de entender lo de "por referencia" y "por valor", he probado esta función con ambos y con ninguno obtengo los resultados esperados.
    Última edición por elbuscador; 18/04/2020 a las 19:38

Página 1 de 2 12 ÚltimoÚltimo

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •