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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2013, 18:49   #1
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию Сортировка

Здраствуйте,подскажите пожалуйста,как правильно сделать так,чтобы в этой программе был выбор : пользователь мог сам указать количество элементов,и они вводились или самим пользователем или рандомом?Я уже много раз пробовала,то нули одни получаются ,то вообще не то.
Код:
 
const
  m = 10; 
 type
 mas=array[1..10] of integer;
var
   a:mas;
  i, j, k: integer; 
 
procedure Cut( var a:mas);
var
i,j,k:integer;
begin
for i := 1 to m - 1 do
    for j := 1 to m - i do
      if a[j] > a[j + 1] then begin
        k := a[j];
        a[j] := a[j + 1];
        a[j + 1] := k;
      end;
end;
 
begin
  writeln('Vvedite elementu massiva');
  for i := 1 to m do
 read(a[i]); 
   Cut(a);
 begin
  write('Otsortirovannui massiv: ');
  for i := 1 to m do
    write(a[i]:4);
   
  writeln;
readln
   end;
end.
lialia вне форума Ответить с цитированием
Старый 27.03.2013, 18:59   #2
Chertenok_n_13
 
Регистрация: 08.01.2012
Сообщений: 8
По умолчанию

эм. не поняла проблемы. у меня с клавиатуры все ввелись и отсортировались правильно. а что конкретнее не так??
Chertenok_n_13 вне форума Ответить с цитированием
Старый 27.03.2013, 19:01   #3
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

нужно чтобы человек мог сам выбрать кол-во элементов,а не как у меня 10 и ни как по другому
lialia вне форума Ответить с цитированием
Старый 27.03.2013, 19:11   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
const
  n = 100; 
 type
 mas=array[1..n] of integer;
var
   a:mas;
  i, j, k, m: integer; 
 
procedure Cut( var a:mas);
var
i,j,k:integer;
begin
for i := 1 to m - 1 do
    for j := 1 to m - i do
      if a[j] > a[j + 1] then begin
        k := a[j];
        a[j] := a[j + 1];
        a[j + 1] := k;
      end;
end;
 
begin
   ReadLn (m);
  writeln('Vvedite elementu massiva');
  for i := 1 to m do
 read(a[i]); 
   Cut(a);
 begin
  write('Otsortirovannui massiv: ');
  for i := 1 to m do
    write(a[i]:4);
   
  writeln;
readln
   end;
end.
Poma][a вне форума Ответить с цитированием
Старый 27.03.2013, 19:19   #5
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

спасибо большое!! У меня еще один вопрос,подскажите пожалуйста,а как ввести в эту программу подсчет числа обменов,числа сравненийи времени работы процудуры?
lialia вне форума Ответить с цитированием
Старый 27.03.2013, 20:09   #6
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Код:
     if a[j] > a[j + 1] then begin
        k := a[j];
        a[j] := a[j + 1];
        a[j + 1] := k;
        //тут увеличиваем число обменов
      end;
А время работы сделать тяжело. Юзайте GetDate и GetTime.
hon вне форума Ответить с цитированием
Старый 27.03.2013, 20:14   #7
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

спасибо,это же только число обменов,да?
lialia вне форума Ответить с цитированием
Старый 28.03.2013, 19:50   #8
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Да. А время работы сделать тяжело. Юзайте GetDate и GetTime.
hon вне форума Ответить с цитированием
Старый 28.03.2013, 20:29   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Лучше использовать GetTickCount.
Следует только иметь в виду, что дискретность изменения составляет 15-20 мс, а не 1 мс, как моэжно было бы подумать.
s-andriano вне форума Ответить с цитированием
Старый 28.03.2013, 20:35   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от hon Посмотреть сообщение
Да. А время работы сделать тяжело. Юзайте GetDate и GetTime.
И что тут тяжёлого?

Код:
// Инициализация таймера замера времени выполнения алгоритма
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
LARGE_INTEGER time1;
QueryPerformanceCounter(&time1);

// замеряемый алгоритм

// Снятие показаний таймера
LARGE_INTEGER time2;
QueryPerformanceCounter(&time2);
time2.QuadPart -= time1.QuadPart;
double span = (double) time2.QuadPart / freq.QuadPart;

span = span * pow(10,9);// Время в микросекундах
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Быстрая сортировка(сортировка хаора) с++ LustHunter Помощь студентам 3 07.10.2011 19:37
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32