Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите найти ошибки в задачи на функцию

Автор: spektr 31.05.2007 1:03

Помогите пожалуйста!Совсем ноль!!!
Описать функцию f(s, n, х), определяющую, какой символ реже других ( но не нуль раз ) встречается в строке s и сколько раз он в нее входит. Если таких символов несколько, то взять первый из них по алфавиту.

Надеюсь на Вашу помощь!!!

Автор: spektr 31.05.2007 22:31

Вот готовая программа,но препод говорит,есть ошибки,какого-то условия не хватает... Помогите пожалуйста их найти неточности...

procedure Stat(source: string);
var
chars: array[0..255] of Word;
n, k: Integer;
begin
for n:=0 to 255 do chars[n]:=0;
for n:=1 to length(Source) do
begin
k:=ord(Source[n]);
chars[k]:=chars[k] + 1
end;
for n:=0 to 255 do
if chars[n] > 0 then
Write(chr(n),'' - '', chars[n]:3,'' '');
WriteLn;
end;
VAR S: String;
BEGIN
Write(''Type the string: ''); ReadLn(S);
Stat(S);
END.

Автор: volvo 31.05.2007 23:17

Я бы вот так сделал:

procedure Stat(source: string);
var
chars: array[0..255] of Word;
n, k: Integer;
min: integer;

begin
for n := 0 to 255 do chars[n] := 0;
for n:=1 to length(Source) do begin
k := ord(Source[n]);
chars[k]:=chars[k] + 1
end;

{ Вот этого у тебя не было - тебе же надо найти символ(ы), встречающиеся минимальное кол-во раз? }
min := 255;
for n := 0 to 255 do
if (chars[n] > 0) and (chars[n] < min)
then min := chars[n];

for n:=0 to 255 do
if chars[n] = min then
write(chr(n),' - ', chars[n]:3,' ');
writeLn;
end;