Помогите пожалуйста написать программу!Заполнить массив случайными числами и...

0 голосов
43 просмотров

Помогите пожалуйста написать программу!Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя двоичный поиск, определить, сколько чисел, равных X, находится в массиве.
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 7 9
Введите число X:
4
Число 4 встречается 2 раз(а).
Пример:
Массив:
1 4 7 3 9 2 4 5 2
После сортировки:
1 2 2 3 4 4 5 7 9
Введите число X:
14
Число 14 не встречается.


Информатика (17 баллов) | 43 просмотров
0

Уже приходилось решать эту задачу.

Дано ответов: 2
0 голосов
Правильный ответ

Const n=20;
var a:array[1..n] of integer;
i,j,t,i1,i2,x:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
  a[i]:=Random(15);
  Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
  for j:=1 to n-i do
    if a[j]>a[j+1] then
    begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
write('x = '); readln(x);
i1:=1; i2:=n;
repeat
i:=(i1+i2) div 2;
if a[i]if a[i]>x then i2:=(i1+i2) div 2-1;
until (a[i]=x)or(i1>i2);
if a[i]=x then 
 begin
 while (i>0)and(a[i]=x) do i:=i-1;
 i:=i+1; j:=i;
 while (i<=n)and(a[i]=x) do i:=i+1;<br> writeln('Число ',x,' встречается ',i-j,' раз(а)');
 end
 else writeln('Число ',x,' не встречается');
writeln;
end.

Пример:
Исходный массив:
4 13 5 3 14 12 12 8 9 6 3 2 4 4 14 1 12 2 5 9 
Отсортированный массив:
1 2 2 3 3 4 4 4 5 5 6 8 9 9 12 12 12 13 14 14 
x = 5
Число 5 встречается 2 раз(а)

(194k баллов)
0 голосов

Const
  t = 10;// количество чисел в массиве

var
  a: array[1..t] of integer;
  i, min, k, tmp, klv, z: integer;
  b: boolean;

begin
 
  for i := 1 to t do
    a[i] := random(10) + 1;   //Рандом чисел от 1 до 10
 
  writeln('Массив:');
  for i := 1 to t do
    write(' ', a[i]:2);
  writeln;
 
  for i := 1 to t - 1 do
    for k := i + 1 to t do
      if a[i] > a[k] then
      begin
        tmp := a[k];
        a[k] := a[i];
        a[i] := tmp;
      end;
 
  writeln('После сортировки:');
  for i := 1 to t do
    write(' ', a[i]:2);
  writeln;
 
  klv := 0;
  writeln('Введите число X:');
  readln(z);
  for i := 1 to t do
    if a[i] = z then
    begin
      b := true;
      inc(klv);
    end;
  if b then
  begin
    writeln('Число ', z, ' встречается ', klv, ' раз(а).');
  end;
 
  if b = false then writeln('Число ', z, ' не встречается.');
end.

(314k баллов)