Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 05.05.2015
Сообщений: 8
1

Упорядочить элементы массива по убыванию, используя линейную сортировку

21.05.2015, 20:47. Показов 1444. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста написать программу
В одномерном массиве, состоящем из n вещественных элементов:
1) вычислить сумму элементов массива, расположенных между первым и последним положительными элементами.
2) преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом - все остальные;
3) упорядочить элементы массива по убыванию, используя линейную сортировку;
4) найти заданный элемент в упорядоченном массиве, используя бинарный метод поиска.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2015, 20:47
Ответы с готовыми решениями:

Упорядочить по убыванию элементы массива используя сортировку выбором
Упорядочить по убыванию элементы массива B используя сортировку выбором. Народ помогите исправить...

Упорядочить элементы массива по убыванию, используя сортировку с помощью прямого включения
1. Сформировать одномерный массив с помощью генератора случайных чисел. Вывести элементы исходного...

Отсортировать значения элементов массива по убыванию, используя сортировку Шелла
Дан массив из 10 чисел. Вывести на экран первоначальные значения элементов массива. Отсортировать...

Используя метод сортировки массива упорядочить столбцы массива по убыванию
Дан массив целых случайных чисел (в диапазоне от -50 до 23) размерности m*n. Числа m и n вводятся...

1
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
22.05.2015, 20:10 2
Лучший ответ Сообщение было отмечено Begley как решение

Решение

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
const
    eps = 0.01;
type
    TArray = Array Of Extended;
procedure PrintArray(const ar: TArray);
var
    i: Byte;
begin
    WriteLn;
    for i := 0 to Length(ar) - 1 do
        Write(ar[i]:8:3);
    WriteLn; WriteLn;
end;
procedure InitArray(var ar: TArray);
var
    i, n: Byte;
begin
    repeat
        Write('n=');
        ReadLn(n);
    until (n > 0);
    SetLength(ar, n);
    Randomize;
    for i := 0 to n - 1 do
        ar[i] := Random() * 100 - 50;
    for i := 0 to Random(n div 3) do
        ar[Random(n)] := 0;
    PrintArray(ar);
end;
procedure FindSum(const ar: TArray);
var
    Result: Extended = 0;
    i: Byte = 0;
    fID: Integer = -1;
    lID: Integer = -1;
begin
    while ((i < Length(ar)) And (fID = -1)) do
    begin
        if (ar[i] > 0)
        then
            fID := i;
        Inc(i);
    end;
    if (fID = -1)
    then
    begin
        WriteLn('No one positive num!');
        exit;
    end;
    i := Length(ar);
    while ((i > 0) And (lID = -1)) do
    begin
        Dec(i);
        if (ar[i] > 0)
        then
            lID := i;
    end;
    if (fID <> lID)
    then
        for i := fID + 1 to lID - 1 do
            Result := Result + ar[i];
    WriteLn('1. sum=', Result:0:3);
end;
procedure Swap(var x, y: Extended);
var
    z: Extended;
begin
    z := x;
    x := y;
    y := z;
end;
procedure MoveZeros(var ar: TArray);
var
    i: Byte = 0;
    j, ZeroCount: Byte;
begin
    ZeroCount := Ord(ar[i] = 0);
    while (i < Length(ar) - 1) do
    begin
        if (ar[i + 1] = 0)
        then
        begin
            for j := i downto ZeroCount - 1 do
                Swap(ar[j], ar[j + 1]);
            Inc(ZeroCount);
            Dec(i);
        end;
        Inc(i);
    end;
    PrintArray(ar);
end;
procedure LineSort(var ar: TArray);
var
    i, j: Byte;
begin
    for i := 0 to Length(ar) - 2 do
        for j := i + 1 to Length(ar) - 1 do
            if (ar[i] < ar[j])
            then
                Swap(ar[i], ar[j]);
    PrintArray(ar);
    BinarySearch(ar);
end;
procedure BinarySearch(const ar: TArray);
var
    key: Extended;
    left, right, Result: Byte;
    isFound: Boolean = False;
begin
    left := 0; right := Length(ar) - 1;
    Write('key='); ReadLn(key);
    while ((left <= right) And (Not isFound)) do
    begin
        Result := left + (right - left) div 2;
        isFound := Abs(key - ar[Result]) < eps;
        if (Not isFound)
        then
        begin
            if (key > ar[Result])
            then
                right := Result - 1
            else
                left := Result + 1;
        end;
    end;
    if (isFound)
    then
        WriteLn('key id: ', Result + 1)
    else
        WriteLn('Not found!');
end;
var
    mass: TArray;
begin
    InitArray(mass);
    FindSum(mass);
    MoveZeros(mass);
    LineSort(mass);
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2015, 20:10

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

Упорядочить элементы массива по убыванию
1. В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму положительных...

Упорядочить по убыванию элементы массива A[n], не принадлежащих отрезку
Прошу помощи в решении следующих задач: 1. Упорядочить по убыванию элементы массива A, не...

Как упорядочить элементы массива по убыванию в паскале?
Как упорядочить элементы массива по убыванию в паскале? i принадлежит


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru