4283

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

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

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

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

Украинкский

2012-11-15

70.5 KB

23 чел.

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

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 описанием ошибок, с которыми Вы столкнулись при выполнении лабораторной работы.


 

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

33699. Разбои и грабежи 14.7 KB
  Кроме того разбои и грабежи часто совершаются группами на базе которых складываются особо опасные преступные формирования совершающие бандитские нападения вымогательство и т. Грабежи и разбойные нападения направленные на завладение государственным имуществом или имуществом коммерческих структур на хранилища денежных средств. Среди способов разбоев и грабежей можно выделить следующие 1 нападения на открытой местности либо в помещении совершаемые с использованием фактора внезапности без применения насилия рывки сумок шапок денег у...
33700. Криминалистическая характеристика преступлений 11.16 KB
  Открытый характер и дерзость совершения этих преступлений то впечатление которое они производят на потерпевших и очевидцев обусловливают значительный общественный резонанс чему способствует и относительно низкая раскрываемость грабежей и разбоев подчас групповой характер этих преступлений.
33701. КРИМИНАЛИСТИЧЕСКАЯ ХАРАКТЕРИСТИКА МОШЕННИЧЕСТВА 12.34 KB
  При мошенничестве подлежат установлению следующие обстоятельства:1имело ли место мошенничество; 2 место время условия способ совершения мошенничества; кто был очевидцем преступления; 3 наличие преступного умысла; 4 предмет мошенничества какая сумма денег была незаконно получена мошенником; 5 объект посягательства государственная или общественная организация коммерческая структура частное лицо; 6 данные о личности преступника место работы трудовая характеристика...
33702. КРИМИНАЛИСТИЧЕСКАЯ ХАРАКТЕРИСТИКА УБИЙСТВ 12.38 KB
  В зависимости от объема и характера первичной информации имеющейся в распоряжении следователя на момент возбуждения уголовного дела все убийства могут быть разделены на две группы: 1так называемые очевидные убийства факт совершения которых не вызывает сомнения и к началу расследования которых известно лицо совершившее это преступление; 2убийства совершенные в условиях неочевидности. Обстоятельства подлежащие доказыванию по делам об убийствах: 1 факт убийства; 2 место время и способ...
33703. Особенности расследования убийств при обнаружении частей расчлененного трупа 12.37 KB
  Особенности расследования убийств при обнаружении частей расчлененного трупа. При обнаружении частей расчлененного трупа перед следователем стоит задача найти все части тела убитого установить его личность и выявить убийцу. Иногда части расчлененного трупа отправляются багажом по железной дороге в различные пункты. При обнаружении нескольких или всех частей расчлененного трупа путем судебномедицинской экспертизы требуется установить: 1 являются ли обнаруженные части трупа частями тела человека; 2 принадлежат ли они одному трупу; 3 пол...
33704. Особенности расследования убийств, замаскированных под самоубийство 12.06 KB
  Особенности расследования убийств замаскированных под самоубийство Неотложными следственными действиями в делах связанных с инсценировкой самоубийства являются осмотр места происшествия и трупа допрос заявителя и лиц близко знавших погибшего освидетельствование подозреваемого обыск и выемка а также проведение судебномедицинской экспертизы в тех случаях когда судебномедицинское исследование трупа не проводилось до возбуждения уголовного дела. Допрос заявителя и лиц хорошо знавших погибшего производится по широкому кругу вопросов...
33705. Особенности расследования убийств при возбуждении дел по факту обнаружения трупа неизвестного с признаками насильственной смерти 12.26 KB
  Особенности расследования убийств при возбуждении дел по факту обнаружения трупа неизвестного с признаками насильственной смерти. При обнаружении трупа неизвестного лица с признаками насильственной смерти будут приняты меры к установлению личности погибшего. При обнаружении трупа неизвестного лица он прежде всего будет предъявлен для опознания тем кто оказался на месте происшествия в момент его осмотра. Если лицо убитого обезображено перед предъявлением для опознания будет произведён туалет трупа.
33706. Поведение с лицами находящимися в бессознательном состоянии 10.87 KB
  100 Устава патрульнопостовой службы милиции общественной безопасности. 18 комментируемого Закона оказание помощи в том числе первой доврачебной гражданам пострадавшим от преступлений административных правонарушений и несчастных случаев а также находящимся в беспомощном или ином состоянии опасном для их жизни опасность для здоровья в данном случае законодателем исключена является одной из служебных обязанностей сотрудника милиции которые ему предписано выполнять независимо от занимаемой должности места нахождения и времени....
33707. Особенности расследования причинения телесных повреждений на бытовой почве 13.34 KB
  Дела об умышленном причинении легкого вреда здоровью возбуждаются только по жалобе потерпевшего которому разъясняется что дело может быть прекращено за примирением сторон. Признаки дающие основание возбудить дело помимо заявления потерпевшего могут усматриваться из представленных им медицинских история болезни справка врача других уличающих виновного документов в том числе магнитофонных записей телефонных переговоров осуществлявшихся потерпевшим по своей инициативе. Расследование начинается как правило с допроса потерпевшего если...