Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

(Pascal)Сортировка ряда строк

13K
12 апреля 2007 года
*alt
36 / / 12.04.2007
Такая Задача

Напишите процедуру sortmid, которая сортировала бы ряд из п строк в алфавитном порядке, основываясь
на к-ой литере каждой строки, к является параметром, передаваемым процедуре sortmid. Например, если к=3,
то элементы ряда должны быть отсортированы по возрастанию значения в третьей литере каждой строки.
Если длина строки меньше к, то будем предпологать, что его к-й литерой, реально не существующей, служит пробел.
247
13 апреля 2007 года
wanja
1.2K / / 03.02.2003
Код:
type arstr=array[1..n]of string;
proceduree sortmid(a:arstr;n,k:integer);
var i,j:integer;
     h:string;
     ci,cj:char;
begin
for i:=1 to n-1 do
   for j:=i+1 to n do      
       begin
       if length(a)>=k then
          ci:=a[i,k]
       else
          ci=' ';
       if length(a[j])>=k then
          cj:=a[j,k]
       else
          cj=' ';
       if ci>cj then
          begin
          h:=a;
          a:=a[j];
          a[j]:=h;
          end
       end;
end;

Примерно так
622
13 апреля 2007 года
nilbog
507 / / 19.12.2006
wanja эта программа не отсортирует нужный массив
потому что нужно его передавать по ссылке
 
Код:
proceduree sortmid(var a:arstr;n,k:integer);
13K
16 апреля 2007 года
*alt
36 / / 12.04.2007
Чево неправильно и как вывести ответ?

Код:
const n=3;
type arstr=array[1..n]of string;
var i,j,k: integer;
    mas: arstr;

procedure readmas (var mas:arstr);
  var i:integer;
  begin
    writeln('Введите строки:');
    for i:=1 to n do
      begin
        write('Строка №',i,': ');
        readln(mas);
      end;
  end;

procedure inputK (var k:integer);
  var kchar:char;
  begin
    writeln ('Введите литеру'); readln(kchar);
    k:=ord(kchar);
  end;

procedure sortmid(var mas:arstr;n,k:integer);
  var i,j:integer;
     h:string;
     ci,cj:char;
  begin
  for i:=1 to n-1 do
    for j:=i+1 to n do
      begin
        if length(mas)>=k then
          ci:=mas[i,k]
        else
          ci:=' ';
        if length(mas[j])>=k then
          cj:=mas[j,k]
        else
          cj:=' ';
        if ci>cj then
          begin
            h:=mas;
            mas:=mas[j];
            mas[j]:=h;
          end
      end;
  end;

begin {main}
  {обращение к русскому языку}
  setconsoleCp(1251);
  setconsoleOutputCp(1251);

  {ввод}
  readmas(mas);
  inputK (k);

  {обработка}
  sortmid(mas,n,k);

  {вывод}


  readln;
end.
13K
16 апреля 2007 года
*alt
36 / / 12.04.2007
Здесь же надо ещё else

 
Код:
if ci>cj then
          begin
            h:=mas;
            mas:=mas[j];
            mas[j]:=h;
          end


т. е. :

 
Код:
else
  begin
    h:=mas[j];
    mas[j]:=mas;
    mas:=h;
  end


Верно?

Не смотрите на это!!! Чёрт, тупанул так тупанул! Не надо никакого else, прошу простить за идиотизм!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог