Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
37
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Заполнение массива и его вывод на экран

Задача:

В задачах по программированию очень часто встречается необходимость заполнить массив данными и вывести их потом на экран. Методов этого не так уж много и особым разнообразием они не отличаются. Поэтому хорошо бы их оформить в виде процедур и использовать по мере необходимости.

Алгоритм решения задачи:

Создадим две процедуры заполнения одномерного массива целыми числами: одну с использованием функции random и одну, где пользователь самостоятельно задает значения. Также создадим процедуру вывода массива на экран. Затем вызовем в основной ветке программы эти процедуры, передав им в качестве аргументов переменные, связанные с массивами.

Программа на языке Паскаль:

const

n = 10;

type

miniarr = array[1..n] of integer;

var

a, b: miniarr;

procedure arr_rand (k:integer; var arr: miniarr);

var i: byte;

begin

writeln ('Заполнение массива случайными числами.');

randomize;

for i := 1 to k do

arr[i] := random (100);

end;

procedure arr_user (k:integer; var arr: miniarr);

var i: byte;

begin

write ('Введите ', k, ' чисел через пробел: ');

for i := 1 to k do

read (arr[i]);

end;

procedure arr_out (k:integer; var arr: miniarr);

var i: byte;

begin

write ('Вывод массива: ');

for i := 1 to k do

write (arr[i]:4);

writeln;

end;

begin

arr_rand (n, a);

arr_out (n, a);

writeln;

arr_user (n, b);

arr_out (n, b);

readln

end.

Рекурсия. Процедура перевода чисел из десятичной системы счисления в другие

Алгоритм решения задачи:

Это пример рекурсивной процедуры (которая вызывает себя из своего тела).

Программа на языке Паскаль:

var

k: integer;

s: byte;

procedure scale (a: integer; b: byte);

begin

if b > 10 then

write ('Основание должно быть меньше 10!')

else begin

if a > 1 then

scale (a div b, b);

write (a mod b)

end;

end;

begin

write ('Введите число: ');

readln (k);

write ('Перевод в систему счисления: ');

readln (s);

scale (k, s);

readln

end.

Процедура вычисления корней квадратного уравнения

Алгоритм решения задачи:

Представленная ниже программа с процедурой вычисления корней квадратного уравнения не возвращает в основную программу ничего (просто выводит результат на экран). Однако можно написать такую процедуру, которая будет использовать глобальные переменные x1 и x2. В результате в основной ветке программы можно будет использовать полученные корни квадратного уравнения.

Программа на языке Паскаль:

var

a, b, c: real;

procedure sq (a,b,c: real);

var d, x1, x2: real;

begin

d := b * b - 4 * a * c;

if d >= 0 then begin

x1 := (-b + sqrt (d)) / (2 * a);

x2 := (-b - sqrt (d)) / (2 * a);

if x1 = x2 then

writeln ('x1 = ', x1:6:2)

else

writeln ('x1 = ', x1:6:2, '; x2 = ', x2:6:2)

end

else

writeln ('Корней нет!')

end;

begin

write ('a = '); readln (a);

write ('b = '); readln (b);

write ('c = '); readln (c);

writeln (a:6:2,'x*x + ',b:6:2,'x + ',c:6:2,' = 0');

sq (a, b, c);

readln

end.