Случайные числа на языке Паскаль

14
1 Случайные числа на языке Паскаль Тип величины Диапазон значений Паскаль Веществе н ный [ 0 , 1 ] x : = random [ 0 , a] x : = random * a [ a , b ] x : = random * ( b – a ) + a Целый [ 0 , a] x : = random * ( a + 1 ) + a [ a , b ] x : = random * ( b – a + 1) + a

Upload: lavi

Post on 21-Jan-2016

115 views

Category:

Documents


0 download

DESCRIPTION

Случайные числа на языке Паскаль. Нахождение суммы всех элементов массива. Program summa; const N = 5; var a: array [1..N] of integer; i , s: integer; begin writeln (' Исходный массив :'); for i :=1 to N do begin a[ i ] := random(100) + 50; write(a[ i ]:4); end; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Случайные числа на языке Паскаль

1

Случайные числа на языке Паскаль

Тип величины

Диапазон значений

Паскаль

Веществен ный

[ 0 , 1 ] x : = random

[ 0 , a] x : = random * a

[ a , b ] x : = random * ( b – a ) + a

Целый[ 0 , a] x : = random * ( a + 1 ) + a

[ a , b ] x : = random * ( b – a + 1) + a

Page 2: Случайные числа на языке Паскаль

2

Нахождение суммы всех элементов массиваProgram summa;const N = 5;var a: array [1..N] of integer; i, s: integer;begin writeln('Исходный массив:'); for i:=1 to N do begin a[i] := random(100) + 50; write(a[i]:4); end;

writeln; {перейти на новую строку}

writeln(‘Сумма элементов массива‘ , s:4);end.

Program summa;const N = 5;var a: array [1..N] of integer; i, s: integer;begin writeln('Исходный массив:'); for i:=1 to N do begin a[i] := random(100) + 50; write(a[i]:4); end;

writeln; {перейти на новую строку}

writeln(‘Сумма элементов массива‘ , s:4);end.

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

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

сумма всех элементов массива

сумма всех элементов массива

Page 3: Случайные числа на языке Паскаль

3

Нахождение суммы элементов массива с заданными условиями

Program summa;const N = 5;var a: array [1..N] of integer; i, s: integer;

{ заполнение массива} ------------------------------

writeln; {перейти на новую строку}

writeln(‘Сумма полж-ых эл-ов массива‘,s:4);end.

Program summa;const N = 5;var a: array [1..N] of integer; i, s: integer;

{ заполнение массива} ------------------------------

writeln; {перейти на новую строку}

writeln(‘Сумма полж-ых эл-ов массива‘,s:4);end.

for i:=1 to n do if a[i]>0 then s:=s+a[i];

for i:=1 to n do if a[i]>0 then s:=s+a[i];

сумма всех положительных

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

сумма всех положительных

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

Page 4: Случайные числа на языке Паскаль

4

Нахождение кол-ва элементов массива с заданными условиями

Program summa;const N = 5;var a: array [1..N] of integer; i, k: integer;

{ заполнение массива} ------------------------------

writeln; {перейти на новую строку}

writeln(‘Кол-во полож-ых эл-ов массива‘,k);end.

Program summa;const N = 5;var a: array [1..N] of integer; i, k: integer;

{ заполнение массива} ------------------------------

writeln; {перейти на новую строку}

writeln(‘Кол-во полож-ых эл-ов массива‘,k);end.

for i:=1 to n do if a[i]>0 then k:=k+1;

for i:=1 to n do if a[i]>0 then k:=k+1;

количество положительных

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

количество положительных

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

Page 5: Случайные числа на языке Паскаль

5

Вывод на экран элементов массива с заданными условиями

Program summa;const N = 5;var a: array [1..N] of integer; i: integer;

{ заполнение массива} -------writeln; {перейти на новую строку}

writeln(‘Результат:‘);

end.

Program summa;const N = 5;var a: array [1..N] of integer; i: integer;

{ заполнение массива} -------writeln; {перейти на новую строку}

writeln(‘Результат:‘);

end.

for i:=1 to n do begin if a[i]>0 then a[i]:= 0; write(a[i]:4); end;

for i:=1 to n do begin if a[i]>0 then a[i]:= 0; write(a[i]:4); end;

замена положительных элементов

массива нулями

замена положительных элементов

массива нулями

Page 6: Случайные числа на языке Паскаль

6

Определение макс-ого эл-та и его номера (индекса)

program qq;const N = 5;var a: array [1..N] of integer; i, iMax: integer;{ заполнение массива} -------

writeln; {перейти на новую строку}

writeln('Максимальный элемент a[', iMax, ']=', a[iMax]);end.

program qq;const N = 5;var a: array [1..N] of integer; i, iMax: integer;{ заполнение массива} -------

writeln; {перейти на новую строку}

writeln('Максимальный элемент a[', iMax, ']=', a[iMax]);end.

iMax := 1; for i:=2 to N if a[i] > a[iMax] then iMax := i;

iMax := 1; for i:=2 to N if a[i] > a[iMax] then iMax := i;

поиск максимального элемента и его индексапоиск максимального

элемента и его индекса

Page 7: Случайные числа на языке Паскаль

7

Определение максимального по заданному условию

program qq;const N = 5;var a: array [1..N] of integer; i, iMax: integer;{ заполнение массива} -------

writeln; {перейти на новую строку}

writeln('Макс. эл-т из отрицательных a[', iMax, ']=', a[iMax]);end.

program qq;const N = 5;var a: array [1..N] of integer; i, iMax: integer;{ заполнение массива} -------

writeln; {перейти на новую строку}

writeln('Макс. эл-т из отрицательных a[', iMax, ']=', a[iMax]);end.

iMax := 1; for i:=2 to N

if (a[i]<0) and (a[i] > a[iMax]) then iMax := i;

iMax := 1; for i:=2 to N

if (a[i]<0) and (a[i] > a[iMax]) then iMax := i;

поиск максимального из отрицательных

элементов

поиск максимального из отрицательных

элементов

Page 8: Случайные числа на языке Паскаль

8

Реверс массива

Задача: переставить элементы массива в обратном порядке.

Алгоритм:поменять местами A[1] и A[N], A[2] и A[N-1], …

Псевдокод:

3 5 … 9 7 7 9 … 5 3

1 2 … N-1 N 1 2 … N-1 N

for i:=1 to N do { поменять местами A[i] и A[N+1-i] }

for i:=1 to N do { поменять местами A[i] и A[N+1-i] }

сумма индексов N+1сумма индексов N+1

Что неверно??

N div 2 do

Page 9: Случайные числа на языке Паскаль

9

Как переставить элементы?

2

31

Задача: поменять местами содержимое двух чашек.

Задача: поменять местами содержимое двух ячеек памяти.

44 66

??44

66 44

x y

c

c := x;x := y;y := c;

c := x;x := y;y := c;

x := y;y := x;

x := y;y := x;

3

2

1

Можно ли обойтись без c??

Page 10: Случайные числа на языке Паскаль

10

Программа

program qq;const N = 10;var A: array[1..N] of integer; i, c: integer;begin { заполнить массив } { вывести исходный массив }

{ вывести полученный массив }end;

program qq;const N = 10;var A: array[1..N] of integer; i, c: integer;begin { заполнить массив } { вывести исходный массив }

{ вывести полученный массив }end;

for i:=1 to N div 2 do begin c:=A[i]; A[i]:=A[N+1-i]; A[N+1-i]:=c; end;

for i:=1 to N div 2 do begin c:=A[i]; A[i]:=A[N+1-i]; A[N+1-i]:=c; end;

Page 11: Случайные числа на языке Паскаль

11

Циклический сдвиг

Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего.

Алгоритм:

A[1]:=A[2]; A[2]:=A[3];… A[N-1]:=A[N];Цикл:

3 5 8 1 … 9 7

1 2 3 4 … N-1 N

5 8 1 … 9 7 3

for i:=1 to N-1 do A[i]:=A[i+1];

for i:=1 to N-1 do A[i]:=A[i+1];

Что неверно??почему не N?почему не N?

Page 12: Случайные числа на языке Паскаль

12

Программа

program qq;const N = 10;var A: array[1..N] of integer; i, c: integer;begin { заполнить массив } { вывести исходный массив }

{ вывести полученный массив }end;

program qq;const N = 10;var A: array[1..N] of integer; i, c: integer;begin { заполнить массив } { вывести исходный массив }

{ вывести полученный массив }end;

c := A[1]; for i:=1 to N-1 do A[i]:=A[i+1]; A[N] := c;

c := A[1]; for i:=1 to N-1 do A[i]:=A[i+1]; A[N] := c;

Page 13: Случайные числа на языке Паскаль

13

Удаление из массива k-ого элемента со сдвигом влево

Program summa;const N = 5;var a: array [1..N] of integer; i, k: integer;

{ заполнение массива} -------

end.

Program summa;const N = 5;var a: array [1..N] of integer; i, k: integer;

{ заполнение массива} -------

end.

writeln(‘Введите номер эл-та для удаления:');

read(k); for i:=k to N-1 do a[i]:=a[i+1];writeln(‘Результат:');

for i:=1 to N-1 do write(a[i]:4);

writeln(‘Введите номер эл-та для удаления:');

read(k); for i:=k to N-1 do a[i]:=a[i+1];writeln(‘Результат:');

for i:=1 to N-1 do write(a[i]:4);

Page 14: Случайные числа на языке Паскаль

14

Вставка в массив заданного числа на k-ое место со сдвигом вправо

Program summa;const N = 5;

var a: array [1..N+1] of integer;

i, k, c: integer;{ заполнение массива} -------

end.

Program summa;const N = 5;

var a: array [1..N+1] of integer;

i, k, c: integer;{ заполнение массива} -------

end.

writeln(‘Введите номер эл-та для вставки:'); read(k);writeln(‘Введите значение для вставки:'); read(с);

for i:= n+1 downto k+1 do a[i]:=A[i-1]; a[k]:=c; writeln(‘Результат:'); for i:=1 to N-1 do write(a[i]:4);

writeln(‘Введите номер эл-та для вставки:'); read(k);writeln(‘Введите значение для вставки:'); read(с);

for i:= n+1 downto k+1 do a[i]:=A[i-1]; a[k]:=c; writeln(‘Результат:'); for i:=1 to N-1 do write(a[i]:4);