Задать вопрос
5 октября, 04:01

Дан

массив целых чисел (n=15),

заполненный случайным образом числами из промежутка [-20,50].

-

удалить из него все элементы, в которых есть цифра 5.

-

вставить число k

после всех элементов, кратных своему номеру (k вводить с клавиатуры).

-

поменять местами первый положительный и последний отрицательный элементы.

На паскале)

+4
Ответы (1)
  1. 5 октября, 04:30
    0
    Const

    n = 15;

    Flag = 111;

    type

    Mas = array[1 ... n] of integer;

    procedure ShiftLeft (var A: Mas; nPos: integer) ;

    / / Элементы массива A, начиная с номера nPos, сдвигаются на один к началу массива

    / / Последний элемент массива заносится значением 111

    var

    i: integer;

    begin

    for i : = nPos to n - 1 do

    A[i] : = A[i + 1];

    A[n] : = Flag

    end;

    procedure ShiftRight (var A: Mas; nPos: integer) ;

    / / Элементы массива A, начиная с номера nPos, сдвигаются на один к концу массива

    / / Последний элемент массива теряется, элемент с номером nPos заносится значением 111

    var

    i: integer;

    begin

    for i : = n downto nPos + 1 do

    A[i] : = A[i - 1];

    A[nPos] : = Flag

    end;

    function Contains5 (p: integer) : Boolean;

    / / Возвращает true, если в числе p есть хоть одна цифра 5

    / / Возвращает false в противном случае

    var

    s: string;

    begin

    Str (p, s) ;

    Contains5 : = (Pos ('5', s) > 0)

    end;

    procedure DeleteAll5 (var A: Mas) ;

    / / Удаляет из массива А все элементы, содержащие цифру 5

    var

    i, j: integer;

    begin

    i : = 1; / / текущая позиция в массиве

    j : = n; / / количество непросмотренных элементов

    while j > 0 do

    begin

    if Contains5 (A[i]) then

    ShiftLeft (A, i)

    else

    i : = i + 1;

    j : = j - 1

    end;

    end;

    function Fold (var A: Mas; pStart: integer) : integer;

    / / Возвращает номер элемента в массиве А, значение которого кратно его номеру

    / / pStart - номер элемента, с которого начинается просмотр

    / / Если такого элемента не найдено, возвращается ноль.

    var

    i: integer;

    begin

    for i : = pStart to n do

    if A[i] mod i = 0 then begin

    Fold : = i;

    Exit

    end;

    Fold : = 0

    end;

    procedure InsertK (var A: Mas; k: integer) ;

    / / После всех элементов массива, кратных своему номеру,

    / / вставляет значение k, сдвигая оставшиеся элементы

    / / к концу массива

    var

    i, j: integer;

    begin

    i : = 1;

    while i < = n do

    begin

    j : = Fold (A, i) ;

    if j > 0 then begin

    ShiftRight (A, j) ;

    A[j] : = k;

    i : = j + 1

    end

    else

    i : = n + 1

    end

    end;

    function GetFirstPos (var A: Mas) : integer;

    / / Возвращает номер первого положительного элемента в массиве А

    / / Возвращает ноль, если таких элементов нет.

    var

    i: integer;

    begin

    i:=1;

    while i < = n do

    begin

    if A[i] > 0 then begin

    GetFirstPos : = i;

    Exit

    end

    else

    i : = i + 1

    end;

    GetFirstPos : = 0

    end;

    function GetLastNeg (var A: Mas) : integer;

    / / Возвращает номер последнего по порядку отрицательного элемента в массиве А

    / / Возвращает ноль, если таких элементов нет.

    var

    i: integer;

    begin

    i:=n;

    while i > = 1 do

    begin

    if A[i] < 0 then begin

    GetLastNeg : = i;

    Exit

    end

    else

    i : = i - 1

    end;

    GetLastNeg : = 0

    end;

    procedure Swap (var A: Mas; p: integer; q: integer) ;

    / / Обмен местами элементов массива A[p] и A[q]

    var

    s: integer;

    begin

    s : = A[p]; A[p] : = A[q]; A[q] : = s

    end;

    var

    M: Mas;

    k, i, j: integer;

    begin

    / / Инициализация массива

    Randomize;

    writeln ('Исходный массив') ;

    for i : = 1 to n do

    begin

    M[i] : = random (70) - 20;

    write (M[i]:4)

    end;

    writeln;

    DeleteAll5 (M) ; / / Удаление элементов, содержащих цифру 5

    writeln ('После удаления элементов, содержащих цифру 5') ;

    for i : = 1 to n do

    write (M[i]:4) ;

    writeln;

    writeln ('Введите значение k') ;

    readln (k) ;

    InsertK (M, k) ;

    writeln ('После вставки значения k') ;

    for i : = 1 to n do

    write (M[i]:4) ;

    writeln;

    i : = GetFirstPos (M) ;

    if i > 0 then begin

    j : = GetLastNeg (M) ;

    if j > 0 then begin

    Swap (M, i, j) ;

    writeln ('После обмена местами пары элементов') ;

    for i : = 1 to n do

    write (M[i]:4) ;

    writeln;

    end

    end

    end.

    Тестовое решение:

    Исходный массив

    -2 - 5 43 12 13 5 - 7 9 27 5 47 45 28 34 21

    После удаления элементов, содержащих цифру 5

    -2 43 12 13 - 7 9 27 47 28 34 21 111 111 111 111

    Введите значение k

    222

    После вставки значения k

    222 222 - 2 43 12 13 222 - 7 222 9 27 47 28 34 21

    После обмена местами пары элементов

    -7 222 - 2 43 12 13 222 222 222 9 27 47 28 34 21
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Дан массив целых чисел (n=15), заполненный случайным образом числами из промежутка [-20,50]. - удалить из него все элементы, в которых есть ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Хотя бы 3-4 задачи! 1) Дан одномерный целочисленный массив размерностью N. Найдите количество элементов, которые кратны 3 (5). 2) Дан одномерный целочисленный массив А, состоящий из N элементов. Найти сумму всех четных элементов массива.
Ответы (1)
Помогите решить задачи на паскаль. 1) Дан массив случайных чисел (количество элементов вводите с клавиатуры). Найти произведение всех элементов массива. 2) Дан массив случайных чисел (количество элементов вводите с клавиатуры).
Ответы (1)
1. Дан одномерный массив размерностью 10, заполненный целыми числами, введенными с клавиатуры, и величина N. Отрицательные элементы заменить на N. Измененный массив вывести на экран одной строкой. 2.
Ответы (1)
Двумерные массивы. Paskal Дан массив целых чисел (n=20), заполненный случайным образом числами из промежутка [-45; 95].
Ответы (1)
Ан массив целых чисел n=14 заполненный случайным образом числами из промежутка [-15 30] 1) удалить последний четный элемент 2) поменять местами первую и вторую его половины.
Ответы (1)