4283

Работа с массивами в языке С++

Лабораторная работа

Информатика, кибернетика и программирование

Работа с массивами в языке С++ 1 Цель работы Получение практических навыков в работе с массивами. В ходе выполнения работы необходимо создать программу, которая определяет и инициализирует двумерный массив целых значений и затем выполняет след...

Украинкский

2012-11-15

70.5 KB

22 чел.

Работа с массивами в языке С++

1 Цель работы 

Получение практических навыков в работе с массивами.

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

  •  чтение данных с консоли;
  •  преобразование исходного массива в соответствии с шагом один из индивидуального задания;
  •  создание и заполнение нового (одномерного) массива типа double  элементами, полученными в соответствии с шагом два из индивидуального задания;
  •  вывод результатов (оба массива).

Программа должна выводить ошибки, если преобразование или заполнение массивов невозможно.

При создании одномерного динамического массива используется оператор new и удаляется он перед концом программы с помощью оператора delete.

Таблица 1.1 – Индивидуальные задания

Номер студента в списке

Преобразование исходного массива (шаг один)

Заполнение нового массива преобразованными элементами исходного массива (шаг два). Результир. массив должен содержать:

Количество строк m

Количество столбцов n

1

Удвоить нечетные элементы

Квадратные корни минимальных положительных элементов строк

4

3

2

Четные элементы заменить их квадратами

Кубические корни минимальных элементов столбцов

3

5

3

Нулевые элементы заменить на единицы

Натуральные логарифмы максимальных положительных элементов строк

3

4

4

Удвоить четные элементы

Натуральные логарифмы минимальных положительных элементов столбцов

4

5

5

Все элементы заменить на их модули

Минимальные элементы столбцов

5

4

6

Утроить четные элементы

Кубические корни диагональных элементов

3

3


7

Все положительные элементы заменить их десятичные логарифмы

Суммы отрицательных элементов столбцов

4

5

8

Все отрицательные элементы заменить на их квадраты

Квадратные корни диагональных элементов

4

4

9

Все положительные элементы заменить на их натуральные логарифмы

Произведение отрицательных элементов строк

5

4

10

Все положительные элементы заменить на их квадратные корни

Максимальные положительные элементы строк

3

5

11

Удвоить положительные четные элементы

Кубические корни максимальных элементов столбцов

5

4

12

Утроить отрицательные нечетные элементы

Квадратные корни минимальных положительных элементов столбцов

3

4

13

Удвоить отрицательные нечетные элементы

Сумму десятичных логарифмов положительных элементов строк

4

3

14

Утроить положительные четные элементы

Частное от деления максимальных положительных элементов столбцов на их десятичные логарифмы

3

5

Чтобы использовать стандартные математические функции вам необходимо подключить заголовочный файл cmath. В таблице 1.2  представлены некоторые используемые функции.

Таблица 1.2 – Используемые функции

double sqrt(double x);

Берет квадратный корень положительного числа

double pow(double x, double y);

Возводит x в степень y

double log(double x);

Вычисляет натуральный логарифм

double log10(double x);

Вычисляет десятичный логарифм.

int abs(int x);

Возвращает модуль целого числа

double fabs(double x);

Возвращает модуль вещественного числа

double sin(double x);

Вычисляет синус числа

double cos(double x);

Вычисляет косинус числа

double atan(double x);

Вычисляет тангенс числа

2 Теоретические сведения

2.1Массивы

Массивы относятся к так называемым сложным, или составным типам данных. Массив - это структура данных, состоящая из элементов одного типа. В отличие от других структур данных (например, списков), элементы массивов всегда последовательно расположены в памяти.

При объявлении массива после идентификатора в квадратных скобках задается константа (в частности именованная или константное выражение) - число элементов массива:

int a[5];        // Массив из пяти элементов типа int

const int n = 5;

double a1[n];    // Массив из пяти элементов типа double 

Число элементов массива нельзя задавать переменной или неконстантным выражением. Массив может инициализироваться списком значений в фигурных скобках:

int b[4] = {1, 2, 3, 4};

При наличии списка инициализации, охватывающего все элементы массива, можно не указывать число элементов массива, оно будет определено компилятором:

int c[] = {1, 2, 3}; // Массив из трех элементов типа int 

Если размерность массива больше числа значений в списке, то не инициализированные явно элементы массива будут установлены в 0 (значение по умолчанию). Если размерность массива меньше числа значений в списке, возникнет ошибка компиляции.

Один массив не может инициализироваться другим массивом и не может быть присвоен другому массиву. Чтобы скопировать один массив в другой, необходимо скопировать каждый элемент по очереди в цикле.

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

2.2 Многомерные массивы

Массивы с размерностью 2 и более рассматриваются как массивы массивов и для каждого измерения указывается число элементов:

double aa[2][2] = {1, 2, 3, 4}; // Матрица 2 * 2

То же самое, но более наглядно:

double aa[2][2] = {{1, 2},

                  {3, 4}};

Первая размерность - это размерность по строкам, а вторая - по столбцам. При инициализации списка значений вторая и последующие размерности должны указываться явно.

Для индексирования в многомерном массиве требуется пара скобок для каждого измерения:

int i = 0, j = 1;

aa[i][j] = i + j;

Элементы многомерных массивов в памяти выстраиваются в одномерную структуру (массив), в которой в начале стоят элементы первой строки, потом второй и т.д.

3 Порядок выполнения работы

1. Разработать алгоритм для решения поставленной задачи.

2. Разработать программу для решения поставленной задачи (использовать условные операторы и операторы цикла).

3. Проверить работоспособность программы на тестовых данных.

4. Сохранить результаты работы. Оформить отчет по лабораторной работе.

Содержание отчета:

  1.  Титульный лист.
  2.  Название лабораторной работы.
  3.  Цель лабораторной работы.
  4.  Ход выполнения работы (включить алгоритм решения задачи; программный код; пример использования программы).
  5.  Выводы по проделанной работе c описанием ошибок, с которыми Вы столкнулись при выполнении лабораторной работы.


 

А также другие работы, которые могут Вас заинтересовать

73410. Особенности драматического сюжета 38 KB
  Экспозиция в повествовательном произведении - представление того что произошло до начала действия. Это происходит по ходу действия. Рассеянная экспозиция - это когда обстоятельства существующие для пониманию действия раскрываются в беседах мыслях персонажей может быть обрисована одним персонажем.
73411. Лирическое произведение. Особенности его структуры 30.5 KB
  Поэзия, которая пелась под лиру – лирика. Лирика как термин утверждается на рубеже 18-19 вв. Выделение лирики оформляли немецкие философы, прежде всего Гегель. Говорил о лирике и Аристотель, но термина этого не употреблял.
73412. Мир и события в лирике. «Лирический сюжет» 28 KB
  Хотя есть лирические стихотворения полностью лишенные внешних событий. Там описаны события внутреннего мира размышления; поэтому нет повода для внешних событий. Лирический сюжет Это не цепь жизненных событий это развитие мысли переживания которое дается в стихотворении.
73413. Лирический субъект 43.5 KB
  Начиная с эпохи романтизма когда лирика получила почетное место в системе родов сформировалась идея о том что лирический субъект если не равен автору то чрезвычайно к нему близок. Лирический субъект ≠ автору.
73414. Жанр и жанровые системы в литературе традиционного типа 38 KB
  Прозаические жанры находились на периферии человеческого сознания. Жанровые каноны Все жанры средневековой и древней литературы а также эпохи Возрождения образовывали жанровую систему которая членилась на подсистему: Самым главным признаком была иерархия жанров.
73415. Пространство и время в литературе 47 KB
  Пространство и время в литературе. Реальное время - это время за которое читается книга. Изображаемое время время в произведении. Были попытки сблизить время изображаемое и реальное.
73417. Повествование и его композиция (композиционно-речевые формы) 31 KB
  Организация повествования возникла давно на Западе. Она включает в себя: структуру повествовательного текста фигуру которая является источником повествования Повествование весь текст повествовательного произведения; весь текст за вычетом прямых речей.
73418. Образ повествователя и его историческая трансформация 41.5 KB
  Образ автора - автор создает повествователя который похож на автора. Повествователь Находится за пределами изображаемого мира Близок к автору По речевому строю По восприятию Близок к образу автора Главный признак повествователя: Вне изображаемого мира в отличие от рассказчика...