A[1]

advertisement
1
Программирование
на языке Паскаль
Обработка массивов
2
Реверс массива
Задача: переставить элементы массива в обратном
порядке.
1
2
…
N-1
N
3 5 … 9 7
Алгоритм:
1
2
…
N-1
N
7 9 … 5 3
сумма индексов N+1
поменять местами A[1] и A[N], A[2] и A[N-1], …
Псевдокод:
for i:=1 to NN do
div 2 do
{ поменять местами A[i] и A[N+1-i] }
?
Что неверно?
3
Как переставить элементы?
Задача: поменять местами
содержимое двух чашек.
2
Задача: поменять местами содержимое двух ячеек
памяти.
y
x
x := y;
y := x;
?
c := x;
x := y;
y := c;
4
6
Можно ли обойтись без c?
2
?
4
c
6
4
Программа
program qq;
const N = 10;
var A: array[1..N] of integer;
i, c: integer;
begin
{ заполнить массив }
{ вывести исходный массив }
for i:=1 to N div 2 do begin
c:=A[i]; A[i]:=A[N+1-i]; A[N+1-i]:=c;
end;
{ вывести полученный массив }
ReadLn
end.
4
5
Задания
"4": Заполнить массив из 10 элементов случайными числами в
интервале [-10..10] и выполнить инверсию отдельно для
1-ой и 2-ой половин массива.
Пример:
Исходный массив:
4
-5
3 10 -4 -6 8 -10 1 0
Результат:
-4 10
3 -5
4
0 1 -10 8 -6
"5": Заполнить массив из 12 элементов случайными числами в
интервале [-12..12] и выполнить инверсию для каждой
трети массива.
Пример:
Исходный массив:
4
-5
3 10
-4
Результат:
10
3 -5
4 -10
-6
8
8 -10
-6
-4
1
0
5
7
7
5
0
1
6
Циклический сдвиг
Задача: сдвинуть элементы массива влево на 1 ячейку,
первый элемент становится на место последнего.
1
2
3
4
…
N-1
N
3 5 8 1 … 9 7
5 8 1 … 9 7 3
Алгоритм:
A[1]:=A[2]; A[2]:=A[3];… A[N-1]:=A[N];
Цикл:
почему не N?
for i:=1 to N-1 do
A[i]:=A[i+1];
?
Что неверно?
Программа
program qq;
const N = 10;
var A: array[1..N] of integer;
i, c: integer;
begin
{ заполнить массив }
{ вывести исходный массив }
c := A[1];
for i:=1 to N-1 do A[i]:=A[i+1];
A[N] := c;
{ вывести полученный массив }
end;
7
8
Задания
"4": Заполнить массив из 10 элементов случайными числами в
интервале [-10..10] и выполнить циклический сдвиг
ВПРАВО.
Пример:
Исходный массив:
4
-5
3 10 -4 -6 8 -10 1 0
Результат:
0
4
-5
3 10 -4 -6 8 -10 1
"5": Заполнить массив из 12 элементов случайными числами в
интервале [-12..12] и выполнить циклический сдвиг
ВПРАВО на 4 элемента.
Пример:
Исходный массив:
4
-5
3 10 -4
Результат:
-4 -6
8 -10
1
-6
0
8 -10
1
0
5
7
5
4 -5
3
10
7
Сформировать одномерный массив из N
элементов, где элементы и массива- целые
случайные числа в пределах от 1 до 45.
Напечатать элементы массива в прямом и
обратном порядке.
Вычисление суммы положительных
элементов массива
•
•
program prim1;
uses crt;
var i, n:integer;
a:array[1..10000] of integer;
begin
clrscr;
randomize;
write(' размер =' );readln(n);
for i:=1 to n do
begin
{Получаем случайные числа в пределах от
1 до 45.}
a[i]:=random(46))+1;
{Выводим элементы массива на экран.}
write(a[i], ‘ ' );
end;
writeln(‘ ' );
{Полученный массив печатаем в
обратном порядке.}
for i:=n downto 1 do
write(a[i],' ');
readkey;
end.
•
program PositivSumm;
const N=10;
type Mas=array [1..N] of integer;
var a: Mas;
i: integer; { Счетчик цикла}
S:integer; { Копилка - переменная для
суммирования положительных элементов}
begin
{ Заполним массив случайными числами в
диапазоне -100..+100 }
randomize;
for i:=1 to N do
begin
a[i]:=-100+random(201);
write(a[i]:5)
end;
writeln;
{ Присвоим переменным начальные значения }
S:=0; { Переменная S - аккумулятор. Она будет
накапливать сумму всех положительных
элементов. Нужно присвоить ей такое
начальное значение, чтобы оно не повлияло на
результат суммирования. Таким числом
является ноль }
for i:=1 to N do { Перебираем все элементы
массива }
if A[i]>0 then { Проверяем каждый элемент на
положительность }
S:=S+A[i]; { Если элемент положительный,
добавляем значение элемента к аккумулятору }
{ Выводим результат на экран: }
writeln('Сумма положительных элементов =',S);
readln
end.
Вычисление суммы положительных
элементов массива
•
program PositivSumm;
const N=10;
type Mas=array [1..N] of integer;
var a: Mas;
i: integer; { Счетчик цикла}
S:integer; { Копилка - переменная для суммирования положительных элементов}
begin
{ Заполним массив случайными числами в диапазоне -100..+100 }
randomize;
for i:=1 to N do
begin
a[i]:=-100+random(201);
write(a[i]:5)
end;
writeln;
{ Присвоим переменным начальные значения }
S:=0; { Переменная S - аккумулятор. Она будет накапливать сумму всех положительных элементов.
Нужно присвоить ей такое начальное значение, чтобы оно не повлияло на результат суммирования.
Таким числом является ноль }
for i:=1 to N do { Перебираем все элементы массива }
if A[i]>0 then { Проверяем каждый элемент на положительность }
S:=S+A[i]; { Если элемент положительный, добавляем значение элемента к аккумулятору }
{ Выводим результат на экран: }
writeln('Сумма положительных элементов =',S);
readln
end.
Download