• УМОЛЯЮ ПОМОГИТЕ С ЗАДАЧЕЙ ПО ИНФОРМАТИКЕ!!
    Заполнить массив случайными числами, отсортировать его. Ввести х, используя двоичный поиск определить есть ли в массиве число равное х посчитать количество сравнений
    ПОЖАЛУЙСТА НА ЯЗЫКЕ Pascal! С ПОНЯТНЫМ РЕШЕНИЕМ БЕЗ TARRAY и логических функций!

Ответы 1

  • const  n = 20;var  a: array[1..n] of integer;  i,j,k,m,li,ri,mi,s,x: integer;begin  Write('Введите ключ поиска (0-49): '); Read(x);  { заполнить массив значениями }  Randomize;  Writeln('Элементы массива');  for i := 1 to n do  begin    a[i] := Random(50);    Write(a[i]:3);  end;  Writeln;  { сортировка }  for i := 1 to n-1 do    for j := 1 to n-i do      if a[j] > a[j+1] then      begin s := a[j]; a[j] := a[j+1]; a[j+1] := s end;  Writeln('Отсортированный по возрастанию массив');  for i := 1 to n do Write(a[i]:3);  Writeln;  { бинарный поиск }  li:=1; ri:=n; k:=0;  while li<ri do begin    mi:=(li+ri) div 2;    if a[mi]<x then li:=mi+1 else ri:=mi;    Inc(k)  end;  if a[ri]=x then m:=ri else m:=0;  { вывод результатов }  if m>0 then Writeln('Найден элемент № ',m,'; число шагов равно ',k)  else Writeln('Такого элемента в массиве нет');end.Тестовое решение:Введите ключ поиска (0-49): 25Элементы массива 33 47  1 28 31 36 15 25 49 35 30 48 24  0 39 35  7 20 25  0Отсортированный по возрастанию массив  0  0  1  7 15 20 24 25 25 28 30 31 33 35 35 36 39 47 48 49Найден элемент № 8; число шагов равно 4Вариант с процедурамиconst  n = 20;type  V=array[1..n] of integer;procedure SortBySelect(var a:V);{Сортировка выбором}var   i, j, k: integer;  x: integer;begin  for i := 1 to n do    begin    k := i;    x := a[i];    for j := i+1 to n do      if a[j]<x then      begin        k := j;        x := a[j]      end;      a[k] := a[i];      a[i] := x    endend;  procedure BinSearch(var a:V;key:integer;var k,m:integer);var  li,ri,mi:integer;begin  li:=1; ri:=n; k:=0;  while li<ri do begin    mi:=(li+ri) div 2;    if a[mi]<key then li:=mi+1 else ri:=mi;    Inc(k)  end;  if a[ri]=key then m:=ri else m:=-1end;var  a:V;  i,k,m,x: integer;begin  Write('Введите ключ поиска (0-49): '); Read(x);  { заполнить массив значениями }  Randomize;  Writeln('Элементы массива');  for i := 1 to n do  begin    a[i] := Random(50);    Write(a[i]:3);  end;  Writeln;  SortBySelect(a); { сортировка выбором }  Writeln('Отсортированный по возрастанию массив');  for i := 1 to n do Write(a[i]:3);  Writeln;  BinSearch(a,x,k,m); { бинарный поиск }  if m>0 then Writeln('Найден элемент № ',m,'; число шагов равно ',k)  else Writeln('Такого элемента в массиве нет');end.Тестовое решение:Введите ключ поиска (0-49): 32Элементы массива 46 24 32 32 23 32  4 26 47  4 44  8 39  8 15 39 11 45  5 16Отсортированный по возрастанию массив  4  4  5  8  8 11 15 16 23 24 26 32 32 32 39 39 44 45 46 47Найден элемент № 12; число шагов равно 5
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years