1 of 25

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

Цель обучения:

-программировать заполнение элементов одномерного массива

Что делать, если количество данных в задаче очень много (несколько десятков, даже сотен)?

Как их ввести в программу?

Как работать с этими данными?

2 of 25

Что такое массив?

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

Особенности:

  • все элементы имеют один тип;
  • весь массив имеет одно имя;
  • элементы упорядочены по индексам (номерам).

Типы массивов: одномерный массив; двумерный массив;... n-мерный массив.

3 of 25

Что такое одномерный массив?

Одномерный массив – это фиксированное количество элементов одного и того же типа, объединенных общих именем, где каждый элемент имеет свой номер.

Нумерация элементов массива в С++ начинается с нуля, то есть если массив состоит из 4 элементов, то его элементы будут иметь следующие номера: 0,1,2,3.

Index

0

1

2

3

Value

Alex

James

Patrick

Andy

4 of 25

Структура одномерного массива

  • Элементы массива упорядочены (урегулированы) по индексам. Доступ к каждому элементу осуществляется путем индексирования, т. е. указания имени массива и номера элемента.

Пример: a[1] = 15.

5 of 25

Объявление массивов

  • Синтаксис объявления массива:

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

<размер массива> – это литерал или константное выражение

  • В соответствии с объявлением массива для его размещения будет выделена область памяти длиной

<размер массива> * sizeof <тип массива>

байт

  • Например: int a[5]; float x[n+m]; double q[4];

6 of 25

Инициализация массива

  • Объявление массива может сопровождаться его инициализацией
  • Синтаксис объявления массива с инициализацией:

<тип массива> <имя массива> [<размер массива>] = {<список значений>}

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

7 of 25

Примеры объявлений

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

int a[5] = { 3, 45, 11, -8, 74};

double q[4] = {1.7, 4.53};

  • Во втором случае инициализируются только два первых элемента массива x, а оставшиеся два элемента получают нулевые значения
  • При наличии списка инициализации размер массива можно не указывать, он определяется по числу инициализирующих значений:

int a[ ] = { 3, 45, 11, -8, 74};

8 of 25

9 of 25

10 of 25

Доступ к элементам одномерного массива.

11 of 25

12 of 25

13 of 25

Заполнение массива числами, введёнными пользователем

14 of 25

15 of 25

16 of 25

17 of 25

18 of 25

Постройте трассировочную таблицу и запустите программный код. 

Напишите программу для нахождения максимального числа.

19 of 25

генератор случайных чисел в C++

int main()

{

cout << "10 random numbers (1..100): " << endl;

srand(time(NULL));

for(int i=0;i<10;i++) cout << rand() % 100 + 1 << " ";

return 0;

}

Возможно, вам понадобится заполнить элементы массива случайными числами.  В С++ для этого есть специальные фyнкции rand() и srand().

Они находятся в библиoтечном файле cstdlib, поэтому чтобы их применять в программе, необходимо подключить этот библиотечный файл: #include <cstdlib>   или  #include <stdlib.h>  (для старых компиляторов).  

20 of 25

#include <iostream>

#include <cstdlib> // содержит srand() и rand()

using namespace std;

int main()

{

int randomDigits[3] = {};

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

{

randomDigits[i] = rand(); // запись случайного числа, которое вернет rand()

cout << randomDigits[i] << endl;

}

return 0;

}

21 of 25

«A»: Заполните массив случайными числами в интервале [0,100] и найдите среднее арифметическое его значений.�Пример:�Массив:�1 2 3 4 5�Среднее арифметическое 3.000

#include <iostream>

#include <ctime>

#define SIZEAR 10

using namespace std;

int main() {

int ar[SIZEAR];

srand(time(NULL));

//Заполняем массив

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

ar[i] = rand() % 101;

22 of 25

//Выведем массив для просмотра

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

cout <<ar[i]<<endl;

//Подсчитаем средее арифметическое

int sum=0;

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

sum+=ar[i];

float sred = float(sum) / float(SIZEAR);

cout << "Result: " << sred;

}

23 of 25

Пример подсчета среднего роста учеников класса на С++ без массива

#include <iostream>

using namespace std;

int main()

{ setlocale (LC_ALL, "russian");

int n; // Число студентов

double ah; // Средний рост

double r, sr; // Рост и сумма роста

sr=0;

cout<<"Введите число студентов"<<endl;

cin>>n;

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

{ cout<<"Введите рост"<<endl;

cin>>r;

sr=sr+r;

}

ah=sr/n;

cout<<"Средний рост"<<ah<<endl;

system ("pause");

}

24 of 25

Пример подсчета среднего роста учеников класса на С++�с массивом

#include <iostream>

using namespace std;

int main()

{ setlocale (LC_ALL, "russian");

int k, a[100]; // Число студентов

double ah; // Средний рост

double sr; // Сумма роста

sr=0;

cout<<"Введите kol-vo студентов"<<endl;

cin>>k;

for (int i=1; i<=k; i++)

{ cout<<"Введите рост"<<endl;

cin>>a[i];

sr=sr+a[i];

}

ah=sr/k;

cout<<"Средний рост"<<ah<<endl;

system ("pause");

}

25 of 25

Задачи по уровням сложности

  1. Элементы массива, которые больше предыдущего
  2. Найти разность между максимальным и минимальным элементами массива
  3. Минимальный из элементов массива с нечетными индексами
  4. Вывести элементы массива, которые больше среднего арифметического
  5. Найти среднее арифметическое отрицательных элементов массива. Заменить на него минимальный элемент.
  6. Среднее арифметическое всех чётных элементов массива, стоящих на нечётных местах