none
For-next Comparadores de letras RRS feed

  • Pregunta

  • Hola buenos dias gente!.

    Estoy haciendo un Generador de crucigramas para un parcial en mi universidad.

    Voy creando gracias a la ayuda de este foro una buena porcion del codigo, pero me surgio un nuevo problema.

    Estoy queriendo comparar 2 palabras
    palabra 1: SOS

    palabra 2: LOL

    aca una imagen: http://fotos.subefotos.com/f66d931280681826b722d89732a3bd18o.png
    derecha: codigo
    izquierda: programa (mirar desde la linea del medio hacia la izquierda)
    abajo: paint mostrando lo que intento hacer.

    En resumen, quiero que la palabra "perro" recorra la palabra "gato" de manera distributiva.

    o la palabra "sos" recorra la palabra "lol".

    para eso cree el codigo que esta en la foto y pego aca:

    Dim pa1 As Integer
    Dim pa2 As Integer
    Text1.Text = Len(pal1.Text)
    Text2.Text = Len(pal2.Text)
    
    For pa2 = 0 To Len(pal2.Text)
        pal2.SelStart = (pa2 - 1) + 1
        pal2.SelLength = 1
        lista.AddItem pal2.SelText
    
        For pa1 = 0 To Len(pal1.Text)
            pal1.SelStart = (pa1 - 1) + 1
            pal1.SelLength = 1
            lista.AddItem pal1.SelText
            If (pal1.SelText = pal2.SelText) Then
                listo.AddItem "si"
            Else
                listo.AddItem "no"
            End If
        Next
    Next

    al poner en la primer listbox, el proceso por el que pasa las letras de cada palabra seleccionadas (por letra)
    y el proceso de eleccion de si son iguales o no en otro listbox

    ejemplo: "sa" recorre a "es"

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

    s         
    e    s y e iguales? no
    s   
    s    s y s iguales? si
    a  
    e   a y e iguales? no
    a

    s   a y s iguales? no

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

    Vemos que hay lineas de items vacias.

    No se que las produzcan y además, las ultimas lineas del listbox primero dice "sos" en vertical, estan comparando con un "espacio vacio"

    Tampoco se a que se deba.

    En conclusion, quisiera saber por que aparecen espacios en blanco? ya que el if-else-endif los capta y les pone "no" al no ser iguales a la palabra 1. tambien quisiera saber por que aparece la ultima palabra comparada con un espacio vacio

    y si es posible brindarme la solución

    Agradeceria mucho ese gesto :)


    • Editado Sergio Gerard sábado, 13 de mayo de 2017 8:33 error tipografico
    sábado, 13 de mayo de 2017 8:27

Todas las respuestas

  • Siendo que ambas palabras tienen la misma longitud debería bastar con comparar carácter por carácter bajo la misma posición, por ejemplo:

    Private Sub btnComparar_Click()
        
        Dim Palabra1, Palabra2 As String
        Dim Index As Integer
        
        lblResultado.Caption = "---RESULTADO---" & vbCrLf
        lblResultado.AutoSize = True
        lblResultado.WordWrap = True
        
        Palabra1 = txtPalabra1.Text
        Palabra2 = txtPalabra2.Text
        
        For Index = 0 To Len(Palabra1) - 1 'Recorrer cada carácter de la 1ra palabra
            'Escribir V o X según el resultado de la comparación
            lblResultado.Caption = lblResultado.Caption & _
                Mid(Palabra1, Index + 1, 1) & Space(4) & _
                Mid(Palabra2, Index + 1, 1) & Space(4) & "=" & Space(4) & _
                IIf(Mid(Palabra1, Index + 1, 1) = Mid(Palabra2, Index + 1, 1), "V", "X") & _
                vbCrLf
        Next
        
    End Sub

    Deberías obtener algo similar a:

    Finalmente, ¿programas en VB6 por una decisión personal o tiene que ver con el lenguaje utilizado en la curricula que estudias?, lo pregunto porque se trata de un lenguaje muy antiguo (lanzado hace 19 años), te recomiendo que practiques utilizando versiones modernas del lenguajes.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.


    sábado, 13 de mayo de 2017 17:23
  • El programa visual basic 6 lo utilizo por que la universidad pide que aprenda sobre él.
    De ser por mi usaria Visual Studio 2017, el cual aprendi mucho junto a éste.

    Lamentablemente tengo que hacerlo aca

    Y mil perdones por mi gran equivocacion, queria decir "programa: mirar desde la linea del medio hacia la derecha"

    Es la version adaptable al programa que intento

    ya que al escribir las 2 palabras: "perro" "gato" y apretar "Auto" se recorren los for y completan los 2 listbox

    No me serviria de mucho comparar por ubicacion de caracter 

    ya que el usuario meteria 10 palabras

    y si la palabra "sendero"(palabra2) no tiene similitud o "true" en la palabra "cacha"(palabra1)
    entonces no la ubicaria en su posicion, ademas no tienen la misma cantidad de caracteres

    Por eso los 2 for, la primera letra de la palabra 2 recorre todas las letras de la palabra uno, buscando similitud para posicionarla, lo que no me gusta son esos espacios en los listbox, pero no se solucionarlos, si no hay de otra me quedaria con ese por lo menos los espacios dicen "no" y no ejecutarian el "supuesto codigo de posicionamiento" que pondria en el "si"

    sábado, 13 de mayo de 2017 17:38