Usuario
For-next Comparadores de letras

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: SOSpalabra 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 listboxejemplo: "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
as 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
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.
-
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"