Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2013, 16:23   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
не кажется, что в Вашем варианте больше 7 развилок?
Не кажется, в рунтайм выполняться будет не более 7 сравнений для любой комбинации. Код из #6 60% возможных комбинаций не правильно отсортирует - 72 из 120. Брал 1 2 3 4 5 и расставлял их 120 возможными способами
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.04.2013 в 16:26.
Аватар вне форума Ответить с цитированием
Старый 30.04.2013, 16:41   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Тогда надо спрашивать у автора задачи что он имел ввиду.
В условии четко написано: "7 сравнений", а не "7 операторов сравнения"
Цитата:
А если у Вас так все автоматизированно, не могли бы Вы вариант из поста#6 прогнать(всмысле на тестах) ? Заранее спасибо!
Можно, конечно.
Только трудно автоматизировать, когда по условию положено a,b,c,d,e, а в решении a1,a2,a3,a4,a5.
Или это чтоб жизнь медом не казалась?
Код:
// óïîðÿäî÷èâàíèå 5 ÷èñåë çà 7 ñðàâíåíèé.
var
  a,b,c,d,e : longint;
  NumCorrect,NumErrors : longint;
var
  a1 : longint absolute a;
  a2 : longint absolute b;
  a3 : longint absolute c;
  a4 : longint absolute d;
  a5 : longint absolute e;

procedure swap(var a,b : longint);
var c : longint;
begin
  c := a;
  a := b;
  b := c;
end;

procedure sort;
var x : longint;
begin
  if e<a then swap(e,a);
  if d<b then swap(d,b);
  if b<a then begin swap(b,a); swap(e,d); end;
  if c<b then begin
    x:=c; c:=b;
    if x<a then swap(x,a);
    b:=x;
  end else
    if d<c then swap(d,c);
  if e<c then begin
    x:=e; e:=d; d:=c;
    if x<b then begin c:=b; b:=x; end
           else c:=x;
  end
  else if e<d then swap(e,d);
end;

procedure sort2;
begin
  if a1 > a5 then
    Swap (a5, a1);

  if a2 > a4 then
    Swap (a2, a4);

  if a1 > a2 then
    Swap (a1, a2);

  if a4 > a5 then
    Swap (a4, a5);

  if a2 > a3 then
    Swap (a2, a3);

  if a1 > a2 then
    Swap (a1, a2);

  if a4 > a5 then
    Swap (a4, a5);
end;

procedure Check;
begin
  if not ((a<=b) and (b<=c) and (c<=d) and (d<=e))then begin
    writeln(a,' ',b,' ',c, ' ',d,' ',e);
    inc(NumErrors)
  end else
    inc(NumCorrect);
end;

const MaxRnd = 100;
const Nrep = 1000;
var i : longint;
begin
  randomize;
  for i := 0 to Nrep-1 do begin
    a := random(MaxRnd);
    b := random(MaxRnd);
    c := random(MaxRnd);
    d := random(MaxRnd);
    e := random(MaxRnd);
    sort2;
    check;
  end;
  writeln('Correct: ',NumCorrect,', Errors: ',NumErrors,' from ',Nrep);
end.

Последний раз редактировалось s-andriano; 30.04.2013 в 16:43.
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны три массива. Упорядочить их по возрастанию элементов Новичёк_Delphi Помощь студентам 4 05.12.2012 21:27
Delphi. упорядочить столбцы матрицы по возрастанию сумм элементов этого столбца ДваДваВо7 Помощь студентам 2 09.02.2011 16:40
сортировки одномерного массива целых чисел методом подсчета сравнений [Паскаль] sm0ker Помощь студентам 13 16.12.2010 22:40
В матрице nxm (n, m ≥ 10) целых чисел элементы нечетных строк упорядочить по возрастанию, а элементы четн serafimGroup Помощь студентам 1 01.12.2010 16:45
Найти пять наибольших элементов одномерного массива целых чисел. Serega-ru Помощь студентам 2 20.10.2010 10:10