Привет. Ребят, объясните пожалуйста как работает программа в паскаль!
Вот задание: Проверить, являются ли массивы G(20) и H(30) упорядоченными по возрастанию.
Программа:
type ab = array[1..100] of word;
var n: byte;
g, h: ab;
procedure row_up (n: byte; b: ab);
var i, k: byte;
begin
for i:=2 to n do
if b[i] > b[i-1] then inc (k);---------------------------------------Что такое inc в этой строке?
if k = n -1 then writeln (' массив упорядочен ')-----------Для чего нужна эта строка и за что она отвечает?
else writeln (' массив не упорядочен ');
end;
procedure input (n: byte; var b: ab);
var i: byte;
begin
b[1]:=25 - random (26);----------------------------------------Что происходит в этой строке?
write (b[1]:4);
for i:=2 to n do
begin
b[i]:= b[i-1] + 25 - random (26);------------------------------Что происходит в этой строке?
write (b[i]:4);
end;
writeln;
end;
begin
n:=20;
input (n, g);
row_up (n, g);
n:=30;
input (n, h);
row_up (n, h);
end.
Заранее огромное спасибо!!!
Другие языки программирования и технологии
Объясните как работает программа в паскаль!!!
"if b[i] > b[i-1] then inc (k);---------------------------------------Что такое inc в этой строке?"
inc(k) - это стандартная функция в языке паскаль, как if, write и прочее.
inc(k) просто увеличивает k на единицу - равносильно записи k:=k+1 (правда нет присвоения начального значения для этой переменной. конечно скорее всего после объявления k изначально равно 0, но это не документировано в стандарте языка, так что по хорошему после объявления надо бы ещё написать k:=0)
В этой строке мы считаем количество пар, где b[i]>b[i-1]
пример: у нас массив из 4-х чисел: 1 2 4 3
k изначально = 0
первая пара: 1 2 и 2>1, значит увеличиваем k на единицу: k=1
вторая пара 2 4 и 4>2, опять увеличиваем k=2
третья пара 4 3 и 3<4, значит k не увеличиваем k=2
--------------------------------------------------------------------------
"if k = n -1 then writeln (' массив упорядочен ')-----------Для чего нужна эта строка и за что она отвечает?
else writeln (' массив не упорядочен ');"
тут мы смотрим, сколько пар из предыдущего пример у нас упорядочены по возрастанию и если они все упорядочены (n-1), то значит пишем, что массив упорядочен, а иначе (else), не упорядочен.
Из предыдущего примера у нас n=4, а k в итоге стало равно 2, что не равно n-1=3, значит массив не упорядочен.
если же взять упорядоченный массив, например 1 2 3 4, то 2>1, 3>2, 4>3, значит в конце k=3=(n-1), и мы на экране увидим - массив упорядочен
inc(k) - это стандартная функция в языке паскаль, как if, write и прочее.
inc(k) просто увеличивает k на единицу - равносильно записи k:=k+1 (правда нет присвоения начального значения для этой переменной. конечно скорее всего после объявления k изначально равно 0, но это не документировано в стандарте языка, так что по хорошему после объявления надо бы ещё написать k:=0)
В этой строке мы считаем количество пар, где b[i]>b[i-1]
пример: у нас массив из 4-х чисел: 1 2 4 3
k изначально = 0
первая пара: 1 2 и 2>1, значит увеличиваем k на единицу: k=1
вторая пара 2 4 и 4>2, опять увеличиваем k=2
третья пара 4 3 и 3<4, значит k не увеличиваем k=2
--------------------------------------------------------------------------
"if k = n -1 then writeln (' массив упорядочен ')-----------Для чего нужна эта строка и за что она отвечает?
else writeln (' массив не упорядочен ');"
тут мы смотрим, сколько пар из предыдущего пример у нас упорядочены по возрастанию и если они все упорядочены (n-1), то значит пишем, что массив упорядочен, а иначе (else), не упорядочен.
Из предыдущего примера у нас n=4, а k в итоге стало равно 2, что не равно n-1=3, значит массив не упорядочен.
если же взять упорядоченный массив, например 1 2 3 4, то 2>1, 3>2, 4>3, значит в конце k=3=(n-1), и мы на экране увидим - массив упорядочен
Похожие вопросы
- Объясните как работают программы. 2 задачи. Язык с++.
- Программа на паскале! Помогите(бесплатно)
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Нужно написать программу на паскале
- Написать программу в Паскале для построения графика функций. К программе желательно составить алгоритм.
- Программа в Паскале
- Помогите составить программу на паскале!
- Время работы программы в Паскаль
- помогите с программами в паскале
- найти все семизначные числа, которые делятся на 15 и записываются только цифрами 0 и 1. Составить программу на паскале
просто происходит инициализация первого элемента в массиве.
random(26) - это произвольное целое число от 0 до 25-ти, значит b[1] будет произвольным, как ни странно это выглядит, от 25 до 0.
Думаю такая запись была выбрана, чтобы убедиться, что вы понимаете, как это работает, так как можно было с тем же успехом написать просто b[i]=random(26)
Тот же принцип и в другой строчке "b[i]:= b[i-1] + 25 - random (26);"
просто каждому элементу массива b[] задаётся значение по заданному правилу с элементом произвольности, но что самое смешное - каждый следующий элемент больше или равен предыдущему по формуле, так что массивы задаются упорядоченными, а вот ответ на экране будет не всегда верный