Code
program n1;
var s:string;st1:array [' '..'z'] of char;st:array [' '..'z'] of integer;a,c,d:char;i,l:integer;p:set of char;
begin
p:=[' ','.',',','!','?',':',';','a'..'z','A'..'Z'];
writeln('VVedite stroku:');
read(s);s[0]:=' ';
for c:=' ' to 'z' do begin st[c]:=0;st1[c]:=c end;dec(st[' ']);
for i:=1 to length(s)-1 do if (s[i]in p) then inc(st[s[i]]);
for c:='z' downto '!' do
for d:=' ' to chr(ord(c)-1) do
if st[d]>st[chr(ord(d)+1)] then
begin
a:=st1[d];st1[d]:=st1[chr(ord(d)+1)];st1[chr(ord(d)+1)]:=a;
i:=st[d];st[d]:=st[chr(ord(d)+1)];st[chr(ord(d)+1)]:=i;
end;
for c:='z' downto ' ' do
if (st1[c] in p) then write(st1[c],' ');
writeln;
end.
примерно так. Правда он выводит по кол-ву не всегда в порядке букв в исходном тексте, но работает. Алгорит - загоняем в массив кол-во встреч эл-в. И сортируем параллельно с ним массив с теми же индексами, но у которого значения эл-в - буквы. Итого получаем один массив упорядочен по кол-ву встреч в тексте, а во втором буквы, соответствующие числу встреч.
Code
program spiski;
label onemoretime;
type fifo=^spisok;
spisok=record ch:integer;next:fifo end;
var a,t:fifo;i,r,n:integer;
procedure outspisok;
begin
t:=a;
while (t^.next<>nil) do
begin
write(t^.ch,' ');
t:=t^.next;
end;
writeln;
end;
procedure addbegin;
begin
writeln;
t:=a;new(a);
writeln('Velichina novogo el-ta:');read(a^.ch);
a^.next:=t;
outspisok;
end;
procedure addafterj;
var i,j:integer;p:fifo;
begin
writeln;
t:=a;
writeln('Posle kakogo el-ta dobavit:');read(j);
for i:=1 to j-1 do t:=t^.next;
p:=t^.next;
new(t^.next);
writeln('Velichina novogo el-ta:');read(t^.next^.ch);
t^.next^.next:=p;
outspisok
end;
procedure addafterel;
label fail;
var p:fifo;e:integer;
begin
t:=a;writeln('Posle kakogo chisla dobavit:');read(e);
while (t^.ch<>e) do
begin
if t^.next=nil then begin writeln('Takogo elementa v spiske net');goto fail end;
t:=t^.next;
if t^.ch=e then
begin
p:=t^.next;
new(t^.next);
writeln('Velichina novogo el-ta:');read(t^.next^.ch);
t^.next^.next:=p;
outspisok
end
end;
fail: end;
begin
new(a);
t:=a;
t^.ch:=random(256);
write('Skolko elementov vnesti v spisok:');read(n);
write ('Spisok:');
for i:=1 to n do
begin
write(t^.ch,' ');
new (t^.next);
t:=t^.next;
t^.ch:=random(256);
end;
writeln;
t^.next:=nil;
onemoretime:writeln;
writeln('Vvedite 1 dlya dobavleniya v nachalo,2-posle j posizii,3-posle elementa,druguu cifruy dlya vihoda');
read(r);
case r of
1:begin addbegin;goto onemoretime end;
2:begin addafterj;goto onemoretime end;
3:begin addafterel;goto onemoretime end;
else;
end;
end.
уффф...это вторая
http://files.mail.ru/VWB1MR - если лень набирать)