русс | укр

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

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

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

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


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

Теоретическая часть


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


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

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

float Salary[20];

где float – тип данных;

Salary – имя массива;

[20] – количество элементов массива.

Встретив подобную запись, компилятор зарезервирует в памяти место размером 20x6=120 байт (6- размер переменной типа float).

Адресация элементов массива производится по сдвигу относительно первого элемента, сохраненного в имени массива. Так к первому элементу можно обратиться следующим образом: Salary[0], ко второму – Salary[1], и.т.д.

Если объявлен массив размера N, то к его элементам можно обращаться, указывая индекс в диапазоне от 0 до (N-1).

Пример программы, работающей с массивом данных, приведен ниже:

#include "stdafx.h"

#include "iostream"

using namespace std;

int main(int argc, char* argv[])

{

int a[4];

 

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

{

cout<<"Value["<<i+1<<"]:";

cin>>a[i];

}

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

cout<<i<<":"<<a[i]<<"\n";

return 0;

}

 

Результат работы программы представлен на рисунке 2.1.

Рисунок 2.1 –Результат работы программы

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

Пример программы с подобной ошибкой представлен ниже:



#include "stdafx.h"

#include "iostream"

using namespace std;

int main(int argc, char* argv[])

{

int a[4];

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

a[i]=i;

int summa=0;

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

summa+=a[i];

cout<<"summa="<<summa<<"\n";

return 0;

}

Результат выполнения программы представлен на рисунке 2.2.

Рисунок 2.2 – Результат работы программы

Объясните, почему получился такой результат.

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

float Salary [3]={20000, (15750,35), 7500};

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

Обратите внимание, что во втором случае компилятор сам определит размер массива.

Язык С++ позволяет создавать многомерные массивы, например, двухмерные:

short int Board [8][8];

Если нужно узнать, находится ли шахматная фигура в позиции А2, то нужно будет обратиться к элементу двумерного массива:

Board [0][1];

Ниже приведены примеры инициализации двумерных массивов:

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

intA[3][3]={{1,2,3},

{4,5,6},

{7,8,9}};

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

char str[]={‘H’, ‘e’, ‘l’, ‘l’,’o’,’ ‘, ‘ W‘, ‘o’,’l’,’d’,’\0’};

или то же самое:

char str[]=”Hello World”;

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

На следующем листинге представлен пример использования строкового массива.

Листинг 2.3.- Работа со строковыми массивами

#include "stdafx.h"

#include "iostream"

using namespace std;

int main(int argc, char* argv[])

{

char buffer[20];

cout<<"Enter the string:";

cin>>buffer;

cout<<"Here the string:\""<<buffer<<"\"\n";

return 0;

}

 

Результат выполнения программы представлен на рисунке 2.3.

Рисунок 2.3 –Результат выполнения программы

Как видно, при выполнении программы возникает ряд проблем:

- если пользователь введет строку, содержащую более 19 символов, то оператор cin введет их за пределы массивы;

- оператор cin воспринимает пробел, как окончание строки.

Эти проблемы позволяет решить метод get(), применяемый вместе с оператором cin: cin.get(). Для выполнения данного метода необходимо задать: буфер ввода, максимальное число символов, разделительный символ прерывания ввода.

Листинг 2.4.- Работа со строковыми массивами

#include "stdafx.h"

#include "iostream"

using namespace std;

int main(int argc, char* argv[])

{

char buffer[20];

cout<<"Enter the string:";

cin.get(buffer,19);

cout<<"Here the string:\""<<buffer<<"\"\n";

return 0;

}

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

#include "stdafx.h"

#include "iostream"

using namespace std;

 

int main(int argc, char* argv[])

{

char names[20][80];

char ch='y';

int ind=0;

while ((ch=='y'||ch=='Y')&&ind<20)

{

cout<<"Enter name:";

cin.get(names[ind],19);

ind++;

cout<<"Continue?:";

cin>>ch;

cin.ignore();//убираем из потока символ «возврата строки»

}

for (int j=0;j<ind;j++)

cout<<names[j]<<"\n";

return 0;

}

 

 



<== предыдущая лекция | следующая лекция ==>
Теоретическая часть | Постановка задачи


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


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

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

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


 


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

 
 

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

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