Jump to content

[PASCAL] contar numero de letras.


visk0nde

Recommended Posts

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

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

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

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

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.