Семинар 4
Задание 1. После каждого элемента массива с положительным значением вставить новый элемент с заданным значением.
Вставка нового элемента в массив осуществляется следующим образом. Рассмотрим элементы массива, начиная с последнего элемента. Пусть I - номер элемента массива A, после которого нужно вставить новый элемент со значением Value. Первые I элементов массива A остаются без изменений; все остальные элементы, начиная с I+1 - го, необходимо сдвинуть на один вправо. На место I+1- го элемента поместить значение Value, то есть после I-го элемента массива.
-
Постановка задачи
Дано. Одномерный массив чисел и значение Value.
Требуется. После каждого элемента массива с положительным значением вставить новый элемент с заданным значением.
При:
-
Число элементов N<=20.
-
Значения элементов – целые числа.
-
Значение Value – целое число.
-
Связь
Присвоить начальные значения переменным:
-
I - (текущий номер элемента массива) - N.
-
Kol – (количество вставленных элементов) – 0.
Для каждого элемента массива проверить условие. Если A[I] >0 , то сдвинем вправо элементы с номера от N+Kol до I+1.
После завершения сдвига, присвоить элементу массива с номером I+1 значение Value и увеличить значение переменной Kol на 1(Kol:=Kol+1).
Если I>1 , то перейти к следующему элементу массива - I:=I-1, в противном случае определить новое число элементов в массиве (N:=N+Kol) и вывести значения элементов массива.
-
Внешняя спецификация.
Назначение:
После каждого элемента массива с положительным значением вставить новый элемент с заданным значением.
Входн. данные:
N – число элементов в массиве.
A1, A2… AN – значения элементов массива.
Value – значение, которое вставляется в массив.
Вых. данные.
После каждого элемента массива с положительным значением вставить новый элемент с заданным значением .
Число элементов массива <=20 <N>
Значения элементов массива – целые числа
<A1>
.
.
<AN>
Вставляемое значение = < Value >
В исходном массиве <N> элементов
<A1> <A2> … <AN>
В преобразованном массиве <N> элементов
<A1> <A2> … <AN>
-
Запись алгоритма на РАЯ
Алгоритм " После каждого элемента массива с положительным значением вставить новый элемент с заданным значением ".
Внутренние переменные : N: цел. {количество элементов массива} A[1 .. 20] : цел. {одномерный массив, в котором можно разместить от 1 до 20 элементов - целых чисел} Value : цел. {значение, которое вставляется в массив}
Kol: цел. {количество элементов, вставленных в массив}
I, J : цел. {текущие номера элементов массива} Начало
Вывод (‘После каждого элемента массива с положительным значением вставить новый элемент с заданным значением ’) Вывод ('Число элементов массива <=20') Ввод (N) Вывод ('Значения элементов массива – целые числа') Цикл - для I от 1 до N Ввод (A[I]) Кцикл
Вывод (‘Вставляемое значение = ’)
Ввод (Value)
Вывод (‘В исходном массиве ’, N, ‘ элементов’)
Цикл - для I от 1 до N Вывод (A[I]) Кцикл
Kol:=0
Цикл - для I от N до 1
Если A[I]>0 то
{Сдвиг элементов массива вправо} Цикл - для J от N+Kol до I+1
A[J+1]:=A[J]
Кцикл
{Вставка нового элемента} A[I+1]:= Value
{Определение количества элементов, вставленных в массив}
Kol:=Kol+1
Кесли Кцикл
{Количество элементов в массиве после вставки}
N:=N+Kol
Вывод (‘В преобразованном массиве ’, N, ‘ элементов’)
Цикл - для I от 1 до N Вывод (A[I]) Кцикл
Конец
-
Тест для проверки алгоритма
Тест 1
Число элементов массива - N=5
Исходный массив 3 -3 2 14 7
Значение X - -1
Преобразованный массив 3 -1 -3 2 -1 14 -1 7 -1
Задание 2. Удалить из массива все элементы с заданным значением.
-
Постановка задачи
Дано. Одномерный массив чисел и значение Value.
Требуется. Удалить из массива все элементы, значение которых равно Value.
При:
-
Число элементов N<=20.
-
Значения элементов – целые числа.
-
Значение Value – целое число.
-
Связь
Присвоить начальные значения переменным:
-
I - (текущий номер элемента массива) - N.
-
Kol – (количество удаленных элементов) – 0.
Для каждого элемента массива проверить условие. Если A[I]= Value , то сдвинуть влево все элементы массива, начиная с элемента с номером I+1 и заканчивая элементом с номером N-1. Увеличить значение переменной Kol на 1(Kol:=Kol+1).
Если I>1 , то перейти к следующему элементу массива - I:=I-1, в противном случае определить новое число элементов в массиве (N:=N-Kol) и вывести значения элементов массива.
-
Внешняя спецификация.
Назначение:
Удалить из массива все элементы с заданным значением.
Входн. данные:
N – число элементов в массиве.
A1, A2… AN – значения элементов массива.
Value – значение, которое удаляется из массива.
Вых. данные.
Удалить из массива все элементы с заданным значением.
Число элементов массива <=20 <N>
Значения элементов массива – целые числа
<A1>
.
.
<AN>
Значение переменной Value = <Value>
В исходном массиве <N> элементов
<A1> <A2> … <AN>
В преобразованном массиве <N> элементов
<A1> <A2> … <AN>
-
Запись алгоритма на РАЯ
Алгоритм " Удалить из массива все элементы с заданным значением".
Внутренние переменные : N: цел. {количество элементов массива} A[1 .. 20] : цел. {одномерный массив, в котором можно разместить от 1 до 20 элементов - целых чисел} Value : цел. {значение, которое удаляется из массива}
Kol: цел. {количество элементов, удаленных из массива}
I, J : цел. {текущие номера элементов массива} Начало
Вывод (‘Удалить из массива все элементы с заданным значением’) Вывод ('Число элементов массива <=20') Ввод (N) Вывод ('Значения элементов массива – целые числа') Цикл - для I от 1 до N Ввод (A[I]) Кцикл
Вывод (‘Значение переменной Value равно ’)
Ввод (Value)
Вывод (‘В исходном массиве ’, N, ‘ элементов’)
Цикл - для I от 1 до N Вывод (A[I]) Кцикл
Kol:=0
Цикл - для I от N до 1
Если A[I]=Value то
{Сдвиг элементов массива влево} Цикл - для J от I до N-1
A[J]:=A[J+1]
Кцикл
{Определение количества элементов, удаленных из массива}
Kol:=Kol+1
Кесли Кцикл
{Количество элементов в массиве после удаления}
N:=N-Kol
Вывод (‘В преобразованном массиве ’, N, ‘ элементов’)
Цикл - для I от 1 до N Вывод (A[I]) Кцикл
Конец
-
Тест для проверки алгоритма
Тест 1
Число элементов массива - N=5
Исходный массив 3 -3 2 3 7 3
Значение Value - 3
Преобразованный массив -3 2 7
Задача для самостоятельной работы
-
Разработать программу для вставки в массив элементов с заданным значением перед каждым положительным элементом массива.
-
Разработать программу для удаления из массива элементов с отрицательными значениями.
