Jump to content
darkangel_13

repetição de uma letra

Recommended Posts

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 ?

Edited by darkangel_13

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 ++ ?

Share this post


Link to post
Share on other sites
HappyHippyHippo

estás a fazer um ciclo que itera as palavras, o que o if faz com o índice da palavra ?


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

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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]
}

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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]);

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
HappyHippyHippo

conta o número de "o"'s na frase que te dei e o número de resultados dados = 23

porque será ?


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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.