Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TurboBasic.doc
Скачиваний:
18
Добавлен:
21.11.2019
Размер:
493.57 Кб
Скачать

5.2 Задачи на обработку одномерных массивов.

  1. Формирование элементов массивов

Пусть требуется сформировать массив В, состоящий из 10 элементов по правилу

В(i)=А(i)-i (i - нечетное); В(i)=А(i)/i (i - четное), где А– массив из 10 целых чисел, выбранных случайным образом из интервала от –100 до 100.

DIM A(9),B(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

NEXT I

FOR I=0 TO 9

? A(I);

NEXT I

FOR I=0 TO 9

IF IMOD2=0 THEN B(I)=A(I)-I ELSE B(I)=A(I)/I

NEXT I

?

FOR I=0 TO 9

? B(I);

NEXT I

  1. Преобразование элементов массива

К нечетным элементам массива А прибавить 1

DIM A(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

? A(I);

NEXT I

FOR I=1 TO 9 STEP 2

A(I)=A(I)+1

NEXT I

?

FOR I=0 TO 9

? A(I);

NEXT I

  1. Выделение элементов массива, удовлетворяющих заданным условиям.

а) Для массива А требуется вычислить сумму положительных S и количество отрицательных элементов N.

DIM A(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

? A(I);

NEXT I

S=0:N=0

FOR I=0 TO 9

IF A(I)<0 THEN N=N+1 ELSE S=S+A(I)

NEXT I

?

?"S="S,"N="N

б) поиск максимального (минимального) элемента массива

Максимальное значение хранится в переменной Р, которой в начале присваивается значение первого элемента массива. Затем, если Р меньше какого-либо из элементов массива, то Р присваивается значение большего элемента. При поиске минимального элемента массива в условии меняется знак "меньше" на "больше".

DIM A(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

? A(I);

NEXT I

P=A(0)

FOR I=1 TO 9

IF P<A(I) THEN P=A(I)

NEXT I

?"МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ";P

4)Изменение размеров массива.

Задача связана с добавлением или удалением из массива одного или нескольких элементов.

a) Допустим требуется удалить из массива А 6-ой элемент.

DIM A(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

? A(I);

NEXT I

FOR I=5 TO 8

A(I)=A(I+1)

NEXT I

FOR I=0 TO 8

? A(I);

NEXT I

б) если, наоборот, после 5-го элемента нужно вставить новый элемент равный 0

DIM A(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

? A(I);

NEXT I

FOR I=8 TO 5 STEP –1

A(I+1)=A(I)

NEXT I

A(5)=0

?

FOR I=0 TO 10

? A(I);

NEXT I

5)Суммирование двух массивов.

Для массивов А и В одинаковых размеров необходимо вычислить C(i)=A(i)+B(i)

DIM A(9),B(9),C(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

B(I)=INT(RND*200)-100

? A(I);

NEXT I

?

FOR I=0 TO 9

C(I)=A(I)+B(I)

? B(I);

NEXT I

?

FOR I=0 TO 9

? C(I);

NEXT I

Задания для самостоятельной работы

  1. Найти сумму всех элементов массива.

  2. Сформировать массив С по правилу С(i)=A(i)/B(i).

  3. Найти среднее значение элементов массива.

  4. Записать массив в обратном порядке.

  5. В массиве заменить минимальный элемент на 0.

  6. В массиве возвести в квадрат минимальный положительный элемент.

  7. Из массива удалить максимальный элемент.

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

Классической задачей по обработке массивов является задача упорядочения (сортировки): расположить значения элементов массива в порядке их возрастания или убывания.

Продумано много алгоритмов ее решения, каждый из которых может оказаться наиболее выгодным в зависимости от особенностей данного массива. Если, например, дан большой массив из цифр, то для его упорядочения нет нужды многократно сравнивать и переставлять элементы, достаточно подсчитать количество каждой цифры и в соответствии с этим сформировать массив. Но совсем неуклюже будет выглядеть работа программы по этому алгоритму на массиве, не имеющем одинаковых элементов. Здесь более выгодно применить метод, основанный на нахождении максимального (минимального) элемента массива: находим максимальный (минимальный) элемент и меняем его местами с последним (первым), из оставшихся опять находим максимальный (минимальный) и меняем его с предпоследним (вторым) и так далее.

Пример: сортировка массива по возрастанию.

Дано: А(n) – одномерный массив размерности n.

Результат: A(n) – массив упорядоченный по возрастанию

Используемые переменные: Р – переменная для хранения промежуточного значения минимального элемента, К – индекс минимального элемента, I – индекс элемента упорядоченного массива – управляющая переменная внешнего цикла, J – индекс элемента части массива в которой ищется минимальный элемент – управляющая переменная внутреннего цикла.

CLS

INPUT"Введите размерность массива N=";N

DIM A(N)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

? A(I);

NEXT I

FOR I=0 TO N-1

P=A(I):K=I

FOR J=I+1 TO N

IF A(J)>=P THEN 5

P=A(J):K=J

5 NEXT J

A(K)=A(I): A(I)=P

NEXT I

FOR I=0 TO N

? A(I);

NEXT I

Другим классическим путем упорядочения служит метод, основанный на сравнении рядом стоящих элементов по их величине. Его принято называть пузырьковым, потому что в процессе упорядочения более "легкие" элементы постепенно "всплывают" к началу массива подобно пузырькам воздуха в воде. Этот способ наиболее эффективно работает в случае "почти упорядоченных массивов"

Пример: сортировка массива пузырьковым способом.

Дано: массив М(9)

Результат: упорядоченный по возрастанию массив М(9)

Используемые переменные: D – дополнительная переменная для хранения элемента массива при смене его с соседним, S – переменная которая является признаком завершения сортировки, если S=1, то происходит перестановка, если S=0, то замен больше не происходит.

DIM M(9)

FOR I=0 TO 9

A(I)=INT(RND*200)-100

? A(I);

NEXT I

10 S=0

FOR I=0 TO 8

IF M(I)<=M(I+1) THEN 20

D=M(I)

M(I)=M(I+1)

M(I+1)=D

S=1

20 NEXT I

IF S=1 THEN 10

FOR I=0 TO 9

? M(I);

NEXT I

Метод пузырьковой сортировки в настоящее время представляет лишь исторический интерес и в практическом программировании, по-видимому, не используется, так как разработаны значительно более эффективные способы "быстрой" сортировки любых массивов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]