06. Массивы и строки

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

Массив — это структура данных, которая хранит несколько значений одного типа под одним именем.
Представьте полку с ячейками, где в каждой лежит число. Чтобы достать элемент, нужно знать номер ячейки — индекс.

Создание массива


#include <iostream>
using namespace std;

int main() { int numbers[5] = {10, 20, 30, 40, 50}; cout << numbers[0] << endl; // выведет первый элемент (10) cout << numbers[4] << endl; // выведет пятый элемент (50) return 0; }

Как работают индексы

  • Первый элемент массива имеет индекс 0.
  • Последний элемент — размер - 1.

Изменение элементов

Вы можете изменять значения по индексу:

int scores[3] = {100, 80, 90};
scores[1] = 85; // меняем второй элемент
cout << scores[1]; // выведет 85

Перебор массива циклом

Часто массив используется вместе с циклом.

#include <iostream>
using namespace std;

int main() { int nums[5] = {2, 4, 6, 8, 10}; for (int i = 0; i < 5; i++) { cout << "Элемент " << i << ": " << nums[i] << endl; } return 0; }

Результат

Элемент 0: 2 Элемент 1: 4 Элемент 2: 6 Элемент 3: 8 Элемент 4: 10

Вычисления с массивами

Пример: подсчёт суммы всех элементов массива.

#include <iostream>
using namespace std;

int main() { int nums[5] = {5, 10, 15, 20, 25}; int sum = 0; for (int i = 0; i < 5; i++) { sum += nums[i]; } cout << "Сумма элементов: " << sum << endl; return 0; }

Длина массива

В C++ нет автоматического свойства длины массива, но можно вычислить её так:

int arr[5] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Размер массива: " << size << endl;

Строки в C++

Строка — это набор символов. В C++ существует два способа работать со строками:
  • Массив символов (старый способ, из языка C).
  • Класс string (современный и удобный способ).

Пример 1: массив символов


#include <iostream>
using namespace std;

int main() { char word[] = "Hello"; cout << word << endl; return 0; }

Пример 2: использование string


#include <iostream>
#include <string>
using namespace std;

int main() { string name = "Анна"; cout << "Привет, " << name << "!" << endl;

// изменение строки name += " Иванова"; cout << name << endl;

// длина строки cout << "Длина: " << name.length() << endl;

return 0; }

Результат

Привет, Анна! Анна Иванова Длина: 12

Работа с символами

Каждую букву строки можно получить по индексу:

string word = "Hello";
cout << word[0]; // H

Перебор строки циклом


string city = "Nukus";
for (int i = 0; i < city.length(); i++) {
    cout << city[i] << endl;
}

Сравнение строк

Вы можете сравнивать строки напрямую:

string a = "Hello";
string b = "World";

if (a == b) { cout << "Строки равны"; } else { cout << "Строки разные"; }

Типичные ошибки новичков

  • Выход за пределы массива (например, обращение к arr[10], если длина 5).
  • Забыли про \0 в символьных массивах (нужно для окончания строки).
  • Путают string и char[].

Мини-практика

Попробуйте сделать:
  • Программу, которая просит ввести 5 чисел и выводит их среднее значение.
  • Программу, которая запрашивает строку и выводит её наоборот (например, Hello → olleH).
  • Программу, которая считает количество гласных букв в слове.

Пример: реверс строки


#include <iostream>
#include <string>
using namespace std;

int main() { string text; cout << "Введите слово: "; cin >> text;

for (int i = text.length() - 1; i >= 0; i--) { cout << text[i]; } cout << endl; return 0; }

Советы новичкам

  • Не бойтесь экспериментировать с размерами массива — попробуйте поменять их.
  • Помните, что индексы начинаются с 0!
  • Работая со строками, не забывайте подключать библиотеку <string>.
  • Не выходите за пределы массива, чтобы избежать ошибок выполнения.

Итоги урока

Теперь вы знаете:
  • Что такое массив и как его использовать.
  • Как работать со строками в C++.
  • Как перебирать данные с помощью циклов.
  • Как избегать ошибок при обращении к элементам.