Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_Попов_1.doc
Скачиваний:
6
Добавлен:
25.04.2019
Размер:
668.16 Кб
Скачать

Input "Введите число вкладчиков и процент ",n,p

DIM x(n,5)

FOR i=1 TO n

FOR j=1 TO 4

PRINT"Введите остаток по вкладу номер" i "за" j "квартал ";

INPUT x(i,j)

NEXT j,i

s=0

PRINT" Счет Остатки по кварталам ВСЕГО"

PRINT" I II III IV"

FOR i=1 TO n

x(i,5)=х(i,4)+(р/100)*(х(i,1)+х(i,2)+х(i,3)+х(i,4))/4

PRINT USING "########"; i,x(i,1),x(i,2),x(i,3),x(i,4),x(i,5)

s=s+x(i,5)

NEXT

PRINT "Сумма всех вкладов =" s;

PRINT "Средняя величина вклада =" s/n

Задача 12. Сортировка чисел в массиве. Пусть имеется вектор чисел Х длиной N. Напечатать массив в порядке убывания значений его элементов.

Алгоритм реализуется при помощи двух вложенных циклов (рис. 2.5.1). В наружном цикле последовательно перебираются числа X(i) в массиве и во вложенном цикле сравниваются со всеми оставшимися числами справа от данного X(j). Если выясняется, что какое-то из Х(i) меньше сравниваемого, они меняются местами – большее число становится на место меньшего. В программе для упрощения в качестве элементов массива взяты их номера i. Если вектор имеет длину четыре (Х(4)), то будет выполнена следующая последовательность перестановок чисел массива: 1,2,3,4; 2,1,3,4; 3,1,2,4; 4,1,2,3; 4,3,2,1.

Программа к задаче 12

INPUT n

DIM x(n)

'формирование исходного вектора

FOR i = 1 TO n: x(i) = i: NEXT

FOR i = 1 TO n - 1

FOR j = i + 1 TO n

'если x(i)<x(j), числа меняются местами

IF x(i)<x(j) THEN SWAP x(j), x(i)

NEXT j

NEXT i

'вывод результатов

FOR i = 1 TO n: PRINT x(i): NEXT

Задача 13. Транспонирование матрицы. Операция транспонирования широко используется в линейной алгебре и заключается в перевороте элементов квадратной матрицы относительно главной диагонали (диагонали идущей сверху-вниз, слева-направо ).

Н а рис. 2.5.2 приведены исходная и транспонированная матрица А размерности 6 на 6. Если внимательно приглядеться, можно заметить, что элементы массива с индексами I и J поменялись местами элементами с индексами J и I, т.е. A(I,J) A(J,I).

Программа транспонирования изображена ниже. В качестве наполнения исходной матрицы используются ее индексы.

Программа к задаче 13 и 14

n=6: DIM a(n, n)

'ввод данных

FOR i=1 TO n: FOR j=1 TO n: a(i, j)=10*i+j: NEXT j: NEXT i

FOR i = 1 TO n 'прямое транспонирования

FOR j = 1 TO i: SWAP a(i, j), a(j, i): NEXT

NEXT

'вывод матрицы

FOR i=1 TO n: FOR j=1 TO n: PRINT a(i, j); :NEXT:PRINT: NEXT

FOR i=1 TO n 'обратное транспонирование

FOR j=1 TO n-i: SWAP a(i, j),a(n+1-j, n+1-i): NEXT

NEXT

F OR i=1 TO n: FOR j=1 TO n: PRINT a(i, j); :NEXT:PRINT: NEXT 'вывод

I\J

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

11

12

13

14

15

11

21

31

41

51

55

45

35

25

15

2

21

22

23

24

25

12

22

32

42

52

54

44

34

24

14

3

31

32

33

34

35

13

23

33

43

53

53

43

33

23

13

4

41

42

43

44

45

14

24

34

44

54

52

42

32

22

12

5

51

52

53

54

55

15

25

35

45

55

51

41

31

21

11

Исходная

матриц

Транспонирование

относительно

главной диагонали

Транспонирование

относительно

неглавной диагонали

Рис. 2.5.2

З адача 14. Транспонирование матрицы относительно неглавной диагонали (     ). Здесь зависимость между индексами не столь прозрачна. Для того, что бы найти ее, следует начертить новый вид (рис.2.5.2 справа) матрицы, а также, возможно, таблицы исходных (Iи,Jи) и новых (Iн,Jн) индексов (рис. 2.5.3). Если выписать исходные и новые индексы (рис. 2.5.4), можно обратить внимание, что сумма Jи и Iн постоянна и равна N+1. Аналогично Iи+Jн=N+1. Отсюда можно выписать необходимые зависимости исходных и новых индексов A(I,J) A(N+1–J,N+1–I).

IиJи

IнJн

IиJи

IнJн

IиJи

IнJн

IиJи

IнJн

11

55

12

45

13

35

14

25

1

5

1

5

21

54

22

44

23

34

2

4

2

4

31

53

32

43

3

3

3

3

41

52

4

2

4

2

Рис. 2.5.3 Рис. 2.5.4

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

Задачи для самостоятельного решения.

1. Переместить элементы массива Х в массив Y таким образом, чтобы в нем сначала оказалась первая половина исходного массива X, а затем вторая половина.

1

2

3

4

5

6

X

4

5

6

1

2

3

Y

2. Переписать все элементы массива Х для 3<X(i)<10 в начало массива Y, подсчитать их количество и среднее арифметическое. В примере количество чисел, удовлетворяющих условию – 3. Среднее арифметическое – 18/3=6

1

4

2

8

6

0

Х

4

8

6

Y

3. Найти в массиве Х все стоящие смежно элементы с одинаковыми значениями и напечатать их номера. В примере номера равных смежных элементов: 2,3 и 5,6

2

5

5

8

4

4

4. В квадратной матрице Х(N,N) реальной размерности N найти максимальный элемент. Вывести его значение и индексы (X(Imax,Jmax) и Imax, Jmax). Поменять местами элементы строки Imax и столбца Jmax, на пересечении которых он находится.

Вариант 4 Вариант 5 Вариант 6

5. В матрице Х(N,M) вычислить число положительных элементов в каждой строке и занести их в вектор A(N) и сумму отрицательных элементов в каждом столбце и занести их в вектор B(M). Результаты вывести следующим образом. Справа рядом с исходной матрицей выдать вектор А. Под матрицей вывести вектор В.

6. Поменять местами любые два столбца матрицы Х с номерами К и L.

7. Имеется двухмерный массив А длиной N строк (A(N,2)), в котором содержится информация о товаре в магазине. В каждой строке два элемента. Первый является ценой товара, второй – числом единиц этого товара. Составить программу вычисления стоимости всего товара S в магазине и средней цены единицы товара SR. Сделать проверочные выкладки для N=3. В качестве цены товара (в тыс. рублей) следует последовательно использовать цифры натурального ряда. Число единиц каждого товара взять произвольным.