Задать вопрос
16 ноября, 00:12

Напишите программу, работающую с одним массивом из 10 элементов целочисленного типа. Программа просит пользователя заполнить массив целыми значениями, затем упорядочивает этот массив по возрастанию, используя сортировку методом простого выбора. После этого программа просит пользователя ввести одно целое значение, и, используя алгоритм двоичного поиска, определяет, имеется ли данное значение в массиве. В процессе сортировки программа считает, сколько раз производились перестановки элементов (обмен значениями двух разных элементов считается за одну перестановку), и сколько раз производились сравнения значений элементов массива с какими либо другими значениями. Количество сравнений и перестановок выводится на экран перед завершением работы программы.

Pascal ABC

+1
Ответы (1)
  1. 16 ноября, 02:20
    0
    Const

    N = 10;

    Var

    A:array[1 ... N] of integer;

    i, j, M, B, C, p, s:integer;

    Begin

    Randomize;

    {Заполнение и вывод}

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

    For i: = 1 to N do

    Begin

    A[i]:=random (N) ;

    Write (' ', A[i]) ;

    End;

    WriteLn;

    {Сортировка}

    p:=0;

    For i: = 1 to N do

    Begin

    M:=i;

    For j: = i+1 to N do

    if A[j]
    if Mi then

    Begin

    B:=A[M];

    A[M]:=A[i];

    A[i]:=B;

    p:=p+1;

    {Вывод каждого шага сортировки}

    Write ('Перестановка №', p,':') ;

    For j: = 1 to N do

    Write (' ', A[j]) ;

    WriteLn;

    End;

    End;

    WriteLn;

    Write ('Отсортированный массив:') ;

    For i: = 1 to N do

    Write (' ', A[i]) ;

    {Бинарный поиск}

    WriteLn;

    Write ('Введите число: ') ; ReadLn (C) ;

    m:=N div 2;

    i:=1;

    j:=N;

    s:=0;

    While (A[m]C) and (i<=j) do

    Begin

    if C > A[m] then i:=m+1

    else j:=m-1;

    s:=s+1;

    m: = (i+j) div 2;

    End;

    WriteLn;

    if A[m]=C then WriteLn ('В массиве есть данное число')

    else WriteLn ('В массиве нет данного числа') ;

    WriteLn ('Кол-во перестановок за сортировку: ', p) ;

    WriteLn ('Кол-во сравнений за поиск: ', s) ;

    End.

    Примеры:

    Исходный массив: 0 4 5 4 1 2 6 7 0 7

    Перестановка №1: 0 0 5 4 1 2 6 7 4 7

    Перестановка №2: 0 0 1 4 5 2 6 7 4 7

    Перестановка №3: 0 0 1 2 5 4 6 7 4 7

    Перестановка №4: 0 0 1 2 4 5 6 7 4 7

    Перестановка №5: 0 0 1 2 4 4 6 7 5 7

    Перестановка №6: 0 0 1 2 4 4 5 7 6 7

    Перестановка №7: 0 0 1 2 4 4 5 6 7 7

    Отсортированный массив: 0 0 1 2 4 4 5 6 7 7

    Введите число: 3

    В массиве нет данного числа

    Кол-во перестановок за сортировку: 7

    Кол-во сравнений за поиск: 4

    Исходный массив: 4 4 1 3 4 4 5 0 7 2

    Перестановка №1: 0 4 1 3 4 4 5 4 7 2

    Перестановка №2: 0 1 4 3 4 4 5 4 7 2

    Перестановка №3: 0 1 2 3 4 4 5 4 7 4

    Перестановка №4: 0 1 2 3 4 4 4 5 7 4

    Перестановка №5: 0 1 2 3 4 4 4 4 7 5

    Перестановка №6: 0 1 2 3 4 4 4 4 5 7

    Отсортированный массив: 0 1 2 3 4 4 4 4 5 7

    Введите число: 5

    В массиве есть данное число

    Кол-во перестановок за сортировку: 6

    Кол-во сравнений за поиск: 2
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Напишите программу, работающую с одним массивом из 10 элементов целочисленного типа. Программа просит пользователя заполнить массив целыми ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы