Ir para conteúdo

POWERED BY:

Arquivado

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

pedro2115

[Resolvido] Ordem trocada

Recommended Posts

Boas pessoal

 

Eu estou a ter um pequeno grande problema com um exercicio em visual basic, o que se passa é o seguinte o programa tem de ler uma frase introduzida pelo utilizador e depois tem de mandar para o stdout uma nova frase apartir da 1º, ou seja ele vai ter de meter em 1º lugar todos os numeros, depois os caracteres maiusculos, em 3º todos os minusculos e todos os outros caracteres. E tambem é preciso remover os espaços e os caracteres repetidos.

 

Um exemplo: Eu sou o André gosto muito de Futebol e jogo há 18 anos.

Esta fica assim: 18EAFusondregtmifbljha

 

Eu ja tentei quase tudo para por isto a funcionar mas nada, nem consigo encontrar as funções necessárias alguem me pode ajudar?? :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que usar um pouco de lógica para montar esse processo.

Quanto as funcções temos alguns exemplos:

 

Val() - transforma caracter em numerico

Ucase$() - transforma caracteres minusculos em maiusculos.

Lcase$() - transforma caracteres maiusculos em minusculos.

Len() - retorna numero de caracteres de uma string.

mid$() - retorna parte de uma string.

 

e por ai vai... O ideal é coo eu disse no inicio, trabalhar muito bem a lógica do processo.

Precisa ler cada caractere da string e tratar de acordo com o que se pede.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só Pedro, algo legal que você pode fazer para desenvolver a lógica que precisará é fazê-la antes de mais nada no papel. Bem receitinha de bolo mesmo, tipo:

 

Para começar vou olhar caractere por caractere e se for número vou deixando de separado, depois vou olhar de novo e ver se é maiúscula, e deixo separado, e assim por diante. Tente desenvolver a lógica e se tiver dúvidas com código a gente te ajuda.

 

Obs.: MibNetWeb, só tenho uma dúvida, o Lcase e Ucase transformam em minúsculas e maiúsculas respectivamente, mas no caso dele, ele precisa saber se é maiúscula ou minúscula. Não conheço algo que faça isso, você conhece?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obs.: MibNetWeb, só tenho uma dúvida, o Lcase e Ucase transformam em minúsculas e maiúsculas respectivamente, mas no caso dele, ele precisa saber se é maiúscula ou minúscula. Não conheço algo que faça isso, você conhece?

Realmente Neto, você está correto. No caso dele tem que testar cada caractere. Vou pensar em algo e depois posto aqui pra analisarmos.

 

Valeu http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obs.: MibNetWeb, só tenho uma dúvida, o Lcase e Ucase transformam em minúsculas e maiúsculas respectivamente, mas no caso dele, ele precisa saber se é maiúscula ou minúscula. Não conheço algo que faça isso, você conhece?

Realmente Neto, você está correto. No caso dele tem que testar cada caractere. Vou pensar em algo e depois posto aqui pra analisarmos.

 

Valeu http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Achei uma maneira usando o próprio Ucase:

 

Private Sub ConfereCaracter(texto As String)

If UCase(texto) = texto Then
	MsgBox "é maiúscula"
End If

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obs.: MibNetWeb, só tenho uma dúvida, o Lcase e Ucase transformam em minúsculas e maiúsculas respectivamente, mas no caso dele, ele precisa saber se é maiúscula ou minúscula. Não conheço algo que faça isso, você conhece?

Realmente Neto, você está correto. No caso dele tem que testar cada caractere. Vou pensar em algo e depois posto aqui pra analisarmos.

 

Valeu http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Achei uma maneira usando o próprio Ucase:

 

Private Sub ConfereCaracter(texto As String)
 
 If UCase(texto) = texto Then
	 MsgBox "é maiúscula"
 End If
 
 End Sub

Boa Neto!!

 

Agora é só o nosso amigo aplicar isso na lógica a ser desenvolvida!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio essa da receitinha do bolo foi mesmo uma boa dica, assim não tenho de tentar lembrar de tudo quando estiver a fazer o programa e até se torna mais fácil.

Eu neste programa ja o tentei fazer uma vez e ficou com 6 ciclos for se não me engano :rolleyes: os meus maiores problemas são mesmo o trabalhar com arrays e tirar os espaços neste, só que no tirar os espaços eu já pensei numa coisa que era dividir a string em substrings ou seja de 2 em 2 caracteres por exemplo e remover sempre os espaços da direita que dizem??

 

Edit: Claudio esse codigo que metes-te ai não se podia fazer tambem a mesma coisa mas de forma a guardar as maiusculas no array??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pedro, primeiramente para tirar os espaços, é muito mais fácil do que você imagina.

 

Basta fazer:

 

string = replace(string," ", "")

O replace troca um caractere por outro, nesse caso, ele trocará o caractere espaço " " por nada "".

 

E sim, poderia sim, eu coloquei a mensagem como exemplo, mas a idéia é você adaptar para que armazene em uma variável sim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio és um mestre http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif eu andei á procura de funções para eliminar os espaços e nem sabia que era assim tão fácil http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

 

Olha eu meti essa parte assim:

For i = 0 To tam

If frase(i) Like " " Then

frase(i) = Replace(frase(i), " ", "")

End If

O tam é o tamanho da string eu usei o len: tam = Len("frase")

A frase é o nome da string em que fica a frase inserida pelo utilizador, agora eu tenho uma duvida eu para saber se são maiusculas meti assim:

For i = 0 To tam

If frase(i) = UCase(frase(i)) Then

final(cont) = frase(i)

cont = cont + 1

End If

Next

Eu tenho a ideia que está alguma coisa mal especialmente na parte de meter as maiusculas para a outra string(final) http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

 

Se for preciso meto aqui o código todo http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

 

Abraço e obrigado desde já pelas dicas pessoal http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, na primeira parte mano é necessário o for nem o if, carta fazer direto o replace, pois por mais que não haja nenhum espaço, não fará erro. E assim, sua variável está armazenamen toda sua string né, então no segundo for também tem um erro. Na hora de fazer o if, você deve comparar caractere por caractere. Para isso use o mid. Vai portando que ajudamos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio não percebi como o mid pode ajudar aqui, o mid não é para tirar uma substring da string??

Eu acho que sei onde está o erro é que o ciclo quando ele procura se é maiuscula ou não o ciclo não anda para a frente ou serei que estou a ver mal http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, me desculpe, é que eu havia achado que a variável frase(i) estava armazenando a frase toda, e não letra por letra.

 

E com fez para passar os caracteres para a variável frase? Na verdade, você nem precisa trabalhar com array para o que precisa.

 

Mas tente passar seu código da forma que está para o VB, veja o resultado e diga se funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não Claudio http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif estes dias não pude mexer no problema é que hoje tenho teste a Visual Basic http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

 

Mas amanha já tento outra vez, Claudio uma duvida tu dizeste que podia fazer isto sem arrays como assim?? Eu não consigo ver o problema sem usar arrays.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas, quando testar avise o resultado.

 

Daria para fazer assim:

 

Você precisará de cinco variáveis (uma para armazenar a frase certa, outra para os números outra para as Maiúsculas, outra para as minúsculas e uma para a frese final).

 

Ai você precisará de fará um for next com um if dentro, da forma como já fez mesmo i = 1 to len(texto).

 

Seu if deverá primeiro comparar se o caractere é numérico, se for, deverá armarzenar com o mid, o caractere comparado dentro da variável separada para receber os numéricos.

Se não for numérico, compare de é maiúscula, e faça a mesma coisa, e assim por diante.

 

Depois que fechar seu for next, a variável que armazenará a frase toda deve receber a junção das outras três variáveis.

 

Bom, é isso, talvez tenha ficado um pouco confuso, mas se tiver dúvidas avise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que percebi a ideia Claudio tira-me só uma duvida Aqui: "a variável que armazenará a frase toda deve receber a junção das outras três variáveis."

 

Como é que faço para juntar as 3 variáveis??? Não consigo ver nada http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que percebi a ideia Claudio tira-me só uma duvida Aqui: "a variável que armazenará a frase toda deve receber a junção das outras três variáveis."

 

Como é que faço para juntar as 3 variáveis??? Não consigo ver nada http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

Isso mesmo, ela irá receber a junção das três.

 

Para juntá-las, é só fazer assim:

 

varFinal = varNumero & varMaiuscula & varMinuscula.

 

Só lembre-se de declarar todas como string, inclusive a que irá receber os números.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio valeu pela ajuda muito obrigado http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

 

O programa ja está a funcionar http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

 

És um mestre em vb http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

 

Abraço

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.