Guest darkangel_13 Posted February 17, 2013 at 11:22 AM Report #495775 Posted February 17, 2013 at 11:22 AM 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
HappyHippyHippo Posted February 17, 2013 at 11:25 AM Report #495776 Posted February 17, 2013 at 11:25 AM 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 Portugol Plus
pmg Posted February 17, 2013 at 11:29 AM Report #495777 Posted February 17, 2013 at 11:29 AM 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!
HappyHippyHippo Posted February 17, 2013 at 11:42 AM Report #495778 Posted February 17, 2013 at 11:42 AM 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 Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 11:47 AM Report #495781 Posted February 17, 2013 at 11:47 AM (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 February 17, 2013 at 11:54 AM by darkangel_13
HappyHippyHippo Posted February 17, 2013 at 11:50 AM Report #495782 Posted February 17, 2013 at 11:50 AM 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 Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 11:58 AM Report #495788 Posted February 17, 2013 at 11:58 AM 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 ++ ?
HappyHippyHippo Posted February 17, 2013 at 12:00 PM Report #495791 Posted February 17, 2013 at 12:00 PM 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 Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 12:03 PM Report #495793 Posted February 17, 2013 at 12:03 PM 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 ?
HappyHippyHippo Posted February 17, 2013 at 12:11 PM Report #495795 Posted February 17, 2013 at 12:11 PM exacto IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 12:13 PM Report #495796 Posted February 17, 2013 at 12:13 PM mas mesmo assim não consigo fazer a condição para guardar o numero de vezes de forma correcta
HappyHippyHippo Posted February 17, 2013 at 12:17 PM Report #495797 Posted February 17, 2013 at 12:17 PM 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 Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 12:28 PM Report #495798 Posted February 17, 2013 at 12:28 PM 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 ?
HappyHippyHippo Posted February 17, 2013 at 12:52 PM Report #495800 Posted February 17, 2013 at 12:52 PM 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 Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 01:01 PM Report #495802 Posted February 17, 2013 at 01:01 PM 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] }
HappyHippyHippo Posted February 17, 2013 at 01:44 PM Report #495808 Posted February 17, 2013 at 01:44 PM 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 Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 01:49 PM Report #495810 Posted February 17, 2013 at 01:49 PM 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?
HappyHippyHippo Posted February 17, 2013 at 02:39 PM Report #495815 Posted February 17, 2013 at 02:39 PM 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 Portugol Plus
Guest darkangel_13 Posted February 17, 2013 at 04:22 PM Report #495832 Posted February 17, 2013 at 04:22 PM 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]);
HappyHippyHippo Posted February 17, 2013 at 04:31 PM Report #495834 Posted February 17, 2013 at 04:31 PM 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 Portugol Plus
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now