Найти в Дзене
Информатика

🚀 Массивы в Си: как хранить 1000 очков игроков в одной строке кода

Представь: ты делаешь игру, где 100 игроков. Нужно хранить их очки. Вариант для слабаков — создать 100 переменных: score1, score2, score3... score100. Вариант для тех, кто в теме — один массив. Одна строка кода вместо сотни. Вот это мощь. Погнали разбираться! 💪 Массив — это как плейлист в Spotify, только для данных. Есть общее название ("Любимые треки"), а внутри — пронумерованные позиции с конкретными песнями. Хочешь третий трек? Обращаешься по номеру. Хочешь значение из массива? Тоже по номеру (индексу). int scores[5] = {100, 85, 92, 78, 95}; У тебя теперь 5 ячеек с очками игроков: scores[0] = 100 scores[1] = 85 scores[2] = 92 scores[3] = 78 scores[4] = 95 В Си индексы начинаются с нуля, а не с единицы! Первый элемент — это [0], а не [1]. Это как этажи в американских зданиях: первый этаж называется "Ground Floor" — нулевой. Запутался в индексах? Welcome в клуб "Потратил 2 часа на поиск бага из-за единички" 😅 Как заполнить список контактов в телефоне — по одному вводишь. for (i = 0;
Оглавление
Массивы
Массивы

Представь: ты делаешь игру, где 100 игроков. Нужно хранить их очки. Вариант для слабаков — создать 100 переменных: score1, score2, score3... score100.

Вариант для тех, кто в теме — один массив.

Одна строка кода вместо сотни. Вот это мощь. Погнали разбираться! 💪

🎮 Что такое массив и зачем он тебе

Массив — это как плейлист в Spotify, только для данных.

Есть общее название ("Любимые треки"), а внутри — пронумерованные позиции с конкретными песнями. Хочешь третий трек? Обращаешься по номеру. Хочешь значение из массива? Тоже по номеру (индексу).

int scores[5] = {100, 85, 92, 78, 95};

У тебя теперь 5 ячеек с очками игроков:

scores[0] = 100
scores[1] = 85
scores[2] = 92
scores[3] = 78
scores[4] = 95

⚠️ Главный баг новичков

В Си индексы начинаются с нуля, а не с единицы!

Первый элемент — это [0], а не [1]. Это как этажи в американских зданиях: первый этаж называется "Ground Floor" — нулевой.

Запутался в индексах? Welcome в клуб "Потратил 2 часа на поиск бага из-за единички" 😅

🔧 Три способа забить массив данными

Три способа
Три способа

1️⃣ Вручную с клавиатуры

Как заполнить список контактов в телефоне — по одному вводишь.

for (i = 0; i < 8; i++) {
scanf("%d", &A[i]);
}

2️⃣ По формуле

Нужны нечётные числа? Не вбивай руками — пусть программа сама посчитает.

for (i = 0; i < 7; i++) {
A[i] = 2 * i + 1; // Получится: 1, 3, 5, 7, 9, 11, 13
}

3️⃣ Рандом 🎲

Случайные числа — как shuffle в плейлисте. Идеально для симуляций, игр, тестов.

for (i = 0; i < 10; i++) {
A[i] = rand() % 100; // Случайное от 0 до 99
}

💡 Три задачи, которые решают все

Найти максимум
Найти максимум

Задача 1: Сумма всех элементов

Посчитать общий балл команды, сколько лайков набрали все посты, сколько жителей в посёлке — всё это один алгоритм.

int sum = 0;
for (i = 0; i < N; i++) {
sum = sum + A[i];
}

Идея: Берёшь переменную sum, ставишь ноль. Идёшь по массиву и прибавляешь каждый элемент. В конце — готовая сумма.

Задача 2: Найти максимум (топ игрока)

Кто в рейтинге первый? У кого больше всех подписчиков? Кто набрал максимум баллов?

imax = 0; // Пусть первый — чемпион
for (i = 1; i < 5; i++) {
if (A[i] > A[imax]) {
imax = i; // Нашли нового чемпиона!
}
}

Как это работает: Берёшь первую карточку — это временный "чемпион". Сравниваешь со второй. Если она круче — она новый чемп. И так по всем. В конце — реальный топ.

Задача 3: Есть ли в массиве нужное число?

Ищешь друга в списке контактов, проверяешь, есть ли трек в плейлисте, смотришь, прошёл ли игрок уровень.

k = 0; // Пока не нашли
for (i = 0; i < 5; i++) {
if (A[i] == x) {
k = i + 1; // Нашли!
break; // Всё, выходим
}
}

Если k осталось нулём — не нашли. Если изменилось — вот позиция.

🔥 Бонус: Сортировка (наводим порядок)

Сортировка
Сортировка

Рейтинг игроков, список по алфавиту, треки по популярности — всё это сортировка.

Сортировка выбором (для новичков самая понятная):

  1. Ищем самый маленький элемент → ставим на первое место
  2. Ищем второй по величине → на второе место
  3. Повторяем, пока не закончатся
for (i = 0; i < 4; i++) {
imin = i; // Ищем минимум
for (j = i + 1; j < 5; j++) {
if (A[j] < A[imin]) {
imin = j;
}
}
// Меняем местами
temp = A[i];
A[i] = A[imin];
A[imin] = temp;
}

Было: {9, 1, 4, 3, 6}

Стало: {1, 3, 4, 6, 9}

🎯 Когда массив — must have

✅ Нужно хранить больше 5–10 однотипных значений

✅ Планируешь сортировать данные

✅ Нужно искать максимум/минимум

✅ Будешь несколько раз обращаться к одним и тем же данным

❌ Если нужно просто посчитать сумму и забыть — массив избыточен

🚨 Топ-3 ошибки, которые всех бесят

  1. Обращение к A[5] при размере массива 5

    Индексы: 0, 1, 2, 3, 4. Пятого НЕТ. Программа крашнется.
  2. Забыл обнулить счётчик

    sum = 0 ДО цикла, а не после. Иначе мусор из памяти.
  3. Перепутал = и == в условии

    if (A[i] = x) — это ПРИСВАИВАНИЕ.

    if (A[i] == x) — это СРАВНЕНИЕ.

💥 Главное на вынос

🔹 Массив — набор элементов одного типа с общим именем

🔹
Индексы с нуля: первый элемент — [0], а не [1]

🔹
Три базовых операции: сумма, поиск макс/мин, поиск элемента

🔹
Сортировка — расстановка по порядку (возрастание/убывание)

🔹
Цикл for — твой лучший друг при работе с массивами

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

Один массив > сто переменных. Это мощь. Это круто. Это программирование. 🔥

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

Там же — интерактивные задачки, трассировочные таблицы и объяснение сортировки по шагам. Залетай, если хочешь прокачать скилл! 🚀