УМОЛЯЮ ПОМОГИТЕ С ЗАДАЧЕЙ ПО ИНФОРМАТИКЕ!! Заполнить массив случайными числами,...

0 голосов

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


спросил от Начинающий (304 баллов) в категории Информатика
оставил комментарий от Архангел (142k баллов)

Сейчас вариант на процедурах еще напишу

оставил комментарий от Начинающий (304 баллов)

хорошо, буду ждать

оставил комментарий от Архангел (142k баллов)

Все... сдавай и занимайся свой историей...

оставил комментарий от Начинающий (304 баллов)

хорошо

оставил комментарий от Начинающий (304 баллов)

как сдать? Я просто только сегодня зарегался

оставил комментарий от Архангел (142k баллов)

А какое отношение имеет Ваша сдача задания где-то к регистрации на этом Сервисе? Текст ответа к себе копируйте и пользуйтесь..)))

оставил комментарий от Начинающий (304 баллов)

блин копец я туплю, извини

оставил комментарий от Одаренный (1.4k баллов)

без логических функций в смысле без boolean - ЛЮБАЯ СОРТИРОВКА ПОДРАЗУМЕВАЕТ СРАВНЕНИЕ, таким образом требуя BOOLEAN - условие внутри if ВСЕГДА BOOLEAN.

оставил комментарий от Одаренный (1.4k баллов)

Поэтому согласно условию решений не может быть

оставил комментарий от Архангел (142k баллов)

Да нет, как выяснилось, автор вопроса просил не вводить пользовательских функций, возвращающих значение логического типа.

1 Ответ
0 голосов
ответил от Архангел (142k баллов)
 
Лучший ответ

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    mi:=(li+ri) div 2;
    if a[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]      begin
        k := j;
        x := a[j]
      end;
      a[k] := a[i];
      a[i] := x
    end
end;
 
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    mi:=(li+ri) div 2;
    if a[mi]    Inc(k)
  end;
  if a[ri]=key then m:=ri else m:=-1
end;

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

...