Разработка программы обработки массива

с применением функций языка С\С++.

 

Цель работы:

 

1. Овладение практическими навыками работами с составными данными: массивами, строками и функциями языка С\С++;

2. Ознакомление с алгоритмами их обработки.

 

Используемое оборудование:

- персональная ЭВМ, совместимая с IBM PC.

 

Используемое программное обеспечение:

- операционная система Windows;

- интегрированная среда программирования Microsoft Visual C++ 5.0 (ИСП Microsoft Visual C++ 5.0).

 

Задание по работе

 

1.1. Загрузить ИСП Microsoft Visual C++ 5.0;

1.2. Изучить, массивы и строки ИСП Microsoft Visual C++ 5.0;

1.3. Выполнить задание преподавателя;

1.4. Записать протокол работы с интегрированной средой.

 

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

 

2.1. Запустить Microsoft Visual C++ 5.0;

2.2. Создать *.cpp файл в рабочем каталоге;

2.3. Выполнить задание преподавателя и записать протокол работы;

2.4. Оформить в виде: лабораторная работа №2 и лабораторная работа №3 в одной программе. Программа должна предоставлять выбор лабораторных работ №2, №3 и выход;

2.5. Закончить работу с Microsoft Visual C++ 5.0 и запустить программу.

 

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

 

3.1. Наименование лабораторной работы.

3.2. Цель работы.

3.3. Теоретическую часть.

3.4. Алгоритм программы.

3.5. Текст программы.

3.6. Вывод.

 

Краткое описание

Массивы

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

При объявлении массива необходимо указать тип элемента, имя и количество элементов (ячеек).

тип имя_переменной[размер]

Пример:

int arr1[10]; // массив из 10 ячеек типа int

double arr2[50]; // массив из 50 ячеек типа double

Для доступа к i-ому элементу используют запись: vals[i] где i может принимать значение от 0 до N-1, N-число элементов.

Как и другие переменные, массив должен объявляться явно, чтобы компилятор мог выделить память для него. Здесь тип объявляет базовый тип массива, т.е. тип его элементов, а размер определяет, сколько элементов содержится в массиве.

В языке С/С++ массивы могут иметь больше двух размерностей. Максимально допустимое количество размерностей задается компилятором. Общий вид объявления многомерного массива таков.

тип имя_переменной[размер1] [размер2] [размер3]… [размерN]

Пример:

int vals[5][7]; // двумерный массив, размером 5х7

char text[10][25][80]; // трехмерный массив 10 x 25 x 80

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

int a[2][3]; /* представлено в виде матрицы

a[0][0] a[0][1] a[0][2];

a[1][0] a[1][1] a[1][2] */.

Массивы, имеющие больше трех размерностей, используются редко, поскольку они занимают слишком большой объем памяти. Например, четырехмерный массив символов размерностью 10×6×9×4 занимает 2160 байт.

В следующем примере представлен общий способ организации цикла обработки одномерного массива.

Пример:

#include<iostream.h>

void main()

{

int i;

int x[10];

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

{

cout<<"x["<<i<<"]=";

cin>>x[i];

}

}

 

Инициализация массивов

 

Общий вид инициализации массива не отличается от инициализации обычных переменных.

тип_массива имя_массива [размер1]…[размерN] = {список_значений}

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

Инициализация одномерного массива осуществляется так, например:

int vals[10]={1,2,3,4,5,6,7,8,10};

Инициализация двумерного массива может быть выполнена следующим образом:

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

При инициализации массива можно опустить одну или несколько размерностей:

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

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

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

Элементы первой строки получат значения 1 и 2, а второй 3 и 0.

 

Строки

 

Строки представляют собой особый массив символов, заканчивающийся символом с кодом 0. Такой символ имеет представление ’\0’. Инициализацию массива символов можно выполнить путем использования строкового литерала. char stroka[ ] = "привет"; Инициализируется массив символов из 7 элементов, последним элементом (седьмым) будет символ ’\0’, которым завершаются все строковые литералы. Можно использовать традиционную запись, например:

char stroka[ ] = {’п’,’р’,’и’,’в’,’е’,’т’,’\0’};

В том случае, если задается размер массива, а строковый литерал длиннее, чем размер массива, то лишние символы отбрасываются.

Следующее объявление инициализирует переменную stroka как массив, состоящий из семи элементов:

char stroka[5] = "привет";

В переменную stroka попадают первые пять элементов литерала, а символы ’Т’ и ’\0’отбрасываются. Если строка короче, чем размер массива, то оставшиеся элементы массива заполняются символами с кодом 0.

 

Понятие функции

 

Функция – это независимая совокупность объявлений и операторов, обычно предназначенная для решения определенной задачи. Программы на С++ состоят по крайней мере из одной функции main, но могут содержать и больше функций. Различают полное и неполное объявление функции. Полное объявление, или определение, состоит из заголовка, в который входит тип возвращаемого значения, имя, формальные параметры, и тела, заключаемого в фигурные скобки. После закрывающейся фигурной скобки точка с запятой не ставится. При неполном объявлении используется заголовок, после которого стоит точка с запятой. В программе может быть только одно полное объявление и сколько угодно неполных. Последние, как правило, помещаются перед вызовом функции в программе, если определение расположено ниже по тексту, или в другом файле с исходным кодом. При использовании большого количества функций неполные объявления помещают в т.н. “заголовочные“ файлы, которые включаются в начало текста программой директивой препроцессора include. Вызов функции передает управление из вызывающей функции к вызванной. Фактические аргументы, если они есть, передаются по значению в вызванную функцию. При выполнении оператора return в вызванной функции управление и, возможно, возвращаемое значение передаются в вызывающую функцию.

 

Определение функции

 

Общий вид функции выглядит следующим образом.