Программа к задаче 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

Программа к задаче 13 и 14 - student2.ru FOR i=1 TO n: FOR j=1 TO n: PRINT a(i, j); :NEXT:PRINT: NEXT'вывод

I\J    
   
   
   
   
   
  Исходная матриц   Транспонирование относительно главной диагонали   Транспонирование относительно неглавной диагонали

Рис. 2.5.2

Программа к задаче 13 и 14 - student2.ru Задача 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н    
         
             
                 
                     

Рис. 2.5.3 Рис. 2.5.4

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

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

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

X
Программа к задаче 13 и 14 - student2.ru            
Y

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

4 8 6 Х
Программа к задаче 13 и 14 - student2.ru            
      Y

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

5 5 4 4

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

 
  Программа к задаче 13 и 14 - student2.ru Программа к задаче 13 и 14 - student2.ru

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

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

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

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

Наши рекомендации