Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Задание на паскаль - сортировка Radix обмен


Автор: flashg 14.8.2005, 22:54
Есть пример RADIX обмена с цифрами уже вложенными в код т.е. именно их уже программа рассортирует.

у меня задание вот такое

Предложенный набор символов отсортировать сортировкой Radix обмен

т.е. необходимо чтобы с клавиатуры считывла программа то что она д.б отсортировать

я пытался в коде сменить цифры на буквы программа отказалась запускатся
Код

Const
  m = 256;
  a: arrType =
       (44, 55, 12, 42, 94, 18, 6, 67);


а мне надо ещё чтобы программ запрашивала символы т.е. при RUN появилось сообщение введите с клавиатруы а с клавиатуры можно набить и:
1) ABC
2) АБВ
3) 123

вот вопрос что мне надо изменить в коде чтобы программа могла воспринимать любой символ и чтобы символы вводились по запросу с клавиатуры

вот код программы полностьб (пример с цифрами)
Код

Const
  n = 8;

Type
  arrType = Array[0 .. Pred(n)] Of Byte;

Const
  m = 256;
  a: arrType =
       (44, 55, 12, 42, 94, 18, 6, 67);

Procedure RadixSort(Var source, sorted: arrType);
  Type
    indexType = Array[0 .. Pred(m)] Of Byte;
  Var
    distr, index: indexType;

    i: integer;
  begin
    fillchar(distr, sizeof(distr), 0);
    for i := 0 to Pred(n) do
      inc(distr[source[i]]);

    index[0] := 0;
    for i := 1 to Pred(m) do
      index[i] := index[Pred(i)] + distr[Pred(i)];

    for i := 0 to Pred(n) do
      begin
        sorted[ index[source[i]] ] := source[i];
        index[source[i]] := index[source[i]] + 1;
      end;
  end;

Var
 b: ArrType;
 i: Integer;
begin
 RadixSort(a, b);
 For i := 1 To Pred(n) Do
   Write(b[i]:4); 
 ReadLn;
end.

smile

Автор: flashg 15.8.2005, 19:04
мне помогли но к сожелению не десь не вежливо не отвечать когда просят помощи

но я вас прощаю smile
вот код программы - если кому то понадобится
Код

procedure sort(var src, dst: string);
var
  m : array[char] of integer;
  i : integer;
  c : char;
begin
  fillchar(m, sizeof(m), 0);
  for i := 1 to length(src) do
    inc(m[src[i]]);
  dst := '';
  for c := #0 to #255 do
    while m[c] > 0 do
    begin 
      dst := dst + c;
      dec(m[c]);
    end;
end;

var
  a, b : string;

begin
  writeln('Введите последовательность символов');
  readln(a);
  sort(a, b);
  writeln('Отсортированная последовательность символов:');
  writeln(b);
  readln;
end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)