Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab_7_Informatika

.pdf
Скачиваний:
5
Добавлен:
29.03.2015
Размер:
255.47 Кб
Скачать

11

begin

for i := 1 to m do for j := 1 to n do

read(a[i, j]); sred := 0;

for i := 1 to m do begin

n_pos_el := 0;

for j := 1 to n do begin

sred := sred + a[i, j]; if a[i, j] > 0 then

n_pos_el:= n_pos_el+1;

end;

writeln('В ', i, '–й строке ', n_pos_el, ' положител. элементов'); end;

sred := sred / m / n;

writeln('Среднее арифметическое: ', sred:6:2);

end.

Обратите внимание, что рекомендуется записывать операторы инициализации накапливаемых в цикле величин непосредственно перед циклом, в котором они вычисляются.

Генерация псевдослучайных чисел в языке Турбо-Паскаль

Внекоторых ситуациях требуется, чтобы результат работы программы был случайным в определенных пределах. Для реализации такой возможности во многих языках программирования присутствуют встроенные функции, код которых выдает случайные числа. На самом деле числа не совсем случайные, а псевдослучайные. Дело в том, что искусственно реализовать случайность невозможно. Обычно берется некоторый коэффициент, и с его помощью вычисляется каждое последующее «случайное» число.

Вязыке программирования Паскаль для генерации псевдослучайных чисел в заданных диапазонах используется функция random. Перед ее использованием обычно выполняется процедура инициализации датчика случайных чисел - randomize (иначе программа всегда будет выдавать один и тот же результат). Randomize задает начальное значение

12

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

Функция random генерирует случайное число в диапазоне от 0 (включительно) до единицы. Если в скобках указан аргумент, то от 0 до значения указанного в скобках (не включая само значение). Так выражение random (10), говорит о том, что будет получено любое число в диапазоне

[0, 10). Если требуется получать значения в каком-либо другом диапазоне

(не от нуля), то прибегают к математической хитрости. Например, чтобы получить случайное число от -100 до 100 достаточно записать такое выражение: random(200)–100. В результате, сначала будет получено число из диапазона [0, 199], а затем из него будет вычтена сотня. И если случайное число было меньше 100, то результат выражения будет отрицательным.

Рассмотрим пример программы:

var n, i, x: integer; begin

randomize;

n := random (7) + 5; for i := 1 to n do

begin

x := random (100) - 50; writeln (x);

end;

readln;

end.

В этом примере программы сначала с помощью процедуры randomize инициализируется датчик случайных чисел. Далее переменной n присваивается случайное значение в диапазоне [5, 12). Значение переменной n используется для определения количества итераций цикла for. В цикле for генерируются случайные числа в диапазоне [-50, 50) и

выводятся на экран.

13

Задания к работе

Задания №1 и №2 выполняются на компьютере.

Задание №1. Необходимо написать программу, заполняющую одномерный массив целыми псевдослучайными числами из диапазона [-100; 500] (количество элементов массива указано в варианте). Затем вывести на экран:

а) все элементы массива; б) среднее арифметическое элементов массива, а также наибольший и

наименьший из элементов массива; в) элементы массива, удовлетворяющие указанному в варианте

условию.

Список вариантов приведен в таблице 1.

Таблица 1. Список вариантов к заданию №1

№ варианта

Количество

Условие

 

элементов в

 

 

массиве

 

1

15

Число одновременно и больше 4, и кратно 5.

2

11

Число либо меньше 0, либо кратно 3.

3

10

Число одновременно и меньше 200, и не кратно 2.

4

13

Число либо больше или равно 50, либо кратно 4.

5

12

Число одновременно и больше или равно 3, и

 

 

кратно 7.

6

14

Число либо меньше 80, либо не кратно 3.

7

15

Число одновременно не равно 2, и кратно 10.

8

11

Число либо меньше 5, либо кратно 5.

9

10

Число одновременно и больше 127, и кратно 2.

10

13

Число либо больше или равно 1, либо не кратно 6.

11

12

Число одновременно и меньше 54, и кратно 3.

12

14

Число либо не равно 100, либо не кратно 9.

13

15

Число одновременно и не равно 91, и кратно 5.

14

11

Число либо больше или равно 30, либо кратно 8.

15

10

Число одновременно и больше 10, и не кратно 5.

16

13

Число либо меньше 9, либо кратно 2.

17

12

Число одновременно и меньше 150, и кратно 2.

18

14

Число либо больше или равно 87, либо не кратно 4.

19

15

Число одновременно и меньше или равно 11, и

 

 

кратно 7.

20

11

Число либо меньше 17, либо кратно 3.

21

10

Число одновременно не равно 22, и кратно 8.

22

13

Число либо меньше 4, либо не кратно 9.

23

12

Число одновременно и больше 257, и не кратно 2.

24

14

Число либо больше или равно 65, либо кратно 7.

14

25

15

Число одновременно и больше 155, и не кратно 10.

Образец результата выполнения программы для одномерного массива,

состоящего из 12 элементов, приведен на рис. 4.

Рис. 4. Образец результата выполнения программы для задания №1

Задание №2. Необходимо написать программу, выполняющую последовательно следующие действия:

1) Заполнить вещественную матрицу случными числами из диапазона

[-100, 300].

2)Вывести данную матрицу на экран.

3)Элементы массива, принадлежащие указанному промежутку числовой прямой, заменить на значение выражения (но только для случаев,

если это допустимо, т.е. кроме ситуаций деления на 0, извлечения квадратного корня из отрицательного числа и т.п.).

4) Измененную матрицу заново вывести на экран.

Размер матрицы, промежуток числовой прямой и выражение, на значение которого нужно заменить элементы массива, указаны в таблице 2

по вариантам.

Таблица 2. Список вариантов к заданию №2

Размер

Промежуток числовой оси

Выражение (x

варианта

матрицы

 

элемент массива,

 

 

 

принадлежащий

 

 

 

 

указанному

 

 

 

промежутку числовой

 

 

 

 

 

оси)

 

 

1

5×6

(10;75)

 

 

 

 

 

 

 

 

 

4x

 

x

5

e

 

 

 

 

 

 

 

 

 

2

6×5

[-5;64]

 

 

 

 

 

 

 

ln(3x)

 

2x 6

3

5×5

(1;100]

 

x4

 

 

 

 

 

 

 

 

10x

4

6×6

[-70;64)

 

 

 

 

 

x3

 

 

 

 

 

 

 

 

 

e7 x

 

 

 

15

5

7×4

 

(100;200)

 

 

|1 x

 

| x

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

4×7

 

[-100;0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

sin(x 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

5×6

 

(129;199]

 

ctg 2 ( x 45)

8

6×5

 

[-50;55)

 

 

 

 

 

 

 

| x 5 |

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln(x 5)

 

 

 

 

 

 

 

 

 

9

5×5

 

(20;40)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

x

8

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

6×6

 

[-33;121]

 

ln(2x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x cos(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

7×4

 

(0;88]

 

 

 

 

 

 

 

 

x5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

4×7

 

[-70;64)

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xex

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

5×6

 

(-99;98)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

 

 

 

 

 

 

 

 

 

 

 

 

 

x

3

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

6×5

 

[-200;3]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln(9x)

 

 

x 10

15

5×5

 

(11;101]

 

 

 

 

 

 

 

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7x

 

 

 

 

 

 

 

 

 

 

16

6×6

 

[-8;150)

 

 

 

 

 

 

 

 

 

 

 

 

 

x6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e8x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

7×4

 

(1;115)

 

 

| x 2 | x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

4×7

 

[0;182]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

 

tgx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

5×6

 

(-19;20]

 

 

 

tg 2 (x 9)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

6×5

 

[16;90)

 

 

 

 

 

 

 

 

3 | x |

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln(x 1)

 

 

 

 

 

 

 

 

 

 

21

5×5

 

(5;55)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

x

2

 

 

 

6e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22

6×6

 

[-72;79]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10ln x

 

 

 

 

x

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23

7×4

 

(-13;73]

 

 

 

 

 

 

 

 

x2 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24

4×7

 

[10;100)

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5xex 3

 

 

 

 

 

 

 

 

 

 

 

25

5×6

 

(-6;49)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

x

 

 

 

 

 

 

 

 

 

 

 

5x 13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

Образец результата выполнения программы для матрицы размером

5×5, промежутка числовой

прямой [-5;49) и

выражения

 

 

 

 

 

 

 

ln(3 x)

 

 

 

 

 

 

x 1

приведен на рис. 5.

16

Рис. 5. Образец результата выполнения программы для задания №2

Вопросы для самоконтроля

1)Каким образом задаются все возможные значения перечисляемого типа данных?

2)Программистом был определен тип данных:

type t = (x1, x2, x3, x4);

Чему равны значения следующих выражений:

а) ord(x2)

б) succ(x3)

в) pred(x4)

3)Для чего используется интервальный тип?

4)Что называется массивом?

5)Какое ограничение накладывается на тип элементов массива и тип его индексов?

6)Программистом были описаны массив a и две переменные (i и x):

const

a: array[1..5] of integer = (60, 49, 3, 22, 1);

var

i,x: integer;

Вычислить значение переменной x после выполнения следующей

последовательности операторов:

x:=0;

17

for i:=1 to 5 do

x:=x+a[i] div 2;

7) Программистом были описаны массив a и две переменные (i и x):

const

a: array[0..4] of integer = (2, 15, 11, 48, 69);

var

i,x: integer;

Вычислить значение переменной x после выполнения следующей

последовательности операторов:

x:=0;

for i:=1 to 3 do

x:=x+a[i] mod 3;

8) Программистом были описаны массив a и три переменные (i, j и

x):

const

a: array[1..2,1..3] of integer = ((1, 52, 7),

(19, 64, 80));

var

i,j,x: integer;

Вычислить значение переменной x после выполнения следующей

последовательности операторов:

x:=0;

for i:=1 to 2 do

for j:=1 to 3 do

x:=x+100 div a[i,j];

Список литературы

1) Программирование на языке высокого уровня Паскаль. Лекция 3:

Типы данных, определяемые программистом. [Электронный ресурс] –

18

Режим доступа: http://www.intuit.ru/studies/courses/628/484/lecture/6261. (Дата обращения: 24.09.2013).

2) Семакин И.Г., Шестаков А.П. Лекции по программированию:

Учебное пособие. Изд. 2-е, доп. – Пермь: Изд-во Перм. ун-та, 1998. – 279 с. 3) Культин Н.Б. Основы программирования в Delphi 7. – СПб.: БХВ-

Петербург, 2003. – 608 с.: ил.

4) Генератор псевдослучайных чисел. [Электронный ресурс] – Режим доступа: http://pas1.ru/random. (Дата обращения: 10.10.2013).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]