679.70K
Категория: ПрограммированиеПрограммирование

Методы работы с одномерными массивами

1.

2.

2
Программирование
(Паскаль)

3.

Дан массив А[1..N].
Заменить отрицательные
элементы массива на
противоположные по знаку
For i:=1 to N do
If A[i]<0 then A[i]:=-A[i];

4.

Дан массив А[1..N].
Увеличить каждый элемент
массива на 25
For i:=1 to N do
A[i]:=A[i]+25;

5.

Дан массив А[1..N].
Если элемент четный, то прибавить к
нему первый элемент, если нечетный –
последний элементы массива. Первый
и последний элементы не изменять
For i:=2 to N-1 do
If A[i] mod 2=0 then A[i]:=A[i]+A[1]
else A[i]:=A[i]+A[N];

6.

Даны два одномерных массива А[1..N] и
В[1..N]. Получить третий массив С,
такой же размерности, каждый элемент
которого равен сумме соответствующих
элементов исходных массивов.
For i:=1 to N do
С[i]:=A[i]+В[i];

7.

Даны два одномерных массива А[1..N] и
В[1..N]. Получить третий массив С, такой
же размерности, каждый элемент которого
равен наибольшему из соответствующих
элементов исходных массивов.
For i:=1 to N do
If A[i] > В[i] then C[i]:=A[i]
else С[i]:=В[i];

8.

Дан массив А[1..N]. Изменить знак на
противоположный у максимального по
модулю элемента массива
Max:=Abs(A[1]); j:=1;
For i:=2 to N do
If Abs(A[i])>Max then
Begin Max:=Abs(A[i]);
j:=i
end;
A[j]:=-A[j];

9.

Дан массив А[1..N]. Изменить знак на
противоположный у максимального по
модулю элемента массива
j:=1;
For i:=2 to N do
If Abs(A[i])>Abs(A[j]) then j:=i
A[j]:=-A[j];

10.

Дан массив А[1..N].
Все четные элементы возвести в
квадрат, а нечетные - удвоить
For i:=1 to N do
If A[i] mod 2=0 then A[i]:=sqr(A[i])
else A[i]:=2*A[i];

11.

Дан массив А[1..N]. Из положительных
элементов вычесть элемент с номером к1, а
отрицательные элементы увеличить на
значение элемента с номером к2.
Нулевые элементы оставить без изменения
For i:=1 to N do
If A[i]>0 then A[i]:=A[i]-A[k1]
else If A[i]<0 then
A[i]:= A[i]+A[k2];

12.

Дан массив А[1..N]. Из положительных
элементов вычесть элемент с номером к1, а
отрицательные элементы увеличить на
значение элемента с номером к2.
Нулевые элементы оставить без изменения
w:=A[k1]; v :=A[k2];
For i:=1 to N do
If A[i]>0 then A[i]:=A[i]-w
else If A[i]<0 then
A[i]:= A[i]+v;

13.

Задача. Найти в массиве 2 наибольших элемента
5
i
1
2
8
А[i]
М1
М2
-10
5
-5
-5
5
2
3
3
М1?
М2?
-5
-10
Условие,
действие
Результ
ат
Ответ
(да,
нет)
5>-5
M2=-5
M1=5
да
-5
-5
А[1]>M1
M2:=M1
M1:=А[1]
2>5
2>-5
M2=2
нет
да
2
А[2]>M1
А[2]>M2
M2:=А[2]
2
8
1

14.

15.

Задача1.
Удалить из массива последний максимальный элемент
program qq;
begin
{ ввести массив}
{найти номер максимального элемента-к}
{сдвинуть все элементы массива,
начиная с k-го на один
элемент влево }
Псевдокод: алгоритм на
{ последнему элементу
массива
русском
языке с элементами
Паскаля.
присвоить 0}
{ вывести измененный массив на экран }
end.
! Компьютер не может исполнить псевдокод!
15

16.

16
Поиск максимального элемента массива
? Как найти номер последнего
максимального элемента массива?
k:=1;
For i:=2 to N do
If A[i] >A[k] then k:=i
? Как найти номер первого
максимального элемента массива?
k:=N;
For i:=N-1 downto 1 do
If A[i] >A[k] then k:=i

17.

17
Сдвиг элементов массива
? Как сдвинуть элементы массива влево,
начиная с позиции к?
For i:=к to N-1 do A[i]:=A[i+1];
A[N]:=0;
? Как сдвинуть элементы массива
вправо, начиная с позиции к?
For i:=к downto 2 do
A[i]:=A[i-1];
A[1]:=0;

18.

Задача 2.
Удалить из массива все элементы, равные максимальному
program qq1;
begin
{ ввести массив}
{найти максимальный элемент Amax}
{просматривая элементы массива слева направо
выполняем следующие действия:
- находим элемент, равный Amax
- сдвигаем все элементы массива, начиная с
позиции найденного элемента на один элемент
влево
-последнему элементу массива присваиваем 0}
{ вывести измененный массив на экран }
end.
18

19.

Задача 3.
Вставить заданное число M после первого максимального
элемента массива
program qq2;
begin
{ ввести массив}
{найти номер первого максимального
элемента-к}
{сдвинуть все элементы массива, начиная
с k+1-го на одну позицию вправо}
{ элементу массива с номером k+1
присвоить значение M}
{ вывести измененный массив на экран }
end.
19

20.

20
Идея решения задачи
? Как найти номер первого
максимального элемента массива?
k:=N;
For i:=N-1 downto 1 do
If A[i] >A[k] then k:=i;
? Как сдвинуть элементы массива
вправо, начиная с позиции к+1?
For i:=N downto k+1 do
A[i+1]:=A[i];
A[k+1]:=M; N:=N+1;

21.

21
Ответьте на вопросы
? Как вставить заданное число перед первым
максимальным элементом массива?
For i:=N downto k do
A[i+1]:=A[i];
A[k]:=M; N:=N+1;
? Как вставить заданное число перед
каждым максимальным элементом
массива?
? Как вставить заданное число после
каждого максимального элемента
массива?

22.

22
Программирование
(Паскаль)
Подготовка к практической
работе по теме «Алгоритмы
обработки массивов»

23.

Отчет по практической работе №
«Работа с одномерными массивами»
Условие задачи.
Данные о росте 15 юношей класса,
упорядоченные по убыванию, записаны
в массиве. В начале учебного года
поступил новый ученик. Получить
аналогичный массив, учитывающий
рост нового ученика

24.

1. Информационная модель
Исходные данные.
N – количество элементов массива
А [1..N] - массив целых чисел, каждый элемент
которого - рост соответствующего учащегося.
R – рост прибывшего ученика
Результат
В [1..N] - массив целых чисел, каждый элемент
которого - рост соответствующего учащегося.
Дополнительные переменные
i – переменная цикла (счетчик, порядковый номер
ученика в цикле)
M – номер позиции в массиве нового ученика

25.

2. Идея решения задачи
1. Ввести N и R
2. Ввести массив А [1..N](упорядочен по
убыванию)
3.Определить порядковый номер элемента
массива, после которого необходимо
вставить число R (М)
4.Переписать в массив В все элементы
массива А, начиная с 1 по М
5. В[M]:=R
6. Переписать в массив В все элементы
массива А, начиная с М+1 по N
7. вывести на экран массив В

26.

Блок-схема
Начало
M:=i
i:=1
i:=1, M-1
N, R
A[i]>R
и i<=N
i:=1, N
B[i}:=A[i}
i:=i+1
B[M}:=R
A[i]
Конец
i:=1, N+1
i:=M+1, N
B[i]
B[i}:=A[i}

27.

Программа
Program PR1;
const NM = 15;
var A,B: array[1..NM] of integer;
N, i, M:integer;
Begin
Write(‘N=‘);Readln(N);
Write(‘R=‘);Readln(R);
for i:=1 to N do Read (A[i]);
i:= 1;
While (A[i]>R) and (i<=N) do inc(i);
…;
End.

28.

Компьютерный эксперимент
Компьютерный эксперимент 1
N=… R=…
A
B
Компьютерный эксперимент 3
N=…
Компьютерный эксперимент 2
N=…
A
B

29.

Выводы по практической работе.
1. Разработала
2. Выполнила
3. Провела
4. Проверила
Результаты компьютерных экспериментов
показали, что задача решена верно
English     Русский Правила