Слайд 1Технологии программирования
Доц. каф. «Медиаменеджмента и медиапроизводства» Евич Л.Н.
Слайд 2Лекция 6. Массивы в C++.
Массив — это структура данных, представленная
в виде группы ячеек одного типа, объединенных под одним единым
именем.
Свойства массивов
в массиве хранятся отдельные значения, которые называются элементами;
все элементы массива должны быть одного типа;
все элементы массива сохраняются в памяти последовательно, и первый элемент имеет нулевое смещение адреса, т.е. нулевой индекс;
имя массива является константой и содержит адрес первого элемента массива.
Имя массива представляет собой константное значение, которое не изменяется в ходе выполнения программы.
Имя массива содержит адрес первого его элемента.
Слайд 3Лекция 6. Массивы в C++.
Инициализация массивов
Массив можно инициализировать одним
из трех способов:
при создании массива - используя инициализацию по
умолчанию (этот метод применяется только для глобальных и статических массивов);
при создании массива - явно указывая начальные константные значения;
в процессе выполнения программы - путем записи данных в массив.
При создании в массив могут быть занесены только константные значения. Впоследствии в массив можно записывать и значения переменных.
Слайд 4Одномерные массивы в С++.
Синтаксис объявления одномерного массива в С++
/*тип данных*/
/*имя одномерного массива*/ [/*размерность одномерного массива*/];
Пример
short a[5];
Индекс представляет собой
смещение адреса по отношению к базовому адресу первого элемента.
Слайд 5Одномерные массивы в С++.
Инициализацию по умолчанию
Глобальные массивы (расположенные вне любой
функции), а также массивы, объявленные статическими внутри функции, по умолчанию
заполняются нулями, если не заданы начальные значения элементов массива.
#define SIZE1 10
int ar1[SIZE1]; /* глобальный массив */
void main() {
#define SIZE2 12
static int ar2[SIZE2]; /* статический массив */
}
Слайд 6Одномерные массивы в С++.
Явная инициализация
int iarray[3] = {-1,0, 1}; /*
при запуске программы осуществляется резервирование ячеек памяти для массива iarray
с одновременной записью значений в эти ячейки */
static float fvar[4] = {1.1314,-0.25,25E0,-.11E1}; /* при инициализации указано меньше значений, чем элементов массива, оставшиеся элементы по умолчанию примут нулевые значения.*/
static int ideoimal[3] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9}; /* при инициализации указано больше значений, чем элементов массива. Компилятор рассматривает подобную ситуацию как ошибку. */
Слайд 7Одномерные массивы в С++.
Инициализация безразмерных массивов
char Inp[] = "Введите значения
от 0 до 9.\n";
char simv[]={'A','a','E','e','I','i','O','o','U','u'};
int data[]={1,2,3,4,5,6,7,8,9,10};
/* В процессе инициализации массива,
для которого не задан размер, компилятор автоматически создаст массив такого размера, чтобы вместить все указанные элементы. */
Слайд 8Обращение к элементам массива
Обращение к определенному элементу одномерного массива осуществляется
путем указания имени переменной массива и в квадратных скобках целочисленного
индекса элемента.
В этом массиве значение элемента A[4] равно 9.
Слайд 9Обращение к элементам массива
Если элементу массива с индексом 2 присвоить
значение -6
(A[2]=-6), а элементу массива с индексом 5 присвоить
значение элемента с индексом 9 (A[5]=A[9]), то массив примет вид:
Слайд 10Обращение к элементам массива
Пример 1
#include ;
#include ;
using namespace std;
void
main() {
setlocale(LC_ALL, "Russian");
char Inp[] = "Введите значения от
0 до 9." ;
cout << Inp << endl;
int data[]={1,2,3,4,5,6,7,8,9,10};
cout << data << endl;
char simv[] = {'A','a','E','e','I','i','O','o','U','u'};
cout << simv << endl;
float fvar[4] = {1.1314,-0.25,25E0,-.11E1};
cout << fvar[0]<<" "<< fvar[1]<<" "<< fvar[2]<< " "<<
fvar[3] << endl;
getchar();
}
Слайд 11Обращение к элементам массива
Пример 1
#include ;
#include ;
using namespace std;
void
main() {
setlocale(LC_ALL, "Russian");
char Inp[] = "Введите значения от
0 до 9." ;
cout << Inp << endl;
int data[]={1,2,3,4,5,6,7,8,9,10};
cout << data << endl;
char simv[] = {'A','a','E','e','I','i','O','o','U','u'};
cout << simv << endl;
float fvar[4] = {1.1314,-0.25,25E0,-.11E1};
cout << fvar[0]<<" "<< fvar[1]<<" "<< fvar[2]<< " "<<
fvar[3] << endl;
getchar();
}
При компиляции программы из примера 1, в третьей строке помимо содержимого элементов массива выведены и другие символы.
Слайд 12Обращение к элементам массива
Пример 2
//Вывод элементов массива
#include ;
#include ;
using
namespace std;
void main() {
char simv[] = {'A','a','E','e','I','i','O','o','U','u','\0'};
cout << simv << endl;
getchar();
}
Слайд 13Обращение к элементам массива
Пример 3
#include ;
#include ;
using namespace std;
#define
SIZE1 10
int ar1[SIZE1]; /* глобальный массив */
void main() {
#define SIZE2 12
static int ar2[SIZE2]; /* статический массив */
for (int i=0; i cout<< ar1[i];
cout< for (int i=0; i cout<< ar2[i];
cout< getchar();
}
Слайд 14Обращение к элементам массива
Пример 4
// Ввод/вывод элементов массива
#include ;
#include
;
using namespace std;
#define SIZE1 10
void main() {
int ar1[SIZE1];
for (int i=0; i> ar1[i];
for (int i=0; i cout << endl;
getchar(); getchar();
}
Слайд 15Обращение к элементам массива
При работе с массивами следует помнить, что
индекс в обращении к элементу массива не должен превышать его
размер. При выходе за пределы массива компилятор С++ не выдает сообщения об ошибке, однако выход за пределы массива может привести к непоправимым результатам.
Пример 5
// Выход за пределы массива
// НЕ запускайте эту программу.
#include ;
#include ;
using namespace std;
#define SIZE1 10
void main() {
int ar1[SIZE1];
for (int i=1; i<=SIZE1; i++) cin >> ar1[i];
for (int i=1; i<=SIZE1; i++) cout << ar1[i] << "\t";
cout << endl;
getchar(); getchar();
}
Слайд 16Дана последовательность действительных чисел a0, a1, …, a9. Составить программу,
которая меняет местами значения 3-го и 9-го элементов этой последовательности
и выводит полученную последовательность на экран.
Пример 6
#include ;
#include ;
#include ;
#include ;
using namespace std;
#define SIZE1 10
void main() {
srand(time(NULL));
int ar1[SIZE1], b;
for (int i=0; i for (int i=0; i cout << endl;
b=ar1[3]; ar1[3]=ar1[9]; ar1[9]=b;
for (int i=0; i cout << endl;
getchar();
}
Слайд 17Дано натуральное число n и последовательность действительных чисел a0, a1,
…, an-1. Составить программу, которая находит наибольший элемент последовательности.
Пример
7
#include ;
#include ;
#include ;
#include ;
using namespace std;
#define SIZE1 100
void main() {
srand(time(NULL));
int ar1[SIZE1], max, n;
cin>>n;
for (int i=0; i for (int i=0; i cout << endl;
max=ar1[1];
for (int i=1; imax) max=ar1[i];
cout << max << " " << endl;
getchar(); getchar();
}
Слайд 18Лекция 6. Массивы в C++.
Задания для самостоятельной работы
43. Ниже представлена
программа, в ходе выполнения которой значения элементов массива сначала задаются,
а затем меняются. Определите, что будет напечатано в результате выполнения этой программы.
#include ;
#include ;
using namespace std;
#define SIZE1 13
void main() {
int ar1[SIZE1], d;
for (int i=0; i ar1[i]=i+2;
d=ar1[10];
for (int i= SIZE1-1; i>=0; i--)
ar1[i]=ar1[i-1];
ar1[0]=d-11;
for (int i=0; i cout << ar1[i] << " ";
getchar();
}
Слайд 19Лекция 6. Массивы в C++.
Задания для самостоятельной работы
Дано натуральное число
n (n ≤100). Составьте программу, которая заполняет одномерный массив,
состоящий из n элементов, последовательностью чисел: 1, 3, 5, 7, … .
Составьте программу, которая заполняет одномерный массив двадцатью первыми натуральными числами, кратными 5-ти или 7-ми. Полученный массив вывести на экран.
Даны натуральные числа n, a0, a1, …, an-1. Составьте программу, которая определяет количество членов последовательности a0, a1, …, an-1 с чётными индексами и нечетными значениями.
Даны натуральные числа n, a0, a1, …, an-1. Составьте программу, которая вычисляет сумму тех элементов последовательности a0, a1, …, an-1, которые нечётны и не кратны 3..
Даны натуральное число n и последовательность целых чисел a0, a1, …, an-1. Составьте программу, которая находит наибольший элемент, имеющий нечётный порядковый номер в данной последовательности..
Слайд 20Лекция 6. Массивы в C++.
Задания для самостоятельной работы
Даны натуральное число
n и последовательность действительных чисел a0, a1, …, an-1. Составьте
программу, которая все отрицательные элементы последовательности делит на значение наибольшего элемента. Полученную последовательность вывести на экран.
Дано натуральное число n. Составьте программу, которая образовывает массив B, состоящий из положительных элементов заданного одномерного массива A(n), больших пяти. Вывести на экран образованный массив и количество его элементов.
Даны натуральное число n и два одномерных массива X(n) и Y(n). Составьте программу, которая находит максимальную разность между соответствующими элементами массивов X(n) и Y(n) с чётными номерами.