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

Ваш аккаунт

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

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

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

Откорректировать программу на Turbo Pascal

83K
08 декабря 2013 года
Hellp
7 / / 08.12.2013
Нужна помощь! Задание было такое Дан массив C(N). Преобразовать массив, упорядочив первую его половину элементов по возрастанию, а вторую по убыванию.(Известно, что N-четное). Я выбрала сортировку выбором. Но при этом есть условия всё нужно оформить с использованием процедур, у меня была исходная программа сортировки выбором к моему заданию, но вот что-то намудрила с переменными и ошибка, вообщем запуталась. Ещё нужно вставить счётчик итераций, только куда его поместить? он мне нужен для определения временной сложности.

Код:
Uses Crt;
Const       N = 50;
Type        T_Mas = Array [1..N] of Integer;
Var     Mas : T_Mas;
        Kol : Integer;

               
Procedure Count (Var Kol:Integer);
{Процедура определения размерности массива}
Var     IOR : Word;
Begin
Write('Введите размерность массива: ');
    Repeat
        {$I-} ReadLn(Kol); {$I+}
        IOR := IOResult;
        If odd(IOR) or (Kol>N) Then
            WriteLn('Ошибка. Повторите ввод.')
    Until (Kol<=N) and (IOR=0)
End;


Procedure Filling (Kol:Integer; Var A: T_Mas);
{Процедура заполнения массива}
Var I : Integer;
Begin
    Randomize;
    For I := 1 To Kol Do A[I] := Random(N)
End;


Procedure Print (Kol:Integer; A: T_Mas);
{Процедура вывода массива}
Var I : Integer;
Begin
    For I:=1 to Kol do Write (A[I], ' ')
End;

Procedure Vibor (var X:T_Mas);
var k,i,j,x,buf:byte;
k:=X div 2;
{сортировка выбором по возрастанию первой половины}
for i:=1 to k-1 do
  begin
    x:=i;
    for j:=i+1 to k do
    if a[j]<a[x] then x:=j;
    buf:=a[i];
    a[i]:=a[x];
    a[x]:=buf;
  end;
{сортировка выбором по убыванию второй половины}
for i:=k+1 to n-1 do
  begin
    x:=i;
    for j:=i+1 to n do
    if a[j]>a[x] then x:=j;
    buf:=a[i];
    a[i]:=a[x];
    a[x]:=buf;
  end;

Begin
    ClrScr;
    Count(Kol);
    Filling(Kol, Mas);
    WriteLn('Исходный массив'); Print (Kol, Mas);
    Vibor (Mas);
    WriteLn;
    WriteLn('Отсортированный массив'); Print (Kol, Mas);
    Repeat until KeyPressed
End.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог