Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
igor3m

Duvida com programa

Recommended Posts

Opa pessoal,

estou fazendo um programa que precisa informar ao usuario atraves de um histograma a quantidade de letras de A até Z presentes no texto que será informado...

preciso saber se existe algum comando semelhante ao Para-faça (for to do) que conte letras de A até Z

tentei usar uma string do alfabeto mas nao consigo contar com isso

function Contas (x,tamanhotexto:integer):integer;

var

alfa:string;

frase:string[255];

i,j:integer;

begin

alfa:=('abcdefghijklmnopqrstuvwxyz');

For i:=1 to tamanhotexto do

begin

For j:=alfa[1] to alfa[26] do begin //isso não é possivel

If (Frase=Alfa[j]) then

x:=x+1;

end;

end;

Onde a variavel X é referente ao grupo de letras que vai ser contado, A, B, D e assim por diante..

Desde já agradeço!

Editado por igor3m
editei pois as duvidas sao para solucionar um problema que tive com um trabalho da faculdade... como o programa nao pode ficar parecido com dos meus colegas de classe, estou alterando o titulo para na

Compartilhar este post


Link para o post
Compartilhar em outros sites


For j:=alfa[1] to alfa[26] do

Mas isso é:


For j:='a' to 'z' do

Sabendo isso tente resolver seu problema. Qualquer dúvida posta aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa pessoal,

estou fazendo um programa que precisa informar ao usuario atraves de um histograma a quantidade de letras de A até Z presentes no texto que será informado...

preciso saber se existe algum comando semelhante ao Para-faça (for to do) que conte letras de A até Z

tentei usar uma string do alfabeto mas nao consigo contar com isso

function Contas (x,tamanhotexto:integer):integer;

var

alfa:string;

frase:string[255];

i,j:integer;

begin

alfa:=('abcdefghijklmnopqrstuvwxyz');

For i:=1 to tamanhotexto do

begin

For j:=alfa[1] to alfa[26] do begin //isso não é possivel

If (Frase=Alfa[j]) then

x:=x+1;

end;

end;

Onde a variavel X é referente ao grupo de letras que vai ser contado, A, B, D e assim por diante..

Desde já agradeço!


For j:=alfa[1] to alfa[26] do

Mas isso é:


For j:='a' to 'z' do

Sabendo isso tente resolver seu problema. Qualquer dúvida posta aí.

Olá,

Infelizmente o for não aceita char (caracteres), somente valores numéricos inteiros! (pelo menos no meu compilador)

Mas você pode usar uma estrutura numérica para percorrer os valores de <alfa>, Ex.:

(eu usei <letras> em vez de <alfa>)

[color=#0000ff]const[/color]
letras [color=#000000]=[/color][color=#a31515]'ABCDEFGHILMNOPQRSTUVWXYZ'[/color][color=#000000];[/color]
[color=#000000]...[/color]
[color=#2b91af]for[/color] j[color=#000000]:=[/color][color=#000000]1[/color] [color=#2b91af]to[/color] [color=#000000]Length[/color][color=#000000]([/color]letras[color=#000000])[/color] [color=#2b91af]do[/color]
[color=#2b91af]if[/color] [color=#000000]([/color][color=#000000]UpCase[/color][color=#000000]([/color]texto[color=#000000][[/color]i[color=#000000]]))=([/color][color=#000000]UpCase[/color][color=#000000]([/color]letras[color=#000000][[/color]j[color=#000000]]))[/color] [color=#2b91af]then[/color]
cont[color=#000000]:=[/color]cont[color=#000000]+[/color][color=#000000]1[/color][color=#000000];[/color]

Abaixo um exemplo mais completo

[color=#0000ff]PROGRAM[/color] testeContador[color=#000000];[/color]
[color=#0000ff]uses[/color]
CRT[color=#000000];[/color]
[color=#0000ff]function[/color] [color=#000000]Contas[/color] [color=#000000]([/color]texto [color=#000000]:[/color][color=#0000ff]string[/color][color=#000000]):[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]const[/color]
letras [color=#000000]=[/color][color=#a31515]'ABCDEFGHILMNOPQRSTUVWXYZ'[/color][color=#000000];[/color]
[color=#0000ff]var[/color]
i[color=#000000],[/color]
j [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
cont [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]begin[/color]
cont[color=#000000]:=[/color][color=#000000]0[/color][color=#000000];[/color] [color=#008000]//zera o contador de letras[/color]
[color=#2b91af]for[/color] i[color=#000000]:=[/color][color=#000000]1[/color] [color=#2b91af]to[/color] [color=#000000]Length[/color][color=#000000]([/color]texto[color=#000000])[/color] [color=#2b91af]do[/color]
[color=#0000ff]begin[/color]
[color=#2b91af]for[/color] j[color=#000000]:=[/color][color=#000000]1[/color] [color=#2b91af]to[/color] [color=#000000]Length[/color][color=#000000]([/color]letras[color=#000000])[/color] [color=#2b91af]do[/color]
[color=#2b91af]if[/color] [color=#000000]([/color][color=#000000]UpCase[/color][color=#000000]([/color]texto[color=#000000][[/color]i[color=#000000]]))=([/color][color=#000000]UpCase[/color][color=#000000]([/color]letras[color=#000000][[/color]j[color=#000000]]))[/color] [color=#2b91af]then[/color]
cont[color=#000000]:=[/color]cont[color=#000000]+[/color][color=#000000]1[/color][color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
Contas[color=#000000]:=[/color]cont[color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]

[color=#0000ff]var[/color]
frase [color=#000000]:[/color][color=#0000ff]string[/color][color=#000000];[/color]
[color=#0000ff]BEGIN[/color]
[color=#000000]writeln[/color][color=#000000]([/color][color=#a31515]'Programa que informa a quantidade de letras de A ate Z'[/color][color=#000000]);[/color]
frase[color=#000000]:=[/color][color=#a31515]'Forum do Clube do Hardware - Pascal/Delphi'[/color][color=#000000];[/color]
[color=#000000]writeln[/color][color=#000000]([/color][color=#a31515]'FRASE : '[/color][color=#000000],[/color]frase[color=#000000]);[/color]
[color=#000000]writeln[/color][color=#000000]([/color][color=#a31515]'Quantidade de letras : '[/color][color=#000000],[/color][color=#000000]Contas[/color][color=#000000]([/color]frase[color=#000000]));[/color]
ReadKey[color=#000000];[/color] [color=#008000]//pause antes de fechar[/color]
[color=#0000ff]END[/color][color=#000000].[/color]

Existem outra formas, por exemplo:

Usando o recurso "in", veja:

[color=#0000ff]function[/color] [color=#000000]Contas[/color] [color=#000000]([/color]texto [color=#000000]:[/color][color=#0000ff]string[/color][color=#000000]):[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]var[/color]
i[color=#000000],[/color]
j [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
cont [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]begin[/color]
cont[color=#000000]:=[/color][color=#000000]0[/color][color=#000000];[/color] [color=#008000]//zera o contador de letras[/color]
[color=#2b91af]for[/color] i[color=#000000]:=[/color][color=#000000]1[/color] [color=#2b91af]to[/color] [color=#000000]Length[/color][color=#000000]([/color]texto[color=#000000])[/color] [color=#2b91af]do[/color]
[color=#0000ff]begin[/color]
[color=#2b91af]if[/color] [color=#000000]([/color][color=#000000]UpCase[/color][color=#000000]([/color]texto[color=#000000][[/color]i[color=#000000]]))[/color] [color=#0000ff]in[/color] [color=#000000][[/color][color=#a31515]'A'[/color][color=#000000],[/color][color=#a31515]'B'[/color][color=#000000],[/color][color=#a31515]'C'[/color][color=#000000],[/color][color=#a31515]'D'[/color][color=#000000],[/color][color=#a31515]'E'[/color][color=#000000],[/color][color=#a31515]'F'[/color][color=#000000],[/color][color=#a31515]'G'[/color][color=#000000],[/color][color=#a31515]'H'[/color][color=#000000],[/color][color=#a31515]'I'[/color][color=#000000],[/color][color=#a31515]'L'[/color][color=#000000],[/color][color=#a31515]'M'[/color][color=#000000],[/color][color=#a31515]'N'[/color][color=#000000],[/color][color=#a31515]'O'[/color][color=#000000],[/color][color=#a31515]'P'[/color][color=#000000],[/color][color=#a31515]'Q'[/color][color=#000000],[/color][color=#a31515]'R'[/color][color=#000000],[/color][color=#a31515]'S'[/color][color=#000000],[/color][color=#a31515]'T'[/color][color=#000000],[/color][color=#a31515]'U'[/color][color=#000000],[/color][color=#a31515]'V'[/color][color=#000000],[/color][color=#a31515]'W'[/color][color=#000000],[/color][color=#a31515]'X'[/color][color=#000000],[/color][color=#a31515]'Y'[/color][color=#000000],[/color][color=#a31515]'Z'[/color][color=#000000]][/color] [color=#2b91af]then[/color]
cont[color=#000000]:=[/color]cont[color=#000000]+[/color][color=#000000]1[/color][color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
Contas[color=#000000]:=[/color]cont[color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]

ou reduzido

[color=#0000ff]function[/color] [color=#000000]Contas[/color] [color=#000000]([/color]texto [color=#000000]:[/color][color=#0000ff]string[/color][color=#000000]):[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]var[/color]
i[color=#000000],[/color]
j [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
cont [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]begin[/color]
cont[color=#000000]:=[/color][color=#000000]0[/color][color=#000000];[/color] [color=#008000]//zera o contador de letras[/color]
[color=#2b91af]for[/color] i[color=#000000]:=[/color][color=#000000]1[/color] [color=#2b91af]to[/color] [color=#000000]Length[/color][color=#000000]([/color]texto[color=#000000])[/color] [color=#2b91af]do[/color]
[color=#0000ff]begin[/color]
[color=#2b91af]if[/color] [color=#000000]([/color][color=#000000]UpCase[/color][color=#000000]([/color]texto[color=#000000][[/color]i[color=#000000]]))[/color] [color=#0000ff]in[/color] [color=#000000][[/color][color=#a31515]'A'[/color][color=#000000]..[/color][color=#a31515]'Z'[/color][color=#000000]][/color] [color=#2b91af]then[/color]
cont[color=#000000]:=[/color]cont[color=#000000]+[/color][color=#000000]1[/color][color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
Contas[color=#000000]:=[/color]cont[color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]

Daria também para fazer usando a tabela ASCII

Por ai vai

No aguardo

Abraços

Editado por Simon Viegas
Tirar uma "," gaiata que apareceu do nada!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá,

Infelizmente o for não aceita char (caracteres), somente valores numéricos inteiros! (pelo menos no meu compilador)

Aqui o FPC 2.4.0 aceitou! De acordo com o livro Programando com Pascal (pág. 53), o for aceita integer, char e boolean.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Aqui o FPC 2.4.0 aceitou! De acordo com o livro Programando com Pascal (pág. 53), o for aceita integer, char e boolean.

Olá,

Tem toda razão, :rolleyes:. Eu que viajei na maionese total!!!!!!!!!!!!!

Funciona sim, basta declarar a variável de controle com o tipo correspondente. Ai no caso já existe pelo menos mais uma possibilidade.

[color=#0000ff]PROGRAM[/color] testeContador[color=#000000];[/color]
[color=#0000ff]uses[/color]
CRT[color=#000000];[/color]
[color=#0000ff]function[/color] [color=#000000]Contas[/color] [color=#000000]([/color]texto [color=#000000]:[/color][color=#0000ff]string[/color][color=#000000]):[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]var[/color]
i [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
j [color=#000000]:[/color][color=#0000ff]char[/color][color=#000000];[/color]
cont [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]begin[/color]
cont[color=#000000]:=[/color][color=#000000]0[/color][color=#000000];[/color] [color=#008000]//zera o contador de letras[/color]
[color=#2b91af]for[/color] i[color=#000000]:=[/color][color=#000000]1[/color] [color=#2b91af]to[/color] [color=#000000]Length[/color][color=#000000]([/color]texto[color=#000000])[/color] [color=#2b91af]do[/color]
[color=#0000ff]begin[/color]
[color=#2b91af]for[/color] j[color=#000000]:=[/color][color=#a31515]'A'[/color] [color=#2b91af]to[/color] [color=#a31515]'Z'[/color] [color=#2b91af]do[/color]
[color=#2b91af]if[/color] [color=#000000]UpCase[/color][color=#000000]([/color]texto[color=#000000][[/color]i[color=#000000]]) =[/color] j [color=#2b91af]then[/color]
cont[color=#000000]:=[/color]cont[color=#000000]+[/color][color=#000000]1[/color][color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
Contas[color=#000000]:=[/color]cont[color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]

[color=#0000ff]var[/color]
frase [color=#000000]:[/color][color=#0000ff]string[/color][color=#000000];[/color]

[color=#0000ff]BEGIN[/color]
[color=#000000]writeln[/color][color=#000000]([/color][color=#a31515]'Programa que informa a quantidade de letras de A ate Z'[/color][color=#000000]);[/color]
frase[color=#000000]:=[/color][color=#a31515]'Forum do Clube do Hardware - Pascal/Delphi'[/color][color=#000000];[/color]
[color=#000000]writeln[/color][color=#000000]([/color][color=#a31515]'FRASE : '[/color][color=#000000],[/color]frase[color=#000000]);[/color]
[color=#000000]writeln[/color][color=#000000]([/color][color=#a31515]'Quantidade de letras : '[/color][color=#000000],[/color][color=#000000]Contas[/color][color=#000000]([/color]frase[color=#000000]));[/color]
ReadKey[color=#000000];[/color] [color=#008000]//pause antes de fechar[/color]
[color=#0000ff]END[/color][color=#000000].[/color]

PS: Valeu pela dica viniciusbmatos, eu até lembrava que tinha usado char, mas como fiz o teste (errado) eu acabei me passando.

PS2: igor3m e geloh, no caso o que falta é justamente declarar a variável de controle do for com o tipo (type) correspondente.

Abaixo mais um exemplo:

[color=#0000ff]function[/color] [color=#000000]Contas[/color] [color=#000000]([/color]texto [color=#000000]:[/color][color=#0000ff]string[/color][color=#000000]):[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]var[/color]
i [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
j [color=#000000]:[/color][color=#a31515]'A'[/color][color=#000000]..[/color][color=#a31515]'Z'[/color][color=#000000];[/color] [color=#008000]//declaração de um tipo "criado" pelo programador[/color]
cont [color=#000000]:[/color][color=#0000ff]byte[/color][color=#000000];[/color]
[color=#0000ff]begin[/color]
cont[color=#000000]:=[/color][color=#000000]0[/color][color=#000000];[/color] [color=#008000]//zera o contador de letras[/color]
[color=#2b91af]for[/color] i[color=#000000]:=[/color][color=#000000]1[/color] [color=#2b91af]to[/color] [color=#000000]Length[/color][color=#000000]([/color]texto[color=#000000])[/color] [color=#2b91af]do[/color]
[color=#0000ff]begin[/color]
[color=#2b91af]for[/color] j[color=#000000]:=[/color][color=#a31515]'A'[/color] [color=#2b91af]to[/color] [color=#a31515]'Z'[/color] [color=#2b91af]do[/color]
[color=#2b91af]if[/color] [color=#000000]UpCase[/color][color=#000000]([/color]texto[color=#000000][[/color]i[color=#000000]]) =[/color] j [color=#2b91af]then[/color]
cont[color=#000000]:=[/color]cont[color=#000000]+[/color][color=#000000]1[/color][color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
Contas[color=#000000]:=[/color]cont[color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

É possível também contar o número de ocorrências de cada letra. O enunciado não deixou claro se isso é necessário.

[COLOR=#000000][B]program[/B][/COLOR] testando[COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]uses[/B][/COLOR]
crt[COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]type[/B][/COLOR]
t_vetor [COLOR=#a52a2a][B]=[/B][/COLOR] [COLOR=#000000][B]array[/B][/COLOR][COLOR=#a52a2a][B][[/B][/COLOR][COLOR=#ff4500]'a'[/COLOR][COLOR=#a52a2a][B]..[/B][/COLOR][COLOR=#ff4500]'z'[/COLOR][COLOR=#a52a2a][B]][/B][/COLOR] [COLOR=#000000][B]of[/B][/COLOR] [COLOR=#0000cd][B]integer[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]var[/B][/COLOR]
texto[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#000000][B]string[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
qtd[COLOR=#a52a2a][B]:[/B][/COLOR] t_vetor[COLOR=#a52a2a][B];[/B][/COLOR]
k[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#0000cd][B]char[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
total[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#0000cd][B]integer[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#4682b4][I]{ função para contar }[/I][/COLOR]
[COLOR=#000000][B]function[/B][/COLOR] [COLOR=#228b22]contar[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]entr_texto[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#000000][B]string[/B][/COLOR][COLOR=#a52a2a][B]):[/B][/COLOR] t_vetor[COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]var[/B][/COLOR]
cont[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#0000cd][B]integer[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
let[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#0000cd][B]char[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]begin[/B][/COLOR]
[COLOR=#4682b4][I]{ zerar }[/I][/COLOR]
[COLOR=#228b22]for[/COLOR] let [COLOR=#a52a2a][B]:=[/B][/COLOR] [COLOR=#ff4500]'a'[/COLOR] [COLOR=#228b22]to[/COLOR] [COLOR=#ff4500]'z'[/COLOR] [COLOR=#228b22]do[/COLOR]
contar[COLOR=#a52a2a][B][[/B][/COLOR]let[COLOR=#a52a2a][B]] :=[/B][/COLOR] [COLOR=#000000]0[/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#4682b4][I]{ contar }[/I][/COLOR]
[COLOR=#228b22]for[/COLOR] cont [COLOR=#a52a2a][B]:=[/B][/COLOR] [COLOR=#000000]1[/COLOR] [COLOR=#228b22]to[/COLOR] [COLOR=#228b22]length[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]entr_texto[COLOR=#a52a2a][B])[/B][/COLOR] [COLOR=#228b22]do[/COLOR]
[COLOR=#000000][B]case[/B][/COLOR] entr_texto[COLOR=#a52a2a][B][[/B][/COLOR]cont[COLOR=#a52a2a][B]][/B][/COLOR] [COLOR=#000000][B]of[/B][/COLOR]
[COLOR=#ff4500]'a'[/COLOR][COLOR=#a52a2a][B]..[/B][/COLOR][COLOR=#ff4500]'z'[/COLOR][COLOR=#a52a2a][B]:[/B][/COLOR]
[COLOR=#228b22]inc[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]contar[COLOR=#a52a2a][B][[/B][/COLOR]entr_texto[COLOR=#a52a2a][B][[/B][/COLOR]cont[COLOR=#a52a2a][B]]]);[/B][/COLOR]
[COLOR=#ff4500]'A'[/COLOR][COLOR=#a52a2a][B]..[/B][/COLOR][COLOR=#ff4500]'Z'[/COLOR][COLOR=#a52a2a][B]:[/B][/COLOR]
[COLOR=#228b22]inc[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]contar[COLOR=#a52a2a][B][[/B][/COLOR][COLOR=#228b22]chr[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR][COLOR=#228b22]ord[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]entr_texto[COLOR=#a52a2a][B][[/B][/COLOR]cont[COLOR=#a52a2a][B]])+[/B][/COLOR][COLOR=#000000]32[/COLOR][COLOR=#a52a2a][B])]);[/B][/COLOR]
[COLOR=#000000][B]end[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]end[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#4682b4][I]{ programa }[/I][/COLOR]
[COLOR=#000000][B]begin[/B][/COLOR]
[COLOR=#228b22]writeln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR][COLOR=#ff4500]'Texto:'[/COLOR][COLOR=#a52a2a][B]);[/B][/COLOR]
[COLOR=#228b22]readln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]texto[COLOR=#a52a2a][B]);[/B][/COLOR]
qtd [COLOR=#a52a2a][B]:=[/B][/COLOR] [COLOR=#228b22]contar[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]texto[COLOR=#a52a2a][B]);[/B][/COLOR]
clrscr[COLOR=#a52a2a][B];[/B][/COLOR]
total [COLOR=#a52a2a][B]:=[/B][/COLOR] [COLOR=#000000]0[/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#228b22]for[/COLOR] k [COLOR=#a52a2a][B]:=[/B][/COLOR] [COLOR=#ff4500]'a'[/COLOR] [COLOR=#228b22]to[/COLOR] [COLOR=#ff4500]'z'[/COLOR] [COLOR=#228b22]do[/COLOR]
[COLOR=#000000][B]begin[/B][/COLOR]
[COLOR=#228b22]if[/COLOR] qtd[COLOR=#a52a2a][B][[/B][/COLOR]k[COLOR=#a52a2a][B]] <>[/B][/COLOR] [COLOR=#000000]0[/COLOR] [COLOR=#228b22]then[/COLOR]
[COLOR=#228b22]writeln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]k[COLOR=#a52a2a][B],[/B][/COLOR] [COLOR=#ff4500]': '[/COLOR][COLOR=#a52a2a][B],[/B][/COLOR]qtd[COLOR=#a52a2a][B][[/B][/COLOR]k[COLOR=#a52a2a][B]]:[/B][/COLOR][COLOR=#000000]0[/COLOR][COLOR=#a52a2a][B]);[/B][/COLOR]
[COLOR=#228b22]inc[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]total[COLOR=#a52a2a][B],[/B][/COLOR] qtd[COLOR=#a52a2a][B][[/B][/COLOR]k[COLOR=#a52a2a][B]]);[/B][/COLOR]
[COLOR=#000000][B]end[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#228b22]writeln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR][COLOR=#ff4500]'Total: '[/COLOR][COLOR=#a52a2a][B],[/B][/COLOR]total[COLOR=#a52a2a][B]:[/B][/COLOR][COLOR=#000000]0[/COLOR][COLOR=#a52a2a][B]);[/B][/COLOR]
readkey[COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]end[/B][/COLOR][COLOR=#a52a2a][B].[/B][/COLOR]

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Opa, então pessoal...

    a parte da contagem da palavra esta tranquilo

    O que eu nao consegui rodar foi a parte de apresentar a ocorrencia de cada letra no texto.

    O erro está no 'case' que está dentro da função.

    tem como voce olhar isso ai pra mim viniciusbmatos?

    porque a duvida maior é essa mesmo...

    Como vou mostrar a ocorrencia (quantidade) de cada letra no meu texto.

    P.S: EstilingueAtomico brigadao pela ajuda da parte da contagem dos caracteres do texto

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O erro está no 'case' que está dentro da função.

    tem como voce olhar isso ai pra mim viniciusbmatos?

    Olá!

    O código está compilando normalmente aqui. Qual compilador está usando?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    to usando Dev-Pascal

    Também uso o Dev-Pascal (IDE) que utiliza o Free Pascal Compiler. Aqui funcionou normalmente. Qual é o erro e em qual linha?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Opa cara ta resolvido aqui consegui!

    so que tenho outro brema aqui

    eu preciso fazer um histograma da porcentagem das letras...

    por exemplo

    A (15%) ******************************

    Z (1%) **

    cada letra no texto corresponde a 1% e equivale a dois *.

    Preciso que o programa escreva pra mim

    da uma olhada e ve o q q posso usar pra isso


    function ContaLetras (texto:string;caractere:char):integer;
    var
    cgeral,i:integer;
    frasecont:integer;
    begin
    cgeral:=0;
    frasecont:=length(texto);
    For i:=1 to frasecont do
    begin
    If UpCase(texto[i])=Caractere then
    cgeral:= cgeral+1;
    end;
    ContaLetras:=cgeral;
    end;

    function Porcentagem (textoT:integer;pGeral:integer):real;
    begin
    Porcentagem:= (pGeral*100);
    Porcentagem:= (Porcentagem/textoT);
    end;

    [COLOR="Navy"]function Histograma (pGeral:real):string;
    var
    ast:array[1..100]of string;
    cont,i:integer;
    aux:real;
    Begin

    Aux:= (pGeral/0.5);
    For cont:=1 to 100 do
    ast[cont]:='**';
    For i:=1 to Round(aux) do
    Histograma:=ast[cont];
    end;[/COLOR]
    begin
    readln (frase);
    frase_cont:= Contas(frase); //Função para contar o total (100%) de caracteres sem espaços no texto
    cA:= ContaLetras (frase,chr(65)); //conta o total de letras no texto
    pA:= Porcentagem(frase_cont,cA); //recebe a porcentagem da letra em relaçao ao total do texto
    xA:= Histograma(pA); //recebe a quantidade de asteriscos

    ve se você entende ai...qualquer duvida me pergunte

    desde já agradeço demais!!!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • nao nao,

    por exemplo...

    a porcentagem de letras A é 12,5%

    então

    a quantidade de asteriscos que deve aparecer é

    12,5/0,5 = 25

    quero saber como eu posso escrever isso

    de forma que eu nao precise usar um case com 100 opções do tipo

    Case Porcentagem da Letra of
    1:histograma:='**';
    2:histograma:='****';
    3:histograma:='******';

    .
    .
    .
    20:histograma:='****************************************'

    ate chegar em 100

    a funçao Histograma seria para fazer isso

    function Histograma (pGeral:real):string;
    var
    ast:array[1..100]of string;
    cont,i:integer;
    aux:real;
    Begin

    Aux:= (pGeral/0.5);
    For cont:=1 to 100 do
    ast[cont]:='**';
    For i:=1 to Round(aux) do
    Histograma:=ast[cont];
    end;

    estou considerando a variavel ast como um vetor de strings, onde cada posiçao tem dois asteriscos...

    so queria mesmo encontrar uma solução pra nao precisar escrever o case de 100 opções.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá!

    Não vi como você está fazendo (olhei rapidamente), mas se "x" for a porcentagem, você pode fazer:


    [color=#228b22]for[/color] i [color=#a52a2a][b]:=[/b][/color] [color=#000000]1[/color] [color=#228b22]to[/color] [color=#228b22]round[/color][color=#a52a2a][b]([/b][/color]x[color=#a52a2a][b])[/b][/color] [color=#228b22]do[/color]
    [color=#228b22]write[/color][color=#a52a2a][b]([/b][/color][color=#ff4500]'**'[/color][color=#a52a2a][b]);[/b][/color]
    writeln[color=#a52a2a][b];[/b][/color]

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×