1 / 1 / 0
Регистрация: 08.03.2014
Сообщений: 99
1

Отсортировать положительные элементы массива, стоящие на четных местах по убыванию методом простого выбора

29.02.2016, 16:34. Показов 1681. Ответов 3
Метки нет (Все метки)

Отсортировать положительные элементы массива, стоящие на четных местах по убыванию методом простого выбора.
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
const
  n = 5;//константа
 
type//описание массива
  omas = array[1..100] of integer;//описание массива
 
procedure init(var a: omas);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  a[1] := 5;//присваиваине значения
  a[2] := 2;//присваиваине значения
  a[3] := 8;//присваиваине значения
  a[4] := 4;//присваиваине значения
  a[5] := 9;//присваиваине значения
end;//конец процедуры
 
procedure print(var a: omas; n: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    write(a[i], ' ');//вывод
end;//конец процедуры
 
procedure sort(var a, b: omas; var nt: integer);//процедура sort с описанием формальных параметров- переменных a типа myarray
var
  k, i, j, m: integer;//описание локальных переменных
begin//начало процедуры
  for i := 1 To n Do //цикл с параметром
    if (i mod 2) = 0 Then //условие
      if a[i] > 0 Then//условие
        b[i] := a[i];//присваиваине значения
  i := 0;//присваиваине значения
  for i := 1 To n Do
    if b[i] <> 0 then//условие
      inc(nt);
  for i := n Downto 2 Do   {цикл по длине рассматриваемой части массива}
  begin{поиск максимального элемента и его номера в текущей части массива}
    k := i; m := b[i]; {начальные значения минимального, элемента и его индекса }
    for j := 2 To i - 1 Do
      if b[j] < m Then
      begin
        k := j; m := b[k]
      end;
    if k <> i Then
    begin{перестановка элементов}
      b[k] := b[i];
      b[i] := m
    end;
  end;
end;//конец процедуры
 
var
  a, b: omas;//описание глобальных переменных
  nt: integer;
 
begin//начало программы
  init(a);//Вызов процедуры и указание фактических параметров
  writeln('исходный массив');//Вывод текста
  print(a, n);//Вызов процедуры и указание фактических параметров
  writeln;//переход на следующую строку
  sort(a, b, nt);//Вызов процедуры и указание фактических параметров
  writeln('отсортированый массив:');//Вывод текста
  print(b, nt);//Вызов процедуры и указание фактических параметров
end.
Программа работает, но отсортированный массив имеет вид 0 4 2 0 0, вместо 4 2 0 0 0

Добавлено через 12 минут
Не срабатывает оно скорее всего потому что я коряво задал цикл
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for i := n Downto 2 Do   {цикл по длине рассматриваемой части массива}
  begin{поиск максимального элемента и его номера в текущей части массива}
    k := i; m := b[i]; {начальные значения минимального, элемента и его индекса }
    for j := 2 To i - 1 Do
      if b[j] < m Then
      begin
        k := j; m := b[k]
      end;
    if k <> i Then
    begin{перестановка элементов}
      b[k] := b[i];
      b[i] := m
    end;
  end;
тк он изначально был для сортировки по возврастанию
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.02.2016, 16:34
Ответы с готовыми решениями:

Отсортировать по убыванию элементы одномерного массива, стоящие на нечетных местах, методом простого выбора
Отсортировать по убыванию элементы одномерного массива, стоящие на нечетных местах, методом...

Отсортировать по убыванию элементы одномерного массива, стоящие на нечетных местах, методом простого обмена
Отсортировать по убыванию элементы одномерного массива, стоящие на нечетных местах, методом...

Отсортировать с функцией простого выбора элементы массива, стоящие на нечетных местах.
Отсортировать с помощью простого выбора элементы массива, стоящие на нечетных местах.

Отсортировать элементы массива стоящие на четных местах по убыванию
Задан массив a. Отсортировать все элементы стоящие на четных местах по невозрастанию.

3
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 861
29.02.2016, 17:43 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Dmitryb98 Посмотреть сообщение
Отсортировать положительные элементы массива, стоящие на четных местах
элементы разве не должны остаться на четных местах, но по убывания, и в том же массиве А?
. В вашей программе так:
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
const
  n = 5;//константа
 
type//описание массива
  omas = array[1..100] of integer;//описание массива
 
procedure init(var a: omas);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  a[1] := 5;//присваиваине значения
  a[2] := 2;//присваиваине значения
  a[3] := 8;//присваиваине значения
  a[4] := 4;//присваиваине значения
  a[5] := 9;//присваиваине значения
end;//конец процедуры
 
procedure print(var a: omas; n: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    write(a[i], ' ');//вывод
end;//конец процедуры
 
procedure sort(var a, b: omas; var nt: integer);//процедура sort с описанием формальных параметров- переменных a типа myarray
var
  k, i, j, m: integer;//описание локальных переменных
begin//начало процедуры
  for i := 1 To n Do //цикл с параметром
    if (i mod 2) = 0 Then //условие
      if a[i] > 0 Then//условие
        b[i] := a[i];//присваиваине значения
 
  for i := 1 To n Do
    if b[i] <> 0 then//условие
      inc(nt);
  for i := n Downto 1 Do   {цикл по длине рассматриваемой части массива}
  begin{поиск максимального элемента и его номера в текущей части массива}
    k := i; m := b[i]; {начальные значения минимального, элемента и его индекса }
    for j := 1 To i-1  Do
      if b[j] < m Then
      begin
        k := j; m := b[k]
      end;
    if k <> i Then
    begin{перестановка элементов}
      b[k] := b[i];
      b[i] := m
    end;
  end;
end;//конец процедуры
 
var
  a, b: omas;//описание глобальных переменных
  nt: integer;
 
begin//начало программы
  init(a);//Вызов процедуры и указание фактических параметров
  writeln('исходный массив');//Вывод текста
  print(a, n);//Вызов процедуры и указание фактических параметров
  writeln;//переход на следующую строку
  sort(a, b, nt);//Вызов процедуры и указание фактических параметров
  writeln('отсортированый массив:');//Вывод текста
  print(b, nt);//Вызов процедуры и указание фактических параметров
end.
1
1 / 1 / 0
Регистрация: 08.03.2014
Сообщений: 99
01.03.2016, 19:22  [ТС] 3
capricornus CF, черт, вы правы нужно элементы сортировать в том же массиве

Добавлено через 15 минут
пока исправил это дело через небольшой костыль
Pascal
1
2
  a[2] := b[1];
  a[4] := b[2];
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 861
01.03.2016, 19:31 4
Костыль это хорошо, когда свои ноги целы. А так - делайте все тоже самое, только с массивом А.
Подсказка - сортировку делайте при условии
Pascal
1
if (i mod 2) = 0
и все должно получиться. Если выкинуть лишнее и чуть подправить .
Массив b уберите вообще.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2016, 19:31

Отсортировать с помощью прямого выбора элементы массива, стоящие на четных местах
сортировать с помощью прямого выбора элементы, стоящие на четных местах (2,4,6...) спасибо ...

Отсортировать по убыванию элементы, стоящие на четных местах, а элементы стоящие на нечетных местах - по возрастанию
Дан вектор размером N. Отсортировать по убыванию элементы, стоящие на четных местах, а элементы...

Отсортировать по убыванию положительные элементы массива методом выбора
Отсортировать по убыванию положительные элементы массива методом выбора. Заранее спасибо.

Отсортировать по убыванию положительные элементы массива методом выбора
друзья, помогите пожалуйста!!! я в VB дуб дубом(( написал прогу на с++ может кто поможет...


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

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

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