Подразделы

Другие разделы

Дата и время

22/11/2024 05:40:27

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printЗаполнение массива

Заполнение массива по формуле

Обычно задачи про одномерные массивы начинаются со слов "заполните массив…" или "дан одномерный массив…" – всё это предполагает то, что массив был ранее создан и заполнен.
Присвоить значение элементу массива с номером `i` можно следующим образом:
{Pascal}
  A[i]:=x;

//Си
  A[i]=x;

Но если этих элементов десять или десять тысяч? Тогда на помощь приходит оператор цикла For:
{Pascal}
For i:=1 to 10000 do
A[i]:=i*2;

//В Си номер элемента массива начинается с `0`
For(i=0; i<10000; i++)
 A[i]=i*2;
Этот цикл не только заставляет ЭВМ выполнить большое количество действий, но и изменить при этом массу информации – содержимое 10000 ячеек. В каждом элементе массива число в два раза большее, чем его индекс.
Конечно, вместо выражения i*2 можно использовать любые математические формулы. Тогда каждый раз массив будет заполняться по функциональной зависимости, где индекс – это аргумент функции (i), а сам элемент – значение функции (A[i]).
Заполним массив значениями функции `y=x^2` для целых чисел на промежутке [1; 20].
{Pascal}
For x:=1 to 20 to
  y[x]:=sqr(x);

//Си
For(x=0; x<20; x++)
  y[x]=pow(x+1,2);

Здесь видно, что в программе y[x]:=sqr(x) – это тоже самое, что и математическое выражение `y(x)=x^2`. В Си необходимо использовать функцию `"pow"(x,y)` для возведения в степень (`x^y`).

А задание к этой программке будет звучать примерно так: "Заполнить массив y квадратами чисел от 1 до 20".

Заполнение массива с клавиатуры

Но если задании сказано, что массив следует заполнить с клавиатуры?
В основе заполнения массивов, как мы выяснили, лежит простое присваивание.
Ну а там, где присваивание, есть и ввод с клавиатуры.

Вспомним как это делается для обычных переменных:
{Pascal}
 ReadLn (x);

//Си
 scanf("%d",x);

Теперь программа ожидает, пока мы наберём на клаве число и нажмём Enter. Всё! Наше число хранится в переменной x. Прикидываем, что элемент массива – это та же переменная, только с индексом:

{Pascal}
 ReadLn (A[i]);

//Си
 scanf("%d",A[i]);

В зависимости от индекса i введённое пользователем число запишется в массиве A по номеру i.
Вспомним, как мы присваивали значения элементов в цикле:

{Pascal}
For i:=1 to 20 do
  ReadLn (A[i]);

//Си
 For(x=0; x<20; x++)
  scanf("%d",A[i]);

Программа запрашиват числа одно за другим, пока мы не введём 20 чисел. И все они по окончании цикла будут находиться в массиве A по тем номерам и в том порядке, как мы их вводили.
loading