Опубликован: 02.02.2011 | Доступ: свободный | Студентов: 3319 / 937 | Оценка: 4.43 / 3.57 | Длительность: 33:06:00
Специальности: Программист
Лекция 14:

Двумерные массивы: задачи поиска, замены и суммирования элементов двумерного массива

< Лекция 13 || Лекция 14: 1234 || Лекция 15 >

Генерация двумерных массивов

Принцип генерации двумерных массивов такой же, как и одномерных.

//Описание функции генерации массива
void gen(int str,int slb, int a, int b, int m[max_x][max_y]){
  int i,j;
  srand(time(NULL)*1000); 
  //устанавливает начальную точку генерации случайных чисел
  for (i=0;i<str;i++)
    for (j=0;j<slb;j++)
      m[i][j]=rand()%(b-a)+a); 
      //функция генерации случайных чисел на [a,b)
}

Вывод двумерных массивов

Двумерные массивы выводятся на экран так же, как и одномерные. Для наглядности вывода целесообразно разделять элементы массива на строки и столбцы.

//Описание функции вывода массива 
void out (int str,int slb, int m[max_x][max_y]){
  int i,j;
  for (i=0;i<str;i++)  {
    for (j=0;j<slb;j++)
      printf("%4d",m[i][j]);
      printf("\n");
    }
}

Задачи поиска, замены и суммирования элементов двумерного массива

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

Пример 4. Найдем максимальный элемент главной диагонали двумерного целочисленного массива размерностью nxn, заданного случайными числами на промежутке [-100; 100).

/*Описание функции поиска максимального элемента главной диагонали*/
int maxi(int str,int slb, int m[max_x][max_y]){
  int i,j,e_max=m[0][0];
  for(i=0;i<str;i++)
    for(j=0;j<slb;j++)
      if((i==j)&&(m[i][j]>e_max))
        e_max=m[i][j];
  return e_max;
}

Пример 5. Найдите сумму элементов столбца двумерного массива, номер которого задается с клавиатуры.

/*Описание функции суммирования элементов заданного номера столбца матрицы*/
int summa(int str, int slb, int nom,int m[max_x][max_y]){
  int i,j,sum=0;
  for(i=0;i<str;i++)
    for(j=0;j<slb;j++)
      if(j==nom-1) sum+=m[i][j];
  return sum;
}

Пример 6. Дан двумерный вещественный массив размерностью nxn, заданный случайными числами на промежутке [-100; 100). Замените все элементы выше главной диагонали на 1.1 и ниже ее на 0.0.

//Описание функции замены
void zamena (int str,int slb, double m[max_x][max_y]) {
  int i,j;
  for (i=0;i<str;i++)  
    for (j=0;j<slb;j++) {
      if (i>j) m[i][j]=0.0;
      if (i<j) m[i][j]=1.1;
    }
}

Ключевые термины

Генерация массива – это автоматическое формирование значений его элементов.

Двумерный массив – это массив, измерение которого равно двум.

Инициализация массива – это формирование значений его элементов.

Матрица – это представление однотипных данных в виде прямоугольной таблицы.

Указатель на двумерный массив – это адрес области памяти, выделенной под массив указателей на одномерные массивы.

Краткие итоги

  1. Двумерный массив является представителем структурированного типа данных в языке С++.
  2. В языке С++ определены только одномерные массивы, поэтому двумерный массив рассматривается как одномерный массив, элементами которого являются массивы.
  3. Элементы двумерного массива имеют одинаковые имя, тип и располагаются в памяти последовательно.
  4. Каждый элемент двумерного массива характеризуются двумя индексами, значениями и адресуемой памятью.
  5. Существует две основные формы объявления массивов: с указанием и без указания размера. Безразмерный массив объявляется, если: он инициализируется при объявлении, является формальным параметром функции, объявлен как ссылка на массив.
  6. Инициализация массива заключается в присваивании начальных значений его элементам. Методы генерации двумерных и одномерных массивов аналогичны.
  7. Для двумерных массивов нельзя выполнить операцию прямого присваивания.
  8. Адресация элементов массива осуществляется с помощью индексированного имени. Обращаться к элементам массива можно также посредством механизма указателей.
  9. Размер памяти, занимаемой массивом, зависит от реализации и вычисляется с помощью операции sizeof.
  10. Двумерные массивы используются для решения прикладных задач.
< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!