Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Queen_Of_Pain
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 4
#1

Сортировка массивов

26.05.2013, 10:42. Просмотров 1305. Ответов 0
Метки нет (Все метки)

есть код для такой задачи:

Составить процедуру (или функцию), которая переставляет первые 2n элементов массива A (число n задается пользователем) по следующему правилу:
A[n+1], A[n+2], …, A[2n], A[1], A[2], …, A[n].
Следующие действия должны выполняться отдельными процедурами (и/или функциями): 1) заполнение массива случайными числами из заданного интервала; 2) вывод массива на экран; 3) заполнение массива нулями (инициализация); 4) сохранение массива в текстовый файл; 5) чтение массива из текстового файла; 6) удаление нескольких элементов из указанного места (со сдвигом); 7) добавление нескольких элементов в указанное место (со сдвигом). Процедуры (и/или функции) должны работать с массивами как с параметрами, но не как с глобальными переменными.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
type
  MyArr=array[1..10000]of integer;
var
  a:MyArr;
  max,k,i,i1,j,num,elem,pos,n, count,x,y,arg1:integer;
 
 
procedure setarray(var a:MyArr; const max,x,y:integer);
var
  i:integer;
begin
  randomize;
  for i:=1 to max do
    a[i]:=random(y-x+1)+x;
end;
 
procedure initarray(var a:MyArr; const max:integer);
var
  i:integer;
begin
  for i:=1 to max do a[i]:=0;
end;
 
procedure print(a:MyArr; max:integer);
var
  i:integer;
begin
  writeln('Массив:');
  write('[ ');
  for i:=1 to max do
    write(a[i],' ');
  writeln(']')
end;
 
procedure del(var a:MyArr; var max:integer; const k:integer);
var
  i:integer;
begin
  if k>max then
  begin
    writeln('Ошибка!');
    exit
  end;
  for i:=k to max-1 do
    a[i]:=a[i+1];
  dec(max);
end;
 
procedure addnew(var a:MyArr; var max:integer; const elem, pos:integer);
var
  i,temp:integer;
begin
  if pos>max then
  begin
    writeln('k>max!');
    exit
  end;
   
 For i:=max Downto pos Do
   a[i+1]:= a[i];
   a[pos]:= elem; 
   
  
end;
 
procedure replacement(var a:MyArr; const n,max:integer);
var
  i,temp:integer;
begin
   if (n>max) then
    writeln('Ошибка!')
  else
    begin
      for i:=1 to n do 
       begin
        temp := a[i];
        a[i] := a[n+i];
        a[n+i] := temp;
       end;
    end;
end;
 
procedure readfile(var a:myarr);
var
  input: text;
  i: integer;
begin
  assign(input, 'input.txt');
  reset(input);
  i:=1;
  i1:=0;
  while not (eoln(input)) do
  begin     
    read(input, a[i]);
    inc(i);
    inc(i1);
  end;
  close(input);
end;
 
procedure savetofile(var a:myarr);
var i:integer;
    output:text;
begin
  assign(output, 'output.txt');
  rewrite(output);
  
  for i:=1 to i1 do write(output, a[i],' ');
  close(output);
  
end;
 
begin
  initarray(a,max);
  
  //работа с файлом
  {readfile(a);
  print(a,i1);
  savetofile(a);
  }
  writeln('Введите количество элементов массива: ');
  readln(max);
  
  writeln('Задайте диапазон для randomize');
  readln(x,y);
  setarray(a,max,x,y);
  Print(a,max);
 
  writeln('Задайте n для перестановки');
  readln(n);
  if n>max then writeln('Ощибка!')
  else
   replacement(a, n, max);
  print(a,max);
  
  writeln('Введите количество удаляемых элементов: ');
  readln(num);
  writeln('Укажите позиции удаляемых элементов: ');
  for count := 0 to num-1 do begin
     read(i);
     del(a,max,i-count);
   end;
   
   print(a,max);
 
  writeln('Введите количество новых элементов: ');
  readln(num);
  writeln('Задайте значение и позицию');
  for count:=1 to num do begin
   readln(elem,pos);
   arg1:=max+count;
   addnew(a,arg1,elem,pos);
  end;
  
  print(a,max+num);
 
end.
1) Дополнить данную программу подпрограммой (процедурой или функцией) сортировки массива методом вставки (включения). (Подпрограмма должна работать с массивами как с параметрами.)
2) Модифицировать данный метод сортировки по следующему принципу:


Улучшение
Вкратце алгоритм метода вставки можно сформулировать так: для i=2..n каждый элемент массива A[i] помещается на свое место в упорядоченной ранее части массива A[1], …, A[i–1], при этом, если необходимо, происходит сдвиг элементов массива.
Модифицировать алгоритм метода вставки для повышения его эффективности можно, изменив способ поиска позиции вставки следующим образом.
На момент вставки элемента A[i] элементы массива A[1], …, A[i–1] уже отсортированы. Нужно выбрать средний элемент и сравнить его с A[i]. Если A[i] меньше этого элемента, то поиск места вставки следует продолжать в левой половине упорядоченной части массива, иначе – в правой.

Реализовать модифицированный (улучшенный) метод в отдельной подпрограмме и сравнить его с исходным по количеству присваиваний и сравнений.


Помогите, пожалуйста! срочно нужно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 10:42
Ответы с готовыми решениями:

Вывод элементов массивов, сортировка массивов
вот ссылки program 1аЬ4; uses crt; const е=0.0010; d=l.Зе-7; var a, b,...

Сортировка массивов
Помогите пожалуйста! Вводятся массивы А,В. Создать новай массив из элементов...

Сортировка Массивов
1. Дан массив А. Выполнить сортировку элементов массива по убыванию. Вывести...

Сортировка массивов.
Здравствуйте уважаемые программисты и обитатели форума. Помогите решить...

Сортировка одномерных массивов
Может кто предоставить решение ?!? Дан целочисленный массив из 30 элементов....

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 10:42

Сортировка одномерных массивов
у меня второй вариант.составьте пожалуйста программу. то что вычеркнула ,это не...

Сортировка одномерных массивов
Дан целочисленный массив A(n) с элементами, сгенерированными случайными числами...

Тема «Сортировка массивов»
В любом «длинном» числе > 20 знаков расположить цифры числа по возрастанию.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru