Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

glbaptista

: Programinha em vb

Recommended Posts

Olah pessoal! Tenho que fazer um programa em vb6 que le uma string e diz se ela eh espelhada ou nao e palindrome (igual lida d tras pra frente) ou nao. Cmo sou iniciante em programacao nao consigo ler char por char e compara-los somente string por string, o q eh tudo bm pra saber se eh palindrome mas nao pra ver se eh espelhada. Abaixo estao os caracteres e suas respectivas espelhadas. A - A E - 3 I - I J - L L - J M - M O - O S - 2 T - T U - U V - V W - W X - X Y - Y Z - 5 1 - 1 2 - S 3 - E 5 - Z 8 - 8 As que nao tao acima nao podem ser espelhadas! Ou seja, uma string "S3TE2" eh uma string espelhada. E uma string "ATOYOTA" eh uma palindrome espelhada. Para ler se uma palavra eh palindrome o meu codigo ficou assim: Private Sub Command1_Click() Dim res As Boolean Dim Palavra As Integer Dim rever As String Dim texto As String variable1 = FreeFile Open "C:\Documents and Settings\Administrador\Meus documentos\Exercício\in.txt" For Input As #variable1 Do Until EOF(variable1) = True Line Input #variable1, texto size = Len(texto) rever = StrReverse(texto) res = StrComp(texto, rever, vbTextCompare) If res = False Then Print texto & " -- is a regular palindrome." Else: Print texto & " -- is not a palindrome." End If Loop Close #variable1 End Sub Alguem poderia me ajudar a fazer a parte da string espelhada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode montar dois arrays um que contenha a letra e o outro sua respectiva espelhada (estando elas no mesmo índice). Depois usando um loop você procura pelas letras espelhadas na string, e casa haja, você substitui pela sua respectiva letra correta. (ou vice versa)

Compartilhar este post


Link para o post
Compartilhar em outros sites

o comando instr lhe diz se determinada letra existe e lhe retorna a posição da letra na stringou então você faz um for next na string

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ler letra por letra você utiliza um for junto com a função mid assim:

for x=1 to len(texto)	letra = mid(texto,x,1)	'daí faz as comparaçõesnext x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para você saber se uma palavra lida de tras pra frente é = ela mesma (espelhada), voce pode faser assim:

 

Dim Palavra as StringPalavra = "slype"if Palavra = StrReverse (Palavra) then   msgbox "é espelhada"else    msgbox "não é espelhada"end if

é isso ae.... a função "StrReverse" ela retorna a String ao contrario!

até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas sugestoes!Vou tentar fazer a partir do comando Instr e do comando split (para conter as ocorrencias da letra na palavra) dentro d um if para cada comparacao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.