Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Краткие теоретические сведения. Массив – это конечная именованная последовательность однотипных величин



Читайте также:
  1. ВОПРОС 41. Основные теоретические положения символического интеракционализма. Общая характеристика работы Г. Блумера « Коллективное поведение».
  2. Глава 1. Теоретические аспекты изучения социальных сетей и социального пространства
  3. Д21 Теоретические основы обрезки декоративных растений. Побеги, утолщения и замещения. Сроки и организация работ.
  4. Защита учебной практики ПМ 03 Классное руководство МДК03.01 Теоретические и методические основы деятельности классного руководителя
  5. Имена (персоналии) и краткие биографические сведения
  6. Историки первой трети XIX века: краткие сведения из научных биографий
  7. Концептуальные и теоретические основы

Массив – это конечная именованная последовательность однотипных величин. При описании одномерного массива в С++ используется конструкция:

тип имя_массива [количество элементов];

int a[10], line[33];

float mas[5];

Нумерация элементов любого массива в языке С++ всегда начинается с 0, т.е. индексы элементов меняется от 0 до N-1, где N – количество значений индекса.

В соответствии с с синтаксисом Си++ в языке существуют только одномерные массивы, элементами которых могут быть также массивы. Поэтому двумерный массив определяется как массив массивов. Таким образом, описание float Z[13][6] определяет одномерный массив Z из 13 элементов-массивов, каждый из которых состоит из 6 элементов типа float. Элементы этого массива можно перечислить так: Z[0][0], Z[0][1], Z[0][2], …, Z[0][5], Z[1][0], Z[1][1], Z[1][2], …, Z[12][4], Z[12][5].

Транслятор языка Си++ может обрабатывать массивы размерностью до 31. Однако на практике чаще всего используются одномерные и двумерные массивы.

Задание значений элементов массива можно производить:

· с помощью операции присваивания

float dan [3];

int ss [2][3];

dan[0] = 4.02; dan[1] = 6.1; dan[2] =12.03;

ss[0][0] =3.09; ss[0][1] =1.0; ss[0][2] =5.04

· с использованием инициализации

float vektor[5] = {8.1, 6.5, 2.02, 9.9, 1.67}, mas [] = {6.1, 4, 2.8};

int matrix[2][2]={1.2, 1.3, 1.6, 1.5}; f[][] = { {10, 20}, {30,40}, {50,60} };

· ввод значений элементов массива с клавиатуры в цикле

cout<<“Введите значения элементов одномерного массива M“;

for (i=0; i<n; i++) cin>>M[i];

cout<<“Введите значения элементов двумерного массива dv[4][5]“;

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

for (j=0; j<5; j++) cin>>dv[i][j];

· задание значений элементов массива с помощью функции random(int n), предварительно подключив к программе заголовочный файл stdlib.h стандартной библиотеки.

int a[5], i, j;

float b[3][8];

for (i=0; i<5; i++) a[i] = random (50) -25;

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

for (j=0; j<8; j++) b[i][j] = random(30)/1.3 -10.5;

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

 

 

В соответствии с синтаксисом языка Си++ имя массива без индексов является указателем-константой, т.е. адресом его первого элемента (адрес начала массива). Прибавив к имени массива целую величину, можно получить адрес соответствующего элемента. Таким образом, &z[i] и z+i – это две формы определения адреса одного и того же элемента массива, отстоящего на i позиций от его начала. При этом адрес следующего элемента в массиве будет зависеть от типа элементов массива.

Операция индексирования одномерного массива z[i] может быть определена следующей эквивалентной записью *(z+i), обращение к элементам двумерного массива x[i][j] представляется в виде *(x[i]+j) или *(*(x+i)+j).

 

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

· left – вывод значения с левым выравниванием (прижать к левому краю поля);

· right – вывод значения с правым выравниванием (устанавливается по умолчанию);

· showpoint – при выводе вещественных чисел обязательно печатать десятичную точку и следующие за ней нули (даже для вещественного числа, имеющего нулевую дробную часть);

· scientific – для вещественных чисел использовать представление в формате с плавающей точкой, т.е. с указанием порядка и мантиссы;

· fixed – для вещественных чисел использовать представление в формате с фиксированной точкой;

В библиотеке классов ввода-вывода существуют функции flags() и setf() для проверки значений перечисленных флагов, а также для их установки и сбрасывания в исходные состояния. Флаги могут обрабатываться как по отдельности, так и группами, для чего используют дизъюнктивные выражения, в которых флаги связаны побитовой операцией ‘|’ (ИЛИ).

cout.setf (ios::fixed|ios::showpoint|ios::left);

В показанном выше примере устанавливается вывод вещественных чисел с фиксированной десятичной точкой и форматированием по левому краю.

 

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

Манипуляторы с параметрами определены в файле iomanip.h:

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

float x=0.6278654;

cout<<setw(6)<< setprecision(1)<<x

 

 


Дата добавления: 2015-07-10; просмотров: 86 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.007 сек.)