Студопедия  
Главная страница | Контакты | Случайная страница

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

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

Читайте также:
  1. RAID-массивы
  2. Глава V Двумерные массивы
  3. Двумерные динамические массивы
  4. Двумерные массивы
  5. Двумерные массивы
  6. Двумерные массивы
  7. Двумерные массивы
  8. Двухмерные массивы
  9. Двухмерные массивы
  10. Динамические массивы

ГЛАВА 6. МАССИВЫ

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

Одномерные массивы

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

· обработка массивов

Двумерные массивы

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

· обработка массивов

Массивы как параметры функций

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

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

Массив представляет собой набор однотипных данных, имеющих общее имя (имя массива) и различающихся местоположением в массиве.

В С++ массив не является стандартным типом данных. Напротив, он сам имеет тип: int, char, float, double и т.д. Допускается создавать массивы массивов, указателей, структур и других данных.

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

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

int a[10]; // одномерный массив из 10 элементов

int b[3][4]; // двумерный массив из 3 строк и 4 столбцов

const int n = 10;

int a[n]; // размер массива задан константой

Размеры при объявлении массива предпочтительнее задавать с помощью именованных констант.

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

Одномерные массивы

Одномерный массив представляет собой совокупность однотипных элементов, доступ к которым определяется одним индексом. Все элементы массива сохраняются в памяти последовательно, первый элемент имеет нулевой индекс (далее 1, 2, и т.д.). Индекс – это порядковый номер элемента в массиве.

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

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

где тип_элементов – допустимый в С++ тип элементов массива;

имя_массива – идентификатор, задаваемый по тем же правилам, что и имена обычных переменных;

размер_массива это количество элементов массива.

Примеры объявления одномерных массивов различных типов:

int a[10];//массив из 10 элементов типа int

float array[3];//массив из 3 элементов типа float

char mas[40]; // массив из 40 элементов типа char

Следует отметить, что использование неименованных констант при объявлении массива нежелательно.

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

intmaxY, maxZ, ar[10], mas[5];

При объявлении массивов необходимо помнить, что индекс первого элемента всегда равен нулю. Допустимыми считаются значения индексов, находящиеся в диапазоне от 0 до размер_массива - 1. Например, объявление

int mas[10];

предполагает наличие десяти индексированных переменных:

mas[0] mas[1]... mas[9]

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

Инициализация одномерных массивов

Инициализация массива означает присвоение начальных значений его элементам при объявлении.

Инициализация элементов массива осуществляется указанием его начальных значений в фигурных скобках:

int mas[5] = {1, -5, 10, 243, -58};

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

int mas[10] = {1, 2, 3, 4, 5};

создаёт массив из 10 элементов целого типа, первые 5 из которых проинициализированы указанными значениями, а остальные – нулевыми. Этим можно воспользоваться для инициализации элементов массива нулевыми значениями:

int mas[20] = {0};

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

Во время инициализации можно не задавать количество элементов массива:

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

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

const int n = (sizeof (mas) / sizeof (mas[0])); где

sizeof (mas) – количество байтов, занимаемое массивом mas, а

sizeof (mas[0]) – количество байтов, занимаемое одним элементом.

При необходимости можно задать массив констант следующим образом:

const int array[] = {5, 4, 3, 2, 1};

Тогда ни один из элементов массива array изменить будет нельзя.

Обработка одномерных массивов

В С++ работать с массивами можно только поэлементно. Если mas является массивом размера n, то отдельный элемент обозначается с помощью имени массива, за которым следует индекс требуемого элемента, например, mas[i]. Значение индекса может изменяться от 0 до n-1. В качестве номера элемента массива могут использоваться:

· константа – mas[3];

· переменная – mas[i];

· выражение – mas[3 * (i+2)];

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

· присваивать элементу массива значение

mas[1] = 5;

· использовать элементы массивов в выражениях

i = 4; y = 2 * mas[i] * sin(mas[5]);

· вводить и выводить элементы массивов

cin>>mas[5]; cout<<mas[k];

Для организации ввода/вывода массива следует использовать цикл, осуществляющий ввод/вывод каждого элемента массива (поскольку в С++ работать с массивами можно только поэлементно). Доступ к элементам одномерного массива удобнее всего осуществлять, пользуясь циклом for.

Например, ввод массива можно выполнить следующим образом:

const int n = 10; // именованная константа

float mas[n]; // объявлен массив из 10 элементов

for(int i = 0; i < n; i++){ // цикл для ввода массива

cin>>mas[i];

}

В приведенном выше примере поэлементно вводится массив mas типа float размера n. Параметр оператора цикла for переменная i изменяется от 0 до n-1.

Вывод массива выполняется аналогичным образом:

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

cout<<mas[i]<< ' ';

// Пример 6.1. Ввести одномерный массив. Найти сумму элементов.

#include <iostream>

using namespace std;

const int DIM = 50;

int main() {

int a[DIM], n;

cout<<"Vvedi razmer massiva: "; cin>>n;

cout<<"Vvedi massiv "<<endl;

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

cin>>a[i];

int sum = 0;

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

sum = sum + a[i];

cout<<"Summa all elements = "<<sum<<endl;

system("pause");

}

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

for(int i = 0; i < n; i++) mas[i] = i;

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

// Пример 6.2. Заполнение массива случайным образом и вывод

// его на экран. Использование функций rand(), srand(n).

#include <iostream>

#include <stdlib.h>

const int DIM = 50;

using namespace std;

int main() {

int a[DIM], n;

while(true){

system("cls");

cout<<"Vvedi n:"; cin >> n;

if(n > 1 && n < DIM) break;

cout<<" Nocorrect n\n";

}

srand (n); // для получения разных послед. чисел

cout<<"\n\t 1___Massiv a(n)\n";

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

a[i] = rand () % 6 + 1; // числа от 1 до 6

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

cout<<a[i] << ' ';

cout<<"\n\t 2___ Massiv a(n)\n";

for(int i = 1; i <= 25; i++){ // вывод по 5 элементов в строку

cout.width(3);

cout<< rand () % 6 + 1;

if(i % 5 == 0)cout<<endl;

}

cout<<"\n\t 3___Massiv a(n)\n";

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

a[i] = rand (); // числа от 0 до RAND_MAX

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

cout<<a[i]<< ' ';

cout<<endl;

system("pause");

}




Дата добавления: 2015-01-29; просмотров: 75 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.013 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав