Другие языки программирования и технологии

Программирование в Паскале

Помогите пожалуйста решить задачу. Объясните максимально для тупых.
Составить программу обработки массива К, состоящего из 20 элементов. Заполнить массив случайными числами в диапазоне от -5 до 25. Все элементы массива К, значения которых находятся в интервале от -3 до 19 возвести в куб. Измененный массив вывести на экран.
Простая программа выглядит примерно так:

program Massiv; {Имя программы}

var {От слова variable — переменная}
{Здесь объявляем переменные}

begin
{Основная программа. Здесь пишем команды, которые надо выполнить}
end.

Для решения задачи нам понадобится массив K из 20 элементов (пусть это будут целые числа). Поэтому объявим такую переменную:

K: array [1..20] of integer;

Также нам понадобится переменная цикла, которую мы будем использовать для перебора элементов массива в качестве индекса (номера) этих элементов:

i: integer;

Теперь будем писать основную программу.
Для начала подготовим генератор случайных чисел:

Randomize;

Затем при помощи цикла переберем все элементы массива K и зададим им случайные значения:

for i:=1 to 20 do {Следующая строчка будет выполнена для i=1, затем для i=2, i=3, …, i=20}
K[i]:=Random(31)-5;

Что здесь происходит? Нам нужно целое случайное число.
Функция Random(q) возвращает целое число от 0 и выше, но меньше q.
То есть всего может быть q вариантов: 0, 1, 2, 3, …, q−1.
Нам нужно число от −5 до 25. Это:
• 5 вариантов меньше нуля (−5, −4, −3, −2, −1),
• 25 вариантов больше нуля (1, 2, …, 25),
• собственно 0.
Всего 31 вариант.
Поэтому я написал Random(31).
Но Random(31) выдаст число от 0 до 30!
А если мы из него вычтем 5, то получим число от (0 − 5) до (30 − 5), или от −5 до 25.
То, что нужно.

Массив готов! При желании можем его вывести:

for i:=1 to 20 do
Write(K[i], ' ');
WriteLn;

В цикле идет вывод элемента с индексом i и одного пробела при помощи процедуры Write. После цикла переводим курсор на новую строчку при помощи процедуры WriteLn.

Теперь нам надо возвести в куб все элементы от −3 до 19.
Заводим еще один цикл и в нем проверяем. Если число входит в этот диапазон (больше или равно 3, но меньше или равно 19), тогда переписываем его в массиве, заменяя его на его куб (третью степень — грубо говоря, куб числа q равен q * q * q):

for i:=1 to 20 do
if (K[i] >= -3) and (K[i] <= 19) then
K[i] := K[i] * K[i] * K[i];

Массив обработали, теперь можно снова его вывести:

for i:=1 to 20 do
Write(K[i], ' ');
WriteLn;

Готово!
Андрей Таран
Андрей Таран
88 008
Лучший ответ
На Питоне как-то так
import random
K = []
i = 0
while i < 20:
n = random.randint(-5, 25)
K.append(n)
i += 1
print K
i = 0
while i < len(K):
if K[i] >= -3 and K[i] <= 19:
K[i] = K[i]**3
i += 1
print K
Юрик Хуснуллин
Юрик Хуснуллин
61 272
for i:=1 to 20 do a[i]=random(31)-5;
for i:=1 to 20 do if a[i]<=19 and a[i]>=-3 then a[i]:=a[i]*a[i]*a[i];
for i:=1 to 20 do write( a[i] );
readln;
Бахтияр Махмудов опечатки убрал
Ох, солнышко.
Максимально объясню)
Массив это последовательность, в которую можем записать любые числа.
Вот так создаем массив с 20-ю элементами var K:array[1..20] of integer;
Теперь сюды нужно нужно всё записать и посчитать.
Используем цикл, но до него создадим переменную.
Var i:integer;
for i:1 to 20 do
begin // Всё, что напишем между begin и end выполнится 20 раз
K[i]:= random( 30 ) - 5; // эта фукция генерирует число от 0 до 30, пс 0-5 30-5 есть -5 и 25
if (k[i]>= -3) and (k[i]<=19) then k[i]:=k[i]*k[i]; // Сразу тут же проверяем условие
Writeln(K[i]); // И выводим соответственно
end;