Пример1: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы - в конец массива. Новый массив не заводить.
Этапы решения задачи:
1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы "просматривать" массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется.
2. Напишем программу на псевдо паскале:
program example1; 
var 
V:array[1..100,1..100] of integer; 
   m,n, i,j, c: integer; 
     flag: boolean; 
begin 
     <ввод размерности массива m*n> 
     <заполнение ячеек массива> 
for i:=1 to m do 
      repeat 
         flag:= true; 
            for j:=1 to n-1 do 
              if (v[i,j]=0) and (v[i,j+1]<>0) then begin 
                <поменять их местами> 
                  flag:= false; 
                end; 
             until flag; 
         <Печать массива> 
      readln; 
   end. 
3.Составим блок схему алгоритма
 
Детализируем блок "Упорядочиваем 1-ю строку"
  
Блок схема алгоритма целиком:
4.Приведем программу на языке Паскаль:
program example1; 
  var 
    V:array[1..100,1..100] of integer; 
      m,n, i,j, c: integer; 
         flag: boolean; 
begin 
       write('Введите размерность массива m-n> '); readln(m,n); 
         for i:= 1 to m do 
            for j:= 1 to n do begin 
               write('V[',i,',',j,']= '); readln(V[i,j]); 
  end; 
    for i:=1 to m do 
      repeat 
          flag:= true; 
              for j:=1 to n-1 do 
           if (v[i,j]=0) and (v[i,j+1]<>0) then begin 
         c:=v[i,j]; v[i,j]:=v[i,j+1]; v[i,j+1]:=c; 
      flag:= false; 
  end; 
     until flag; 
      for i:= 1 to m do begin 
         for j:= 1 to n do write(V[i,j]:2);
         writeln
     end; 
  readln; 
end.
Контрольные вопросы
- Каким образом определяются переменные типа массив (одномерный и двумерный)?
 - Как осуществляется доступ к отдельному элементу одномерного и двумерного массива?
 - Каким образом выводятся элементы массива на экран?
 - Приведите пример фрагмента программы, который выводит на экран двумерный массив в виде матрицы.
 - Сколько чисел можно записать в шестимерный массив X : Array[0..1, 0..1, 0..1, 0..1, 0..1, 0..1] of Integer?
Задания
 
- Даны целые числа а1, а2, а3. Получить целочисленную матрицу [bij]i,j=1,2,3, для которой bij=ai-3aj.
 - Получить [aij]i=1,…10; j=1,…12 - целочисленную матрицу, для которой aij=i+2j.
 - Дано натуральное число n. Получить действительную матрицу [aij]i, j=1,…n, для которой aij= .
Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы.
а)   б)   в)   г)
 
- Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих: 
выше главной диагонали; 
ниже главной диагонали; 
выше и ниже побочной. 
 - Дана вещественная матрица размерности n * m. По матрице получить логический вектор, присвоив его k-ому элементу значение True , если выполнено указанное условие и значение False иначе: 
- все элементы k столбца нулевые; 
- элементы k строки матрицы упорядочены по убыванию; 
- k строка массива симметрична. 
 - Дана вещественная матрица размерности n * m. Сформировать вектор b, в котором элементы вычисляются как: 
- произведение элементов соответствующих строк; 
- среднее арифметическое соответствующих столбцов; 
- разность наибольших и наименьших элементов соответствующих строк; 
- значения первых отрицательных элементов в столбце. 
 - Дан двухмерный массив A[1..m,1..n]. Написать программу построения одномерного массива B[1..m], элементы которого соответственно равны а) суммам элементов строк, б) произведениям элементов строк, в) наименьшим средних арифметических элементов строк. 
 - Расположить элементы данного массива в обратном порядке (первый элемент меняется с последним, второй - с предпоследним и т.д. до середины; если массив содержит нечетное количество элементов, то средний остается без изменения). 
 - В данном массиве поменять местами элементы, стоящие на нечетных местах, с элементами, стоящими на четных местах. 
  
Задачи повышенной сложности
- В массиве А[1..N,1..N] определить номера строки и столбца какой-нибудь седловой точки. Некоторый элемент массива называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце.
 - Массив А[1..5,1..7] содержит вещественные числа. Требуется ввести целое число K и вычислить сумму элементов А[I,J], для которых I+J=К. Прежде, однако следует убедиться, что значение К позволяет найти решение, в противном случае нужно напечатать сообщение об ошибке. 
 - Дан массив A[1..N,1..N]. Составить программу, которая прибавила бы каждому элементу данной строки элемент, принадлежащий этой строке и главной диагонали. 
 - Дана матрица NxM. Переставляя ее строки и столбцы, переместить наибольший элемент в верхний левый угол. Определить можно ли таким же образом поместить минимальный элемент в нижний правый угол.
 - Заполнить двухмерный массив Т[1..n,1..n] последовательными целыми числами от 1 до n 52 0, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке: 
 
      
      1   2   3   4   5   6 
      20   21   22   23   24   7 
      19   32   33   34   25   8 
      18   31   36   35   26   9 
      30   29   28   27   10 
      15   14   13   12   11 
Элемент двухмерного массива называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером NxN найти максимум среди всех локальных минимумов. 
Назад
На главную
2016-06-29 21:36:22  Денис   прошу помочь с написанием программ по массивам
  
  Вводится одномерный вещественный массив фиксированной длины, состоящий из 
«N» элементов (конкретное значение N для каждого студента индивидуально 
задается преподавателем). Требуется: 1) Вывести исходный массив в строку 
(например, 23.5 45.1 и т.д.). 2) Поменять местами элементы массива по следующему 
закону: an ↔ a1, далее an-1 ↔ a2 и т.д. Вывести измененный массив в том же виде что 
и исходный, но со следующей строки.
  
  
 
Оставить комментарий:
 |