1-D arrays: store, index, and traverse · Массивы 1-мерного измерения: хранение, индексация и обход
A row of boxes
- An array is a row of variables of the same type, kept side by side in memory.
int a[5];makes room for fiveints. They are one block, reached by number.- You can fill them when you create them:
int a[] = {10, 20, 30};makes an array of three.
Ряд прямоугольников
- Массив — это ряд переменных одного типа, расположенных рядом в памяти.
int a[5];выделяет место для пяти ⟨int⟩. Это единый блок, доступ к которому осуществляется по номеру.- Их можно заполнить при создании:
int a[] = {10, 20, 30};создает массив из трех элементов.
Indexing from 0
- Each item has an index (a position). The first index is
0, not1. a[0]is the first item,a[1]the second, anda[n - 1]is the last in an array ofnitems.- Reading or writing outside the array (like
a[5]in a 5-item array) is a serious bug.
Индексация с ⟨0⟩
- У каждого элемента есть индекс (позиция). Первый индекс равен
0, а не1. - ⟨
a[0]⟩ — первый элемент, ⟨a[1]⟩ — второй, а ⟨a[n - 1]⟩ — последний в массиве из ⟨n⟩ элементов. - Чтение или запись за пределами массива (например, ⟨
a[5]⟩ в массиве из 5 элементов) — это серьезная ошибка.
Traversing with a loop
- To visit every item, run an index from
0up ton - 1with aforloop. - Inside the loop, use
a[i]to read or change the item at positioni. - This is how you sum, count, or search an array.
Проход с помощью цикла
- Чтобы посетить каждый элемент, запустите индекс от
0доn - 1с помощью циклаfor. - Внутри цикла используйте ⟨
a[i]⟩ для чтения или изменения элемента на позиции ⟨i⟩. - Так вы суммируете, подсчитываете или ищете элементы массива.
Arrays don't know their own length
- An array does not carry its own size. A function cannot ask "how long are you?".
- So you always pass the length next to the array:
sum(a, n). - Use
const int a[]in a parameter to promise you will only read the array, not change it.
Массивы не знают своей длины
- Массив не хранит свой собственный размер. Функция не может спросить: "Какой ты размер?"
- Поэтому всегда передавайте длину рядом с массивом: ⟨
sum(a, n)⟩. - Используйте ⟨
const int a[]⟩ в параметре, чтобы гарантировать, что вы будете только читать массив, а не изменять его.
#include <stdio.h>
int main(void) {
int a[] = {10, 20, 30, 40};
int n = 4, total = 0;
for (int i = 0; i < n; i++) {
total += a[i];
}
printf("%d\n", total); // 100
return 0;
}
Common mistakes
- C does NOT check array bounds:
a[n]in a size-narray is undefined. - Valid indexes run
0ton - 1.
Распространенные ошибки
- C НЕ проверяет границы массивов: доступ к ⟨
a[n]⟩ в массиве размера ⟨n⟩ является неопределенным поведением. - Действительные индексы идут от
0доn - 1.
Now you try
- Pass both the array and its length
n, and loop the index from0ton - 1. - For the function tasks, do not write a
main— the checker provides one.
Теперь попробуйте сами
- Передавайте и массив, и его длину ⟨
n⟩, и перебирайте индекс от ⟨0⟩ до ⟨n - 1⟩. - Для заданий с функциями не пишите
main— проверяющая система предоставит его.
Arrays are indexed · Массивы имеют индексы
An array stores values in order; reach one with a[i]. · Массив хранит значения по порядку; обратиться к элементу можно с помощью a[i].
The array a and its length n are given. In main, add up all n items and print the total on its own line. · Даны массив a и его длина n. Внутри main сложите все элементы ⟨n⟩ и выведите сумму на отдельной строке.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Complete int sum(const int a[], int n) so it returns the total of the array's n items (0 when n is 0). Do not write a main. · Заполните int sum(const int a[], int n) так, чтобы он возвращал сумму ⟨n⟩ элементов массива (0, когда n равно 0). Не пишите ни main.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Complete void double_all(int a[], int n) so it doubles every item of the array, in place (no return value). Do not write a main. · Завершите void double_all(int a[], int n) так, чтобы она удваивала каждый элемент массива на месте (без возвращаемого значения). Не пишите main.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.