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

Вывод строки по диагонали

Задача:

Вывести на экране строку, введенную пользователем, по диагонали.

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

uses crt;

var

s: string;

i: byte;

begin

write('String: ');

readln(s);

clrscr;

for i:=1 to length(s) do begin

gotoxy(0+2*i,0+i);

writeln(s[i])

end;

readln

end.

5.Процедуры, функции, рекурсии Вычисление средних арифметических массивов

Задача:

Найти средние арифметические пяти массивов, состоящих их десяти целых чисел.

Описание переменных:

arr – массив, состоящий их 5 элементов-массивов, каждый из которых в свою очередь содержит 10 целых чисел;

average – массив, содержащий средние арифметические вложенных массивов массива arr;

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

  1. Заполняем массивы целыми числами с помощью функции fill_array. Функция вызывается в цикле for 5 раз и возвращает очередной подмассив массива arr.

  2. Для каждого вложенного массива целых чисел вычисляется среднее арифметическое с помощью функции found_average. Результат заносится в массив average.

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

const n = 10; m = 5;

type

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

type_arr = array[1..m] of type_numbers;

type_average = array[1..m] of real;

var

arr: type_arr; {array of arrays}

average: type_average; {array of averages}

i,j: byte;

function fill_array():type_numbers;

var i:byte; a:type_numbers;

begin

for i:=1 to n do a[i]:=random(50)+1;

fill_array := a;

end;

function found_average(a:type_numbers):real;

var i:byte; sum:integer;

begin

sum := 0;

for i:=1 to n do sum:=sum+a[i];

found_average := sum / n;

end;

begin

randomize;

for i:=1 to m do arr[i] := fill_array();

for i:=1 to m do begin

for j:=1 to n do write(arr[i,j]:3);

average[i]:=found_average(arr[i]);

writeln(' -- ', average[i]:6:2);

end;

readln

end.

Перевод шестнадцатеричного числа в десятичное число

Задача:

Число представленное в шестнадцатеричной системе счисления перевести в десятичную систему счисления.

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

Алгоритм аналогичен переводу двоичного числа, за исключением того, что цифры обозначенные буквами от A до F следует заменить цифрами от 10 до 15.

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

var

hexa: string; {шестнадцатеричное число}

n: byte; {его длина}

ch: char; {цифра очередного разряда как символ}

digit: byte; {цифра очередного разряда}

m: byte; {степень 16}

decimal: integer; {десятичное число}

i: byte;

function pow16(m: byte):integer;

var i: byte;

begin

pow16 := 1;

for i := 1 to m do

pow16 := pow16 * 16;

end;

begin

write('Hexadecimal: ');

readln(hexa);

n := length(hexa);

decimal := 0;

m := n;

for i:=1 to n do begin

ch := hexa[i];

if ch in ['A'..'F'] then

case ch of

'A': digit := 10;

'B': digit := 11;

'C': digit := 12;

'D': digit := 13;

'E': digit := 14;

'F': digit := 15

end

else

digit := ord(ch) - ord('0');

m := m - 1;

decimal := decimal + digit * pow16(m);

end;

writeln('Decimal: ',decimal);

readln

end.

Примечания:

Существенная часть кода основной ветки программы может быть также оформлена в виде функции.