Обработка одномерных и двумерных числовых массивов данных на алгоритмическом языке высокого уровня С++

Сущность понятия массивов, программирование задач, связанных с их формированием. Значение индекса одномерного массива, ввод и вывод элементов. Составление алгоритмов и программ обработки числовых одномерных и двумерных массивов на алгоритмическом языке.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 20.01.2018
Размер файла 217,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.ru/

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

Тема:

Обработка одномерных и двумерных числовых массивов данных на алгоритмическом языке высокого уровня С++

Цель работы

Практика составления алгоритмов и программ обработки числовых одномерных и двумерных массивов на алгоритмическом языке высокого уровня С++.

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

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

Конечная именованная последовательность однотипных величин называется массивом.

Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность):

floata [10]; // описание массива из 10 вещественных чисел

Элементы массива нумеруются с нуля. При описании массива используются те же модификаторы (класс памяти, const и инициализатор), что и для простых переменных. Инициализирующие значения для массивов записываются в фигурных скобках. Значения элементам присваиваются по порядку. Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не указаны, обнуляются:

intb[5] = {3, 2, 1}; // b[0] = 3, b[1] = -2, b[2] = l, b[3] = 0, b[4] = 0

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

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

Размерность может быть опущена также в списке формальных параметров.

Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках.

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

Динамические массивы создают с помощью операции new, при этом необходимо указать тип и размерность, например:

int n = 100;

float *р = new float [n];

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

Преимущество динамических массивов состоит в том, что размерность может быть переменной, то есть объем памяти, выделяемой под массив, определяется на этапе выполнения программы. Доступ к элементам динамического массива осуществляется точно так же, как к статическим, например, к элементу номер 5 приведенного выше массива можно обратиться как р[5] или *(р+5).

Альтернативный способ создания динамического массива -- использование функции mallос библиотеки С:

int n = 100;

float *q = (float *) malloc(n * sizeof(float));

Операция преобразования типа, записанная перед обращением к функции mallос, требуется потому, что функция возвращает значение указателятипа void*, а инициализируется указатель на float.

Память, зарезервированная под динамический массив с помощью new [], должна освобождаться оператором delete [], а память, выделенная функцией malloc - посредством функции free, например:

delete [] p; free (q);

При несоответствии способов выделения и освобождения памяти результат неопределен. Размерность массива в операции delete не указывается, но квадратные скобки обязательны.

Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор

intmatr [6][8];

задает описание двумерного массива или матрицы MATR из 6 строк и 8 столбцов. В памяти такой массив располагается в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс. Для доступа к элементу многомерного массива указываются все его индексы, например, matr[i][j], или более экзотическим способом:

*(matr[i]+j) или *(*(matr+i)+j). Это возможно, поскольку matr[i] является адресом начала i-й строки массива.

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

intmass2 [][2] = { {1, 1}, {0, 2}, {1, 0} };

intmass2 [3][2] = {1, 1, 0, 2, 1, 0};

Для создания динамического многомерного массива необходимо указать в операции new все его размерности (самая левая размерность может быть переменной), например:

intnstr = 5;

int ** m = (int **) new int [nstr][10];

Более универсальный и безопасный способ выделения памяти под двумерный массив, когда обе его размерности задаются на этапе выполнения программы, приведен ниже:

intnstr, nstb;

cout «"Введите количество строк и столбцов:”;

cin » nstr » nstb;

int **a = new int *[nstr]; // 1

for(int i = 0; i<nstr; i++) // 2

a[i] = new int [nstb];.....// 3

В операторе 1 объявляется переменная типа «указатель на указатель на int» и выделяется память под массив указателей на строки массива (количество строк -- nstr). В операторе 2 организуется цикл для выделения памяти иод каждую строку месива. В операторе 3 каждому элементу массива указателей на строки присваивается адрес начала участка памяти, выделенного под строку двумерного массива. Каждая строка состоит из nstb элементов типа int. программа числовой массив алгоритмический

Освобождение памяти из-под массива с любым количеством измерений выполняется с помощью операции delete []. Указатель на константуудалить нельзя.

Пример

Ввести таблицу A числовых данных, состоящую из 4 строк и 5 столбцов, и переменную D

11.782

-0.234

197.342

254.132

0.597

-8.301

116.539

-11.362

0.231

0.226

32.874

23.453

21.239

216.433

-34.54

43.329

65.009

25.371

-0.418

34.109

Cоставить алгоритм и программу, которые позволят вычислить суммы элементов строк, напечатать номер строки и значения элементов ее, если сумма элементов строки имеет значение, большее значения переменной D.

Блок-схема алгоритма представлена на рис. 1.

Решение одного варианта

Вычислить элементы матрицы А по следующему условию:

n = m = 5

Определить число элементов матрицы A, значения которых лежат в интервале (c, b]. Напечатать это число. Значения c, b задаются по вводу.

Ниже приведена программа на С++ решения этой задачи.

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

// Работа с матрицами

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

int main ()

{

intconst n=5,m=5;

inti,j,k;

doublec,b,a[n][m];

cout<<"\nVveditec,b\n";

cin>>c>>b;

for(i=0; i<=n; i++)

for(j=0; j<=m; j++)

if (i>j) a[i][j]= 5.7*i - fabs(j-3); else a[i][j]= pow((j+1.93),3)-i;

cout<<"\n SformirovannayaMatrisa A\n";

for(i=0; i<=n; i++){

for(j=0; j<=m; j++)

cout<<setw(4)<<a[i][j]<<" ";

cout<<endl; }

k = 0;

for(i=0; i<=n; i++){

for(j=0; j<=m; j++)

if ((a[i][j]>=c) && (a[i][j]<=b)) k=k+1;}

if (k=0) cout<<"\nTakih el-ovnet";elsecout<<"\nk="<<k;

return 0; }

Контрольные вопросы

1. Что такое массив?

2. Какие значения может принимать индекс одномерного массива?

3. Как осуществляется ввод и вывод элементов одномерного массива?

4. В чём особенность программирования задач, связанных с формированием массивов, удовлетворяющих заданному условию?

Ответы на вопросы:

1. Конечная именованная последовательность однотипных величин называется массивом.

2. Если с группой величин одинакового типа требуется выполнять однообразные действия, им дают одно имя, а различают по порядковому номеру.

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

Задана последовательность X = (x1, x2, …, x10).

Сформировать из неё одномерный массив Y, состоящий из ненулевых элементов Xi, имеющих чётные индексы. Полученный массив напечатать в строчку.

X = {92.34, 0.51, -7.53, 0.0, 0.58, 4.3, 7.0, 9.5, 0.34, 2}.

n = 5, m = 3.

Вычислить среднее значение элементов матрицы A, определить и напечатать число элементов в строках матрицы, имеющих четные номера, значение которых превышает найденное среднее значение.

Рис. 1

Размещено на Allbest.ru

...

Подобные документы

  • Понятие массива и правила описания массивов в программах на языке С. Рассмотрение основных алгоритмов обработки одномерных массивов. Примеры программ на языке С для всех рассмотренных алгоритмов. Примеры решения задач по обработке одномерных массивов.

    учебное пособие [1,1 M], добавлен 22.02.2011

  • Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.

    лабораторная работа [12,8 K], добавлен 02.12.2014

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

  • Ознакомление с основными понятиями и организацией ввода-вывода, обработкой массивов. Описание одномерных и двумерных массивов. Описание строк и операции с ними. Комбинированный тип данных - записи. Характеристика записей, использующих вариантную часть.

    реферат [84,6 K], добавлен 09.02.2011

  • Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.

    контрольная работа [138,9 K], добавлен 05.06.2010

  • Обработка сложных структур данных как одна из наиболее распространенных возможностей применения языка программирования С++. Преимущества использования подпрограмм. Передача параметров, одномерных и двумерных массивов, функции и их возврат в функцию.

    курсовая работа [1,1 M], добавлен 24.11.2013

  • Иерархическая структура производного типа данных в языке Паскаль. Определение массива как упорядоченного набора фиксированного количества некоторых значений. Сортировка одномерных и двумерных массивов методом простых обменов, простым выбором и включением.

    курсовая работа [48,8 K], добавлен 27.11.2010

  • Изучение основных конструкций и способов написания программ на языке Паскаль. Обзор принципов работы и интерфейса написанной программы. Обработка и модификация двумерных массивов. Файловые структуры данных. Текстовые файлы. Элементы машинной графики.

    курсовая работа [761,7 K], добавлен 11.03.2015

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

    лабораторная работа [14,2 K], добавлен 03.10.2010

  • Понятие вложенных циклов, одномерных и двумерных массивов в программировании. Матрицы и основные действия с ними. Иерархические записи, понятие дерева. Операции с двоичными деревьями, рекурсия, включение и удаление узла. Алгоритм поиска по дереву.

    отчет по практике [507,1 K], добавлен 27.12.2011

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

    курсовая работа [1,0 M], добавлен 02.06.2017

  • Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.

    контрольная работа [1,3 M], добавлен 20.12.2012

  • Изучение понятия и основных видов массивов. Ввод массива с клавиатуры и вывод на экран. Сортировка массивов. Метод простых обменов (пузырьковая сортировка). Сортировка простым выбором и простым включением. Решение задач с использованием массивов Паскаля.

    курсовая работа [82,1 K], добавлен 18.03.2013

  • Программирование вычислительных процессов на языке FORTRAN для обеспечения взаимодействия системы "Человек-Производство-Природа". Использование массивов для составления циклов подсчета уровня экологического загрязнения, затрат на переработку отходов.

    курсовая работа [2,0 M], добавлен 30.05.2014

  • Массив как пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Расположение в последовательных ячейках памяти, обозначение именем массива и индексом, инициализация. Передача одномерных и двумерных массивов в функцию.

    лабораторная работа [32,6 K], добавлен 06.07.2009

  • Широкое использование компьютерных и информационных технологий. Концепции типов данных. Алгоритмы сортировки одномерных массивов. Описание двумерного массива Паскаля. Методы доступа к элементам массивов. Индексные, динамические и гетерогенные массивы.

    курсовая работа [66,3 K], добавлен 07.12.2010

  • Изучение элементов языка С++, программирование разветвлений и циклов с использованием операторов условного и перехода. Обработка одномерных массивов. Поиск максимального элемента массива с заданной размерностью. Листинги программы и результатов.

    курсовая работа [647,7 K], добавлен 05.02.2013

  • Составление программы для нахождения минимального и максимального элементов массива. Программа вычисления корней квадратных алгебраических уравнений. Ранжирование одномерного массива по заданному признаку. Формирование массивов с помощью функции random.

    контрольная работа [1,0 M], добавлен 30.04.2013

  • Заполнение массива из целых чисел с присвоением элементам разных значений. Варианты программы с использованием различных операторов организации циклов. Определение квадрата максимального из четных элементов массива и общего числа нулевых элементов.

    лабораторная работа [259,3 K], добавлен 14.05.2011

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

    лабораторная работа [12,8 K], добавлен 09.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.