Случайные числа на языке Паскаль
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 PresentationTRANSCRIPT
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
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];
сумма всех элементов массива
сумма всех элементов массива
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];
сумма всех положительных
элементов массива
сумма всех положительных
элементов массива
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;
количество положительных
элементов массива
количество положительных
элементов массива
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;
замена положительных элементов
массива нулями
замена положительных элементов
массива нулями
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;
поиск максимального элемента и его индексапоиск максимального
элемента и его индекса
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;
поиск максимального из отрицательных
элементов
поиск максимального из отрицательных
элементов
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
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??
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;
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?
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;
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);
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);