Jump to content

repetição de uma letra


Recommended Posts

Posted

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

  • Replies 40
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted

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!

Posted (edited)

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
Posted

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 ++ ?

Posted

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 ?

Posted

mas mesmo assim não consigo fazer a condição para guardar o numero de vezes de forma correcta

Posted
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 ?

Posted

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
Posted

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]
}
Posted

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?

Posted

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]);

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.