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


 

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

79162. История и идеология антикультового подхода к сектантству (понятийно-терминологический аппарат, представление о природе сектантства 29.61 KB
  Раз человека вовлекли в секту путем манипуляции его сознания то его можно депрограммировать и вывести из этого состояния. Ливтон считал что люди под влиянием физического насилия способны подвергаться перемене сознания промывание мозгов но впоследствии он переменил свое мнение и стал говорить что это происходит под влиянием психологического воздействия. методы промывания мозгов смена сознания. Сейчас депрограммирование устроено другим образом никого не крадут а предлагают встретиться с консультантом который пытается убедить пациента...
79163. Православный подход к сектантству (понятийно-терминологический аппарат, представление о природе сектантства) 26.9 KB
  в нашем богословии появляется слово секта. Все эти движения с этого времени стали именовать сектами. Они оба сходятся в одном слово секта было заимствовано в значении ереси.
79166. Сциентистский дискурс философии техники. Техника классической, неклассической и постнеклассической науки. Технознание в концепции критического рационализма 16.66 KB
  Техника классической неклассической и постнеклассической науки. Сциентистский дискурс философии техники Научная техника означала на первых порах лишь применение к технике естествознания. Итак техника стала научной. Когда эту задачу начали выполнять сознательно и возникла новейшая научная техника.
79167. Научная и техническая теория в их соотношении: философско-методологические аспекты. Системно-интегративные тенденции современной технической теории 33.5 KB
  Системноинтегративные тенденции современной технической теории. В структуре развитой естественнонаучной теории наряду с концептуальным и математическим аппаратом важную роль играют теоретические схемы образующие своеобразный внутренний скелет теории. Теоретические схемы выражают особое видение мира под определенным углом зрения заданным в данной теории. Специфика технической теории состоит в том что она ориентирована на конструирование технических систем.
79169. Философско-методологические аспекты технической теории. Дисциплинарная организация технических наук. Философия техники и философия производства в их соотношении 28.5 KB
  Философскометодологические аспекты технической теории. В структуре развитой технической теории наряду с концептуальным и математическим аппаратом важную роль играют теоретические схемы образующие внутренний скелет теории. В технической теории графические изображения играют более существенную роль чем в физической теории. Именно в инженерной деятельности проверяется адекватность теоретических выводов технической теории и черпается новый эмпирический материал.
79170. Научная и техническая революция: общее и особенное. Социокультурные аспекты технической революции 36 KB
  Научная революция связана с перестройкой исследовательских стратегий задаваемых основаниями науки. Пока общие черты системной организации изучаемых объектов учтены в картине мира а методы освоения этих объектов соответствуют сложившимся идеалам и нормам исследования основания науки обеспечивают рост знания. В этой ситуации рост научного знания предполагает перестройку оснований науки. Научная революция может осуществляться: как революция связанная с трансформацией специальной картины мира без существенных изменений идеалов и норм...