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

darkangel_13

repetição de uma letra

Mensagens Recomendadas

darkangel_13

Bom dia estou aqui a "inventar" um programa em que basicamente consiste em saber o numero de palavras a partir de um texto em que uma letra se repete x vezes e mostrar esse input. Exemplo:

Input:

Eu gosto de ir almoçar fora.

input:

letra o

Output:

0 vezes : 3

1 vez: 2

2 vezes: 1

3 vezes:0

5+ vezes:0

Estou a tentar fazer só que não consigo perceber como é que eu vou fazer essa verificação..

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

primeiro tens de dividir a frase em palavras

depois tens de verificar para cada letra, se essa existe em cada uma das palavras e se existir incrementa um contador qualquer


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

primeiro tens de dividir a frase em palavras

depois tens de verificar para cada letra ...

Acho mais eficiente ir separando a frase em palavras e contando as letras ao mesmo tempo, cam apenas uma passagem pelo texto :)


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

sim, é mais eficiente, mas em java, para separar uma frase em palavras, é somente com uma instrução, o que simplifica o código.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

Obrigado pelas respostas já estive a tentar fazer um esboço a partir das respostas..

String ficheiro ="ficheiro.txt";
int vector []=new int [5];
char c='o';
String s;
String[] vect;
int contador=0;
BufferedReader br = new BufferedReader( new FileReader(ficheiro) );
while(s=br.readLine()) != null)
vect[]=s.split(" ");
for(int i =0;i<vect.length;i++){
 if(vect[i].charAt(i)==c){
 contador++;
 vector[i]==contador;
 }
}
System.out.println("0 vezes " + vector[0]+"1 vez " + vector[1]+"2 vezes " + vector[2] + "3 vezes " + vector[3] + "4 vezes " + vector[4] +"5 vezes " + vector[5]
}

Será isto ?

Editado por darkangel_13

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

estás a ir pelo caminho certo, no entanto vector não faz sentido, o output muito menos, e pensa bem no que o ciclo está a fazer


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

Pois o meu ciclo for está errado pois o output não corresponde, como é que eu faria a condição ? já estive a pensar e se eu fizesse if(vect[i].charAt(i)!=c){ iria estar sempre essa condição a ser executada teria que ser algo do genero if( i=0 && vect.charAt(i)!=c) contador ++ ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

ou seja tenho de criar um ciclo for dentro desse ciclo para poder ver cada caracter da string que está na posição vect certo ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

pensa um bocado ... a solução está à tua frente

o mais difícil já te foi dito

questiona-te : porque é que o código que tens não conta correctamente ? o que estás a contar ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

String ficheiro ="ficheiro.txt";
int vector []=new int [5];
char c='o';
String s;
String[] vect;
int contador=0;
BufferedReader br = new BufferedReader( new FileReader(ficheiro) );
while(s=br.readLine()) != null)
vect[]=s.split(" ");
for(int i =0;i<vect.length;i++){
for(int j=0;j<vect[i].length;j++){
   if(i=0 && vect[i].charAt(j)!=c){
 contador++;
   vector[i]==contador;
 if else(i=1 && vect[i].charAt(j)==c ){
  contador++;
	 .....
 }
}
System.out.println("0 vezes " + vector[0]+"1 vez " + vector[1]+"2 vezes " + vector[2] + "3 vezes " + vector[3] + "4 vezes " + vector[4] +"5 vezes " + vector[5]
}
}

Estou a tentar pensar mas qualquer condiçao que eu faça vai aplicar a letras como é que eu faria uma condição que contasse apenas um indice ou seja , que na posição vect apenas o carater c estivesse numa só posição ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

ok ... já percebeste que necessitas de iterar as palavras e em cada palavra necessitas de iterar cada letra da palavra

a única coisa de que se aproveita do teu código é a separação da frase em palavras e os dois ciclos for

agora volta a ler o meu post inicial:

primeiro tens de dividir a frase em palavras

depois tens de verificar para cada letra, se essa existe em cada uma das palavras e se existir incrementa um contador qualquer

o fundamental é ler


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

Obrigado pela resposta !!

String ficheiro ="ficheiro.txt";
int vector []=new int [5];
char c='o';
String s;
String[] vect;
int contletra=0;
BufferedReader br = new BufferedReader( new FileReader(ficheiro) );
while(s=br.readLine()) != null)
vect[]=s.split(" ");
for(int i =0;i<vect.length;i++){
for(int j=0;j<vect[i].length;j++){
 if(vect[i].charAt(j)==c )
  contletra++;
 vect[contletra]+=1;
 }
}
System.out.println("0 vezes " + vector[0]+"1 vez " + vector[1]+"2 vezes " + vector[2] + "3 vezes " + vector[3] + "4 vezes " + vector[4] +"5 vezes " + vector[5]
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

mete aqui o output disso para a frase do teu post inicial : "Eu gosto de ir almoçar fora"

(e depois pensa no resultado apresentado)


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

Eu gosto de ir almoçar fora.

input:

letra o

Output:

0 vezes : 3

1 vez: 2

2 vezes: 1

3 vezes:0

5+ vezes:0

apenas tenho que meter a condição caso seja 5 ou mais de 5 ,porque não vai funcionar ? podes-me dar uma dica sfv?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

1º - o output não é esse, quanto muito será:

0 vezes : 31 vez: 22 vezes: 13 vezes:05+ vezes:0

2º - não existe input nenhum

3º - se o output é esse, é porque não vem do código apresentado


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

já tive a testar e não dá mesmo nada, até estive a meter outra condição não consigo mesmo..

String ficheiro ="Eu gosto de almocar ao domingo";
int vector []={0,0,0,0,0,0};
char c='o';
String s;
int contletra=0;
//BufferedReader br = new BufferedReader( new FileReader(ficheiro) );
//while(s=br.readLine()) != null){
String vect[]=ficheiro.split(" ");
for(int i =0;i<vect.length;i++){
 for(int j=0;j<vect[i].length();j++){
 if(vect[i].charAt(j)==c ){
  contletra++;
   if(contletra>=5)
 vect[5]+=1;
   else
  vect[contletra]+=1;
  }
 }
}
//}
System.out.println("0 vezes :" + vector[0]+"\n1 vez :" + vector[1]+"\n2 vezes :" + vector[2] + "\n3 vezes :" + vector[3] + "\n4 vezes :" + vector[4] +"\n5 vezes :" + vector[5]);

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

deixa adivinhar ... dá tudo zeros ...

onde estás tu a actualizar os valores da variável vector ?

isto para não falar de que o código certamente não dá um resultado correcto


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

dá tudo 0's já vi essa parte , já alterei e já está a actualizar

String ficheiro ="Eu gosto de almocar ao domingo";
int vector []={0,0,0,0,0,0};
char c='o';
String s;
int contletra=0;
//BufferedReader br = new BufferedReader( new FileReader(ficheiro) );
//while(s=br.readLine()) != null){
String vect[]=ficheiro.split(" ");
for(int i =0;i<vect.length;i++){
 for(int j=0;j<vect[i].length();j++){
 if(vect[i].charAt(j)==c ){
  contletra++;
   if(contletra>=5)
 vector[5]+=1;
   else
  vector[contletra]+=1;
  }
 }
}
//}
System.out.println("0 vezes :" + vector[0]+"\n1 vez :" + vector[1]+"\n2 vezes :" + vector[2] + "\n3 vezes :" + vector[3] + "\n4 vezes :" + vector[4] +"\n5 vezes :" + vector[5]);
}

Mas da-me o output incorrecto

0 vezes :0
1 vez :1
2 vezes :1
3 vezes :1
4 vezes :1
5 vezes :2

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

experimenta esta frase : "oo oooo oo oooooo oo o o ooooo"

que output seria e que output tens ?

não respondas a mim, porque a resposta às duas questões eu sei, pensa porque razão é que o resultado é:

0 vezes :0

1 vez :1

2 vezes :1

3 vezes :1

4 vezes :1

5 vezes :19


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

está a contar todos, mas eu não consigo perceber porque conta dessa maneira, não consigo perceber onde estou a errar no codigo

Partilhar esta mensagem


Ligação 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.