visk0nde Posted June 14, 2006 at 09:00 PM Report Share #33020 Posted June 14, 2006 at 09:00 PM Crie uma aplicação em PASCAL que conte o número de ocorrências de letras do alfabeto num ficheiro de texto.no final, o programa terá de dar os dados estatisticos relativamente ao número de a(s), b(s), c(s), ok o programa no final, deve receber o nome dum ficheiro de texto, e dizer separadamente o numero de A's o numero de B's etc. e pa fazer isso em um procedimento ou funcao numa unidade a parte, mas nao queria tar a usar 26 variaveis nem 26 IF's ou assim.. sabem s da pa simplifcar isso usando vectores ou assim? cumps Link to comment Share on other sites More sharing options...
maiden Posted June 14, 2006 at 10:31 PM Report Share #33032 Posted June 14, 2006 at 10:31 PM Boas, Antes de mais, bem vindo ao fórum. Podes fazer algo do tipo: Lês o conteúdo de uma linha do ficheiro para uma string: while not eof(ficheiro) do begin readln(ficheiro,string); {Para fazer a leitura da linha do ficheiro para uma string} ilen:=length(string); {Tens uma variavel do tipo inteiro com o tamanho da string} for i:=1 to ilen do begin stemp:=string[i]; case stemp of 'a','A': iA:=iA+1; {Faz a contagem do número de letras deste tipo} 'b','B': iB:=iB+1; ... 'z','Z': iZ:=iZ+1; end; end; Acho que não tem qualquer problema em fazeres isto com um array, mas depois vais ter de fazer algo do género: writeln('A - ',array[1]); writeln('B',array[2]); [EDIT]Lembrei-me de uma cena que é capaz de te dar jeito, se utilizares o array, em vez de estares a escrever as letras todas do abecedário podes fazer tipo isto: var c:char; i:=1; for c:='A' to 'Z' do begin writeln(c,array[i]); i:=i+1; end; [/EDIT] Espero ter ajudado. Cumps, Link to comment Share on other sites More sharing options...
visk0nde Posted June 15, 2006 at 12:29 AM Author Report Share #33042 Posted June 15, 2006 at 12:29 AM desde ja obrigado 😛 quanto a primeira opcao, eu tava mesmo era a perguntar s nao havia um metodo para evitar ter d fazer um CASE com 26 opcoes... mas s nao conseguir de outro metodo la vai ser assim 😛 quanto ao FOR eu tinha pensado nisso, mas pensava q o for so dava para limites numericos tipo 1 ate 9, e nao reconhecia letras...:o dps amanha vou tentar dessa forma 🙂 cumpts e obrigado 😉 Link to comment Share on other sites More sharing options...
Steiger!! Posted June 15, 2006 at 11:35 PM Report Share #33208 Posted June 15, 2006 at 11:35 PM ja agora podiam dar uma solução para fazer um programa que use esta função e diga entao as letras listadamente? Obg Link to comment Share on other sites More sharing options...
ReXatoZ Posted June 16, 2006 at 12:12 AM Report Share #33210 Posted June 16, 2006 at 12:12 AM Oi, vou deixar aki a minha proposta sem ter k usar 26 cases ou 26 indeces de array: procedure contagem; var i,j,cont:byte; begin for i:='A' to 'Z' do begin cont:=0; for j:=1 to length(frase) do begin if (upcase(frase[j])=i) then cont:=cont+1; end; append(fich); writeln(fich,i,': ',cont); close(fich); end; end; NOTA: frase - variável string / fich - identificador do ficheiro de texto Isto é apenas o procedimento para a contagem das letras e sua listagem no ficheiro de texto, o resto e fácil. Digo já k não acabei o programa todo, por isso não sei se o procedimento funciona correctamente e tbm não sei se a instrução append está feita correctamente. Depois digam cm correu. Link to comment Share on other sites More sharing options...
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