1 / 15

Двумерные массивы

Двумерные массивы. Учитель информатики высшей категории ГБОУСОШ №398 г. Москвы Темишева людмила степановна Типовые алгоритмы. Ввод двумерного массива. При вводе двумерного массива необходимо организовать двойной цикл :

nico
Download Presentation

Двумерные массивы

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Двумерные массивы Учитель информатики высшей категории ГБОУСОШ №398 г. Москвы Темишева людмила степановна Типовые алгоритмы

  2. Ввод двумерного массива При вводе двумерного массива необходимо организовать двойной цикл : - внешний цикл ( по строкам) - внутренний цикл (по столбцам) Порядок ввода элементов определяется порядком изменения индексов в программе и для приведенной программы является следующим: А(1,1) А(1,2)…..А(1,м) А(2,1) А(2,2)…. А(2,м) …………А(n,1) А(n.2) ….А(n,m) CLS 1 INPUN “введите количество строк”; N IF N<2 OR FIX(N)<>N THEN PRINT “ошибка ввода”: GOTO 1 2 INPUN “введите количество столбцов”; M IF M<2 OR FIX(M)<>M THEN PRINT “ошибка ввода”: GOTO 2 DIM A(N,M) FOR I=1 TO N ‘ цикл по строкам FOR J=1 TO M ‘ цикл по столбцам PRINT “введите элемент ” ;I;”-ой строки”;J;”-го столбца” INPUT A(I,J) NEXT J,I

  3. В случае необходимости можно организовать заполнение массива по столбцам. Для этого внешний цикл должен быть организован по номеру столбца (J), а внутренний по номеру строки (I) с соответствующими границами изменения индексов. REM Ввод массива по столбцам FOR J=1 TO M FOR I=1 TO N PRINT “A(”;I;”,”;J;”)”; INPUT A(I,J) NEXT I,J Элементы массива вводятся в следующем порядке: А(1,1) А(2,1)…..А(n,1) А(1,2) А(2,2)…. А(n,2)…А(1,m) .А(2,m.) ….А(n,m) Если число вводимых элементов невелико, можно не использовать циклы, а все элементы указать явно в списке ввода. Например, для ввода массива А(2,2) можно использовать операторы PRINT “Введите массив А(2,2) по строкам” INPUT A(1,1),A(1,2),A(2,1),A(2,2) Ввод нескольких массивов одного размера можно осуществить в одном цикле.

  4. ВЫВОД ДВУМЕРНОГО МАССИВА • Двумерные массивы необходимо выводить в привычном виде (по строкам), начиная вывод новой строки массива в новую строку экрана. • PRINT “распечатка исходного массива” • FOR I=1 TO N • FOR J=1 TO M • PRINT A(I,J); • NEXT J • PRINT ‘Перевод курсора в начало следующей строки • NEXT I • Наглядность вывода может быть нарушена , если элементы массива А в памяти ЭВМ • представляются различным числом значащих цифр. Тогда элементы одного столбца • могут занимать различное число позиций и не будут располагаться строго друг под • другом. Для улучшения наглядности в этом случае можно предложить 2 способа: • 1. В операторе вместо (;) поставить (,). • 2. вывод всех элементов массива по единому формату с использованием • оператора PRINT USING.

  5. Суммирование элементов двумерного массива • Для двумерного массива необходимо вычислить : • n m • S= Аij • i=1 j=1 • REM вычисление сумма элементов массива • S=0 • FOR I=1 TO N • FOR J=1 TO M • S=S+A(I,J) • NEXT J • NEXT I • PRINT “сумма=”;S

  6. Суммирование диагональных элементов массива (вычисление следа массива) • Для массива А(n,n) необходимо вычислить • n • S=Аii • i=1 • REM вычисление суммы следа массива • S=0 • FOR I=1 TO N • S=S+A(I,J) • NEXT I • PRINT “След массива=“;S

  7. Cуммирование двух массивов одинаковой размерности`` • Для двумерных массивов А(n,m) и В(n,m) необходимо • вычислить • Сij=Аij+Вij , i=1…n ,j=1…m • REM • FOR I=1 TO N • FOR J=1 TO M • C(I,J)=A(I,J)+B(I,J) • NEXT J • NEXT I

  8. Суммирование элементов заданной строки матрицы • Для массива А(I,J) необходимо вычислить • m • S=Aij • J=1 • REM Вычисление суммы I–ой строки • S-0 • FOR J=1 TO M • S=S+A(I,J) • PRINT “Сумма”;I;” –ой строки=“;S

  9. Суммирование элементов строк матрицы • Необходимо вычислить сумму элементов каждой строки массива А(n,m). • Результат получить в векторе D(n), т.е. вычислить • REM Суммирование массива по строкам • FOR I=1 TO N • S=0 • FOR J=1 TO N • S=S+A(I,J) • NEXT J • D(I)=S • NEXT I • Так как на поиск в массиве элемента с заданными значениями индексов • затрачивается время (адрес i–го элемента определяется прибавлением к • адресу начала массива значение 1) следовательно для повышения • эффективности в программе используется при вычислении суммы • простая переменная , что исключает многократное обращение к • элементам массива D

  10. Урок 2.Транспонирование матриц. • Необходимо заменить строки матрицы её столбцами , а столбцы её • строками, т.е. вычислить • Вij=Аij , i=1…n • j=1…m • Транспонированную матрицу можно получить в исходном массиве • А(n,m). Для квадратной матрицы размером N,N для этого необходимо • поменять местами каждый элемент верхнего треугольника с • соответствующим элементом нижнего (диагональные элементы • остаются на месте). При этом для каждой строки нужно выполнить • перестановку для элементов, расположенных правее главной диагонали , • с элементами соответствующего столбца, расположенные ниже главной • диагонали. При перестановке используем вспомогательную переменную • Р, помещая в нее один из переставляемых элементов, чтобы не потерять • его значение, т.е. Р=Aij , Aij=Aji Aji=P , i=1….n-1 , j=j+1….n или • оператор SWAP A(I,J),A(J,I)

  11. ПРОГРАММЫ ТРАНСПОНИРОВАНИЯ • REM ТРАНСПОНИРОВАНИЕ ПРЯМОУГОЛЬНОЙ МАТРИЦЫ • FOR I=1 TO N ’ цикл по строкам • FOR J=1 TO M ’ цикл по столбцам • B(I,J)=A(J,I) • NEXN J • NEXT I • REM ТРАНСПОНИРОВАНИЕ КВАДРАТНОЙ МАТРИЦЫ • FOR I=1 TO N-1 • FOR J=I+1 TO N • SWAP A(I,J),A(J,I) • NEXT J,I

  12. УМНОЖЕНИЕ МАТРИЦЫ НА ВЕКТОР • Для вычисления произведения матрицы А(N,M) на вектор В(M) необходимо вычислить • A m C • REM Умножение матрицы на вектор • FOR I=1 TO N • S=0 • FOR J=1 TO M n S=S+A(I,J)*B(J) n • NEXT J B C(I)=S • NEXT I n • Использование вспомогательной переменной S позволяет уменьшить время • выполнение программы за счет исключения обращения в цикле по j к элементам массива С(N)

  13. Умножение матрицы на матрицу • Для умножения А(N,K) на В(K,M) необходимо выполнить вычисления: • Получим массив С(N,M) • A K M M N N • K • REM • FOR I=1 TO N • FOR J=1 TO M • S=0 • FOR L=1 TO K • S=S+A(I,J)*B(L,J) • NEXT L • C(I,J)=S • NEXT J,I

  14. Удаление строки из матрицы • Требуется удалить строку с заданным номером К. Все строки,начиная с (К+1)-й строки ,нужно переместить вверх . Число строк уменьшается на 1. • REM УДАЛЕНИЕ СТРОКИ • N=N-1 K=3 • FOR I=K TO N • FOR J=1 TO M • А(I,J)=А(I+1,J) • NEXT J • NEXT I • Удаление столбца аналогично (задание на дом)

  15. Включение строки в матрицу. • Включаемая строка задана как вектор С(М). Включение строки в матрицу аналогично включению элемента в одномерный массив. • REM Включение строки в матрицу • FOR I=N TO K STEP -1 • FOR J=1 TO M • A(I+1,J)=A(I,J) • NEXT J • NEXT I • FOR J=1 TO M • A(K,J)=C(J) • NEXT J • N=N+1 • Операторы в скобках перемещают строки, начиная с К-й, вниз (в обратном порядке) .Перемещение одной строки связано с перемещением всех элементов этой строки , что требует организации цикла по номеру столбца. Включение строки в качестве К-й строки осуществляют операторы в фигурных скобках,

More Related