Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Получение нового массива из данного




Включение элемента в заданную позицию массива

Удаление элемента из массива

Требуется удалить k-й элемент из массива ai(i = 1, n)

Удалить элемент, расположенный в k-м месте в массиве можно, сдвинув весь "хвост " массива, начиная с (k+1) элемента на одну позицию влево, т,е, выполнив операцию ai = ai+1 i = k, k+1,..., n-1

    Рис.9 rem удаление элемента n = n – 1 for i= k to n-1 a (i) = a (i + 1) next i    

Перед включением элемента в k-ю позицию необходимо раздвинуть массив, т.е. передвинуть " хвост " массива вправо на одну позицию, выполняя операцию ai+1=ai, i= n,n-l,...,k..

Перемещение элементов массива нужно начинать с конца. Далее k-му элементу присваивается заданное значение В. Размер массива увеличивается

на 1.

    Рис.10 rem включение элемента в массив for i=n to k step -l a (i + 1)=a(i) next i a(k)=b n = n + l  

 

Дано: одномерный массив аi(i = 1, n). Получить новый массив из элементов исходного, величина которых больше заданного числа p

k - количество элементов в массиве b
j - индекс нового массива b  
если ai > p

input p

k=0: j=1

for i=l to n

if a(i) > p then

b(j) = a(i)

k = k+1

нет j = j+1

да end if

нет next i

да

 

 

Рис.11

8.Упорядочение (сортировка) массива. Дан числовой массив xi..,хn элементы которого попарно различны. Требуется переставить элементы массива так, чтобы после перестановки они были упорядочены в порядке возрастания: xi<...<xn.(или убывает xi >…>xn)

а) алгоритм сортировки выбором

Первое место должен занять наименьший элемент, второе наименьший из всех остальных и т.д. Таким образом, каждый раз необходимо находить индекс наименьшего элемента (k) и осуществлять перестановку (рис.12)

 
 


for 1=1 to n

нет k = i

да for j = i+1 to n

if x(j)<x(k) then k = j

next j

swap x(i), x(k)

нет next i

да

 

 

Рис.12

б) алгоритм сортировки методом пузырька

1) Сравнить х(1) и х(2):

· если х(1)>х(2), сделать перестановку

· если х(1)<=х(2), перейти к 2

2) Сравнить х(2) и х(3)

· если х(2)<=х(3), перейти к 3

· если х(2)>х(3), поменять местами х(2) и х(3)

· сравнить х(2) и х(1), сделать перестановку, если она нужна

3) И вообще, если х (i) - последний элемент в упорядоченном списке, то сравнить х (i)и x (i+1)

4) Если х (i)<= х (i+1), установить i= i+ 1 и, если i<= n-1, перейти к 3, в противном случае сортировка закончена.

если х (i)> х (i+1), то

· Поменять местами х (i) и х (i+1)

· Убедиться, что х (i) находится на своем месте в упорядоченном списке

· Установить k=i

5)Сравнить х (k-1) и х (k):

· если x(k) меньше, то сделать перестановку; установить k=k-l и, если k>l, перейти к 5

· если x(k)>=x(k- 1), то перейти к 4

На рис.13 представлен один из возможных алгоритмов сортировки метода “ пузырька ”. Элементы массива сортируются в порядке убывания

 

for i =1 to n step -1

for j = 1 to i-1

нет if a(j) < a(j+1) then

да swap a(j), a(j+1)

end if

next j

нет next i

да

нет

да

 

 

Рис.13

Пузырьковая сортировка (bubble) может быть выполнена и с помощью следующих подпрограмм

Подпрограмма bubble.bas SUB BUBBLE (X(),N) FOR I=1 TO N-1 FOR J=N-1 TO I STEP -1 IF X(J-1)>X(J) THEN SWAP X(J), X(J-1) END IF NEXT J NEXT I END SUB Подпрограмма bubble1.bas SUB BUBBLE1 (X(),N) M: Q=0 FOR I=1 TO N-1 IF X(I-1)>X(I) THEN TMP=X(I-1):X(I-1)=X(I):X(I)=TMP:Q=1

 

Для выполнения лабораторной работы студент получает задание от преподавателя из вариантов задания по данной работе, составляет блок – схему алгоритм решения, программу на QBASIK, решает задачу на ЭВМ.

В отчет входят:

· математическая постановка задачи;

· блок – схема решения;

· программа на QBASIC;

· результаты решения задачи с той формой распечатки, что требуется по условия задачи.

 

Пример оформления самостоятельной работы.

Лист № 1.

Задание.

Дан массив а, не содержащий нулевых элементов, из 20 элементов. Посчитать среднее среди отрицательных элементов. Если оно больше заданного числа, положительные элементы исходного массива уменьшить на это число, а отрицательные – увеличить. В новом массиве найти максимальный элемент и его индекс. Результат представить в виде:

№ п/п Исходный массив Полученный массив
     

Мах =

I max =

 

Математическая постановка задачи.

Дано: аi i = 1,20

число р

Определить:

 
 


Если ai > 0

 

ai – p если

bi =

ai + p если

max{bi}, i max

bi если bi≥ max

max

max если bi < max

Лист № 2.

Блок – схема поставленной задачи.

 

 
 

 


 

 


Лист № 3.

Программа, выполненная на языке QBASIC.

CLS

DIM 3(1 TO 20), b(1 TO 20)

FOR i = 1 TO 20

PRINT “a(“;i;”)=”;

INPUT “”, a(i)

NEXT i

INPUT “введите заданное число=”; p

max = -10 10

S = 0

K = 0

FOR i = 1 TO 20

IF a(i)<0 THEN

S=S+a(i)

K=k+1

END IF

NEXT i

PRINT: PRINT

IF Sr > p THEN

END IF

FOR i = 1 TO 20

IF a(i)>0 THEN b(i)=a(i)-P

IF a(i)<0 THEN b(i)=a(i)+P

IF b(i) >= max THEN max = b(i); imax = i

NEXT i

PRINT “*********”

PRINT “r/n*Исходный массив*Полученный массив*”

FOR i = 1 TO 20

PRINT USING “*##*######*####*”; i; a(i); b(i)

NEXT i

PRINT “********”

PRINT: PRINT

SLEEP

PRINT “max=”;max

PRINT “imax=”;imax

END

 

Лист № 4

Результаты работы программы.

А(1) = 1

А(2) = 2

А(3) = 3

А(4) = 4

А(5) = 5

А(6) = 6

А(7) = 7

А(8) = 8

А(9) = 9

А(10) = 0

А(11) = -1

А(12) = -2

А(13) = -3

А(14) = -4

А(15) = -5

А(16) = -6

А(17) = -7

А(18) = -8

А(19) = -9

А(20) = 20

 

Введите заданное число = -100

Sr = -5

 

*п/п *Исходный массив *Полученный массив *

*1 *1 *101 *

*2 *2 *102 *

*3 *3 *103 *

*4 *4 *104 *

*5 *5 *105 *

*6 *6 *106 *

*7 *7 *107 *

*8 *8 *108 *

*9 *9 *109 *

*10 *0 *0 *

*11 *-1 *-101 *

*12 *-2 *-102 *

*13 *-3 *-103 *

*14 *-4 *-104 *

*15 *-5 *-105 *

*16 *-6 *-106 *

*17 *-7 *-107 *

*18 *-8 *-108 *

*19 *-9 *-109 *

*20 *20 *120 *

 

MAX = 120

IMAX = 20

 

 




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 543; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.036 сек.