Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_Метод_Часть_4_Массивы.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
620.54 Кб
Скачать

2.7. Определение k-го вхождения определенного значения

Алгоритм решения

Нахождение К-го вхождения определенного значения производится по аналогии с предыдущим типом задач, за исключением того, что здесь должен дополнительно присутствовать счетчик вхождения определенного значения.

пример 9

Дан массив чисел. Найти номер третьего элемента, который принадлежит интервалу (а,b).

Тест

Данные

Результат

N=10

A=(-3, 5, -2, 4, 0, 7, 2, 8, 3, -2)

a = 1

b = 5

A(7) = 2

Исполнение алгоритма

i

Проверка условия

K

(счетчик вхождений)

Третий элемент, принадлежащий (a,b)

L

(номер элемента, принадлежащего (a,b))

1

A(1)(1,5) (ложь)

-3(1,5)

2

A(2)(1,5) (истина)

5 (1,5)

1

2

3

A(3)(1,5) (ложь)

-2(1,5)

4

A(4)(1,5) (истина)

4(1,5)

2

4

5

A(5)(1,5) (ложь)

0(1,5)

6

A(6)(1,5) (ложь)

7(1,5)

7

A(7)(1,5) (истина)

2(1,5)

3

А(7) = 2

7

Блок-схема алгоритма

Начало

Ввод n,

a, b

i=1,n

Ввод Ai

K=0 ; i=1

K <3;i<=n

+ Ai>=a -

Ai<=b

L=i ; K=K+1

i=i+1

L

Конец

программа

1 Способ (с помощью оператора цикла for...Next)

CLS

INPUT "введи размер массива " ; n

DIM A(n)

INPUT "введи интервал (a,b) " ; a, b

PRINT "введи массив"

'Цикл по элементам массива

FOR i = 1 TO n

'Ввод элементов массива

INPUT A(i)

NEXT i

'Поиск третьего элемента, принадлежащего (a,b)

FOR i = 1 TO n

IF A(i) >= a AND A(i) <= b THEN L = i : K = K + 1

IF K = 3 THEN EXIT FOR

NEXT i

IF K < 3 THEN

PRINT " третьего элемента, принадлежащего (а,b) нет "

ELSE

PRINT "номер третьего элемента, принадлежащего (а,b)=" ; L

PRINT "его значение =" ; A(L)

END IF

ЕND

2 Способ (с помощью оператора цикла while...Wend)

CLS

INPUT "введи размер массива " ; n

DIM A(n)

INPUT "введи интервал (a,b) " ; a, b

PRINT "введи массив"

'Цикл по элементам массива

FOR i = 1 TO n

'Ввод элементов массива

INPUT A(i)

NEXT i

'Присваивание начального значения счетчика цикла

i = 1

'Присваивание начального значения счетчика вхождения

K = 0

'Поиск третьего элемента, принадлежащего (a,b)

WHILE K < 3 OR i < = n

IF A(i) >= a AND A(i) <= b THEN L = i : K = K + 1

i = i + 1

WEND

IF K < 3 THEN

PRINT " третьего элемента, принадлежащего (а,b) нет "

ELSE

PRINT "номер третьего элемента, принадлежащего (а,b)=" ; L

PRINT "его значение =" ; A(L)

END IF

END

пример 10

Дан массив чисел. Заменить второй максимальный элемент на 1.

программа

CLS

INPUT "введи размер массива " ; n

DIM A(n)

PRINT "введи массив"

FOR i = 1 TO n

'Ввод элементов массива

INPUT A(i)

NEXT i

'Определение начального значения максимума

MAX = A(1)

'Нахождение наибольшего значения

FOR I = 2 TO n

IF A(i) > MAX THEN MAX = A(i)

NEXT i

'Определение второго по порядку максимального значения и замена его на 1

FOR i = 1 TO n

IF A(i) = MAX THEN L = i : K = K + 1

IF K = 2 THEN A(L) = 1 : EXIT FOR

NEXT i

FOR i = 1 TO n

'Вывод массива на печать

PRINT A(i);

NEXT i

END