Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

riqu3s

Remover caracteres que não sejam letras e espaços

Mensagens Recomendadas

riqu3s    0
riqu3s

Boas pessoal, tenho o seguinte problema: 

Citação

Desenvolva um programa que leia uma frase introduzida pelo utilizador e lhe retire todos os caracteres que não sejam letras nem espaços. No final o programa deverá mostrar a frase atualizada. Exemplos de execução:

Introduza uma frase: 0p.rogra5%mac9ao1./4

Frase com apenas letras e espacos: programacao

Queria que me ajudassem a tentar descobrir como é que removo os tais caracteres da string

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
riqu3s    0
riqu3s
21 horas atrás, HappyHippyHippo disse:

o problema é "remover" ou detectar ?

o problema é remover os caracteres que não interessam, mostrando só a palavra programação sem o "lixo"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    310
Rui Carlos

Para remover o caracter numa posição de uma string, podes simplesmente ir a cada um dos caracteres seguintes, e movê-los um posição para trás.  Deverás fazer isto do início para o fim, e deverás copiar também o \0 final.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1134
HappyHippyHippo

O problema é só ler a frase e apresentar o resultado? Não existe a necessidade de guardar a frase tanto na memória inicial ou numa secundária, certo? 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    310
Rui Carlos
11 minutos atrás, HappyHippyHippo disse:

O problema é só ler a frase e apresentar o resultado? Não existe a necessidade de guardar a frase tanto na memória inicial ou numa secundária, certo? 

Tendo em conta o enunciado, diria que há.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1134
HappyHippyHippo
3 minutes ago, Rui Carlos said:

Tendo em conta o enunciado, diria que há.

Pelo contrário... Pelo enunciado que apresentaste, só necessitas de guardar o que o utilizador escreveu e fazer o parse directo para a consola. Tens a certeza que o que escreveste é exactamente o que tens no enunciado? 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
riqu3s    0
riqu3s
14 minutos atrás, HappyHippyHippo disse:

Pelo contrário... Pelo enunciado que apresentaste, só necessitas de guardar o que o utilizador escreveu e fazer o parse directo para a consola. Tens a certeza que o que escreveste é exactamente o que tens no enunciado? 

Sim tudo aquilo que está no enunciado é aquilo que apareceu num exame

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    310
Rui Carlos
16 minutos atrás, HappyHippyHippo disse:

Pelo contrário... Pelo enunciado que apresentaste, só necessitas de guardar o que o utilizador escreveu e fazer o parse directo para a consola. Tens a certeza que o que escreveste é exactamente o que tens no enunciado? 

O enunciado fala em remover os caracteres, e depois ("no final") em mostrar o resultado.  Por isso diria que ignorar os caracteres ao imprimir não faz o que se pede no enunciado.

Para mim uma solução num teste que não apresentasse um procedimento dedicado a remover os caracteres não teria a cotação toda.  Uma solução que só removesse na impressão provavelmente não teria metade, por muito inteligente que a solução seja.  Por vezes os enunciados nem são suficientemente específicos para permitir descartar soluções menos "completas", mas acho que nem é o caso.  (Mas isto sou eu, que não acho que os alunos deviam desde cedo aprender a separar computação da interacção com o utilizador.)

Em todo o caso, diria que "guardar o que o utilizador escreveu" já implica guardar a frase em memória, não?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
riqu3s    0
riqu3s
2 horas atrás, Rui Carlos disse:

O enunciado fala em remover os caracteres, e depois ("no final") em mostrar o resultado.  Por isso diria que ignorar os caracteres ao imprimir não faz o que se pede no enunciado.

Para mim uma solução num teste que não apresentasse um procedimento dedicado a remover os caracteres não teria a cotação toda.  Uma solução que só removesse na impressão provavelmente não teria metade, por muito inteligente que a solução seja.  Por vezes os enunciados nem são suficientemente específicos para permitir descartar soluções menos "completas", mas acho que nem é o caso.  (Mas isto sou eu, que não acho que os alunos deviam desde cedo aprender a separar computação da interacção com o utilizador.)

Em todo o caso, diria que "guardar o que o utilizador escreveu" já implica guardar a frase em memória, não?

Outro exemplo de outro exercício que achei parecido com este: 

Desenvolva um programa que leia uma frase e uma palavra introduzidas pelo utilizador, e apresente a frase introduzida sem a primeira ocorrência da palavra, caso exista. Uma frase é um conjunto de palavras separadas por um ou mais espaços. O programa deve ser indiferente a letras minúsculas ou maiúsculas.

Exemplo de execução 1:

Frase: Todos˽juntos˽por˽uma˽causa

Palavra: juntos Resultado: Todos˽˽por˽uma˽causa

 

Exemplo de execução 2:

Frase: Sorrir˽ou˽não˽sorrir!

Palavra: sorrir Resultado: ˽ou˽não˽sorrir!

 

 

O caracter ‘˽’ presente nos exemplos de execução representa um espaço em branco

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    310
Rui Carlos

Antes de passares para outro exercício, já conseguiste resolver o anterior?

O @HappyHippyHippo são sugeriu uma solução simples para o problema (que não é propriamente a que eu recomendaria :D), e também já te indiquei o algoritmo naive para remover caracteres de uma string.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
riqu3s    0
riqu3s
50 minutos atrás, Rui Carlos disse:

Antes de passares para outro exercício, já conseguiste resolver o anterior?

O @HappyHippyHippo são sugeriu uma solução simples para o problema (que não é propriamente a que eu recomendaria :D), e também já te indiquei o algoritmo naive para remover caracteres de uma string.

Ainda não sou um pro nisto, nem perto disso xD, será que podias explicar de uma forma mais simples esse tal algoritmo "naive"?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.