русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-01-08; просмотров: 480; Нарушение авторских прав


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

Объявление массива выглядит следующим образом:

тип имя_массива[размер]

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

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

float myOwnArray[2]; // массив из 2 вещественных чисел

someType array[15]; // массив из 15 объектов типа someType

При объявлении массива его размер должен быть известен на момент компиляции, например, можно написать так:

const int size = 10;

char arr[size];

Некоторые компиляторы позволяют пропускать модификатор const в таких объявлениях, если значение переменной известно на этапе компиляции. То есть они могут допускать и такие объявления:

int size = 10;

char arr[size];

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

int size;

cin >> size;

char arr[size]; // ошибка: значение size неизвестно на момент компиляции

Доступ к элементам массива осуществляется с помощью индекса – порядкового номера элемента внутри массива. Для этого используется следующий синтаксис:

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

В C++ нумерация массивов всегда начинается с 0. Т.е. первый элемент имеет индекс 0, второй – 1, а последний – n-1, где n – размер массива. Например, заполнение массива случайными числами:

#include <iostream>

#include <time.h>

void main()

{

const short size = 50;

long array[size];

srand(time(NULL));

for (int i = 0; i < size; i++) {



array[i] = rand();

std::cout << array[i] << ' ';

}

}

Здесь показан наиболее часто используемый способ работы с массивами – перебор всех элементов в цикле, где счетчик изменяется от 0 до size-1.

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

Графически одномерный массив, например, a[5], может быть представлен следующим образом:

a[0] a[1] a[2] a[3] a[4]

Массивы могут быть инициализированы сразу при объявлении. При этом начальные значения всех элементов записываются в фигурных скобках через запятую. Например:

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

Здесь объявлен массив из 10 элементов, а инициализируется он 9 значениями. Указанные в {} значения будут присвоены первым 9ти элементам массива. Последний, 10й элемент, которому «не хватило» значения, будет инициализирован нулем.

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

char str[] = {'s', 't', 'r', 'i', 'n', 'g', '\0'};

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

int a[10];

...

cout << a; // массив так на экран не вывести

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

Поэтому выводить массивы нужно поэлементно, то есть:

int a[10];

...

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

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

Пример программы сортировки одномерного массива по возрастанию (методом пузырька):

#include <iostream>

#include <time.h>

using namespace std;

 

const int size = 20; // размер массива

 

void main()

{

int m[size];

int t; // переменная для обмена значениями двух элементов массива

srand(time(NULL));

 

// заполнение массива случайными числами

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

m[i] = rand();

 

// сортировка

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

for (int j = size-1; j > i; j--)

if (m[j-1] > m[j])

{

// меняем значения элементов местами

t = m[j];

m[j] = m[j-1];

m[j-1] = t;

}

 

// вывод массива на экран

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

cout << m[i] << ' ';

 

cout << endl;

system("pause");

}



<== предыдущая лекция | следующая лекция ==>
Оператор безусловного перехода goto | Многомерные массивы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.119 сек.