roro1689
Messages postés1Date d'inscriptionjeudi 27 mars 2008StatutMembreDernière intervention 9 avril 2008
-
9 avril 2008 à 15:12
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
10 avril 2008 à 10:49
Bonjour
Pouvez vous m'aider je doit réaliser un programme en pascal me permettant de calculer le nombre d'apparition des lettres dans le texte et ensuite de réaliser le l'arbre correspondent voici ce que j'ai fait seulement il ne marche et de plus je ne voi pas comment rétuliser les resultat pour construire l'arbre.
je suis débutant
merci d'avance pour vos explication
program compter;
uses wincrt;
var texte:string;
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z:integer;
it:integer;
Begin
Writeln('Entrez le texte');
readln(texte);
for it:=1 to length(texte) do
if texte[it]='a'
then a:=a+1;
writeln(a);
for i:=1 to length(texte) do
if texte[i]='b'
then b:=b+1;
writeln ('b');
for i:=1 to length(texte) do
if texte[it]='c'
then c:=c+1;
writeln (c);
for i:=1 to length(texte) do
if texte[it]='d'
then d:=d+1;
writeln (d);
for i:=1 to length(texte) do
if texte[it]='e'
then e:=e+1;
writeln (e);
for i:=1 to length(texte) do
if texte[it]='f'
then f:=f+1;
writeln (f);
for i:=1 to length(texte) do
if texte[it]='g'
then g:=g+1;
writeln (g);
for i:=1 to length(texte) do
if texte[it]='h'
then h:=h+1;
writeln (h);
for i:=1 to length(texte) do
if texte[it]='i'
then i:=i+1;
writeln (i);
for i:=1 to length(texte) do
if texte[it]='j'
then j:=j+1;
writeln (j);
for i:=1 to length(texte) do
if texte[it]='k'
then k:=k+1;
writeln (k);
for i:=1 to length(texte) do
if texte[it]='l'
then l:=l+1;
writeln (l);
for i:=1 to length(texte) do
if texte[it]='l'
then l:=l+1;
writeln (l);
for i:=1 to length(texte) do
if texte[it]='m'
then m:=m+1;
writeln (m);
for i:=1 to length(texte) do
if texte[it]='n'
then n:=n+1;
writeln (n);
for i:=1 to length(texte) do
if texte[it]='o'
then o:=o+1;
writeln (o);
for i:=1 to length(texte) do
if texte[it]='p'
then p:=p+1;
writeln (p);
for i:=1 to length(texte) do
if texte[it]='q'
then q:=q+1;
writeln (q);
for i:=1 to length(texte) do
if texte[it]='r'
then r:=r+1;
writeln (r);
for i:=1 to length(texte) do
if texte[it]='s'
then s:=s+1;
writeln (s);
for i:=1 to length(texte) do
if texte[it]='t'
then t:=t+1;
writeln (t);
for i:=1 to length(texte) do
if texte[it]='u'
then u:=u+1;
writeln (u);
for i:=1 to length(texte) do
if texte[it]='v'
then v:=v+1;
writeln (v);
for i:=1 to length(texte) do
if texte[it]='w'
then w:=w+1;
writeln (w);
for i:=1 to length(texte) do
if texte[it]='x'
then x:=x+1;
writeln (x);
for i:=1 to length(texte) do
if texte[it]='y'
then y:=y+1;
writeln (y);
for i:=1 to length(texte) do
if texte[it]='z'
then z:=z+1;
writeln (z);
End.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202237 9 avril 2008 à 16:39
var
Letters : array['a'..'z'] of longword;
i, L, T : integer;
P : single;
C : char;
begin
// reset
for C := 'a' to 'z' do
Letters[C] := 0;
T := 0;
// count letters
L := Length(Text);
for i := 1 to L do
begin
C := LowerChar(Text[i]);
if C in ['a'..'z'] then
begin
inc(Letters[C]);
inc(T);
end;
end;
P := 100/T;
// show result
for c := 'a' to 'z' do
if Letters[C] <> 0 then
Writeln(format(C+'= %6.d | %.2f%%',[Letters[C], P*Letters[C]]));
end;
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 10 avril 2008 à 10:49
@foxi :
j'ai effectué quelques corrections.
procedure TForm1.Button1Click(Sender: TObject);
var
Letters: array['a'..'z'] of longword;
i, L, T: integer;
P: single;
C: char;
Ch, Chm: string;
F1: textFile; {fichier de sortie}
begin
try
screen.Cursor := CrHourGlass;
// reset
Ch := 'Foxi est un brillant informaticien';
AssignFile(F1, 'c:\temp\fichResult.csv');
Rewrite(F1); {écrasement et création du fichier de sortie}
for C := 'a' to 'z' do
Letters[C] := 0;
T := 0;
// count letters
L := Length(Ch);
Chm := LowerCase(Ch); {conversion de la chaîne en miniscule }
for i := 1 to L do
begin
C := Chm[i];
if C in ['a'..'z'] then
begin
inc(Letters[C]);
inc(T);
end;
end;
if T <> 0 then
P := 100 / T;
// show result
for c := 'a' to 'z' do
if Letters[C] <> 0 then
Writeln(F1, format(C + '= %6.d | %.2f%%', [Letters[C], P * Letters[C]]));
finally
Screen.Cursor := CrDefault;
CloseFile(F1);
ShowMessage('terminé !');
end;
end;