visk0nde Posted June 14, 2006 at 09:00 PM Report #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
maiden Posted June 14, 2006 at 10:31 PM Report #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,
visk0nde Posted June 15, 2006 at 12:29 AM Author Report #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 😉
Steiger!! Posted June 15, 2006 at 11:35 PM Report #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
ReXatoZ Posted June 16, 2006 at 12:12 AM Report #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.
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