Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №4 С++.doc
Скачиваний:
4
Добавлен:
15.11.2019
Размер:
203.26 Кб
Скачать

10

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Самарский государственный технический университет

Филиал в г. Сызрани

Кафедра электротехники, информатики и компьютерных технологий

СОСТАВЛЕНИЕ И ОТЛАДКА ПРОГРАММ

С МАССИВАМИ

Методические указания к лабораторной работе № 4

по дисциплине "Программирование и основы алгоритмизации"

Составитель: Будин В.И.

Утверждено на заседании кафедры электротехники, информатики и компьютерных технологий 30.01.03

СЫЗРАНЬ 2003

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

СОСТАВЛЕНИЕ И ОТЛАДКА ПРОГРАММ С

МАССИВАМИ

Цель работы - приобретение навыков по составлению программ, использующих массивы, и их отладке в интегрированной среде Borland C++5.02.

Общие сведения о массивах

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

Описание массива имеет следующий формат:

Тип имя_массива [n];

где n – размерность (количество элементов) массива является в общем случае константным выражением.

Такие одномерные массивы часто называют векторами.

Примеры:

int days [12]; //массив days из 12 целых чисел

double mass [50]; //массив mass из 50 вещественных чисел

Для доступа к элементу массива используется имя массива и его индекс в диапазоне от 0 до n-1, заключенный в квадратные скобки:

Имя_массива [индекс]

Примеры:

mass [0] = 37.5; . . . mass [49] = 36.6;

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

Например:

int days [12] = {27,15,11,5,28,9,14,31,21,15,19,27};

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

Например:

int a[5] = {3,12,4}; //a[0]=3, a[1]=12, a[2]=4, a[3]=0, a[4]=0

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

Например:

int numbers [ ] = {1,2,3,4}; //размерность равна четырем

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

Тип имя_массива [размер_1] [размер_2]

С помощью таких массивов обычно отображаются матрицы.

Примеры:

const int k=5, r=3;

long m[k][k]; //матрица целых чисел размерности 5х5

float d[k][r]; //матрица целых чисел размерности 5х3

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

  1. представлением массива из массивов, с заключением каждого массива-строки в свои фигурные скобки (в этом случае размерности можно не указывать);

  2. заданием общего списка элементов в том порядке, в котором они располагаются в памяти.

Например:

int matr [ ][ ] = {{3,-4},{25,0},{-1,4}};

int matr [3][2] = {3,-4,25,0,-1,4};

Как и в одномерных массивах при инициализации двухмерных массивов можно присваивать значения не всем элементам.

Пример. Формирование треугольной матрицы.

int x [5][4] = {{11},{25,4},{-3,18,14},{2,17,9,15}};

что эквивалентно отображению матрицы:

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

#include <iostream.h>

#include <math.h>

void main()

{

const int m=5; //Размерность массива чисел

double z[m]; //Тип чисел массива z

for(int i=0;i<m;i++)

{ cout<<"z["<<i<<"]=";cin>>z[i];} //Ввод элементов массива

for(int i=0;i<m-1;i++) //Начало алгоритма сортировки

{ double a;

for(int j=i+1;j<m;j++)

if (z[j]<z[i]) //'<'- сортировка по возрастанию

{a=z[i];z[i]=z[j];z[j]=a;}

} //Конец алгоритма сортировки

cout<<"z["<<m<<"]={";

for(int i=0;i<m;i++)

cout<<z[i]<<" ";cout<<"}";

}

Манипуляторы и форматирование ввода-вывода

В программах часто требуется осуществлять ввод и вывод данных в определенном формате. Для этого обычно используются так называемые манипуляторы, основные из которых приведены в табл.1. Некоторые из них имеют аргумент (тип). Для использования последних к программе требуется подключить заголовочный файл <iomanip.h>.

С помощью манипуляторов легко управлять представлением выводимой информации. В частности манипулятор setw (int n) удобен при формировании таблиц в циклах.

Например: . . . . . . . . . .

cout<<setprecision (2); //две цифры после запятой

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

cout<<setw (6) <<a[i]<<endl; //ширина поля – 6 цифр

. . . . . . . . . .