• Даны массивы целых: X из p элементов, Y из q элементов, Z из r элементов (p,q,r<=50). Элементы массивов упорядоченные по возрастанию. Выяснить, есть ли такие числа, которые встречаются в каждом из трех массивов. Найти одно из таких чисел или сообщить об его отсутствии.

Ответы 6

  • "Пузырек"-то как раз неважен - массивы по условию УЖЕ упорядочены, так что он - лишь способ получения исходных массивов.
    • Автор:

      horton
    • 5 лет назад
    • 0
  • Ваша программа делает именно то, что указано в задаче - находит ОДНО (первое) из совпадающих чисел. Даже если таких чисел несколько. Мой вариант находит их все, хотя, быть может, это и не совсем правильно.
    • Автор:

      kyson
    • 5 лет назад
    • 0
  • Поправил последнее условие.
  • Если нужно только одно число, а совпадающих больше, можно в программе вместо r.Println написать r.Take(1).Println
    • Автор:

      melendez
    • 5 лет назад
    • 0
  • Одно из "быстрых по написанию" решений, не учитывающих фактор наличия упорядоченности массивов. Это разумно: 10 баллов за решение - не та цена, за которую есть смысл составлять и отлаживать эффективный алгоритм поиска по упорядоченным массивам.// PascalABC.NET 3.1, сборка 1256 от 21.06.2016begin  var x:=ArrRandom(ReadInteger('p='),-20,20).Sorted;  var y:=ArrRandom(ReadInteger('q='),-10,15).Sorted;  var z:=ArrRandom(ReadInteger('r='),1,18).Sorted;  x.Println; y.Println; z.Println;  var r:=x.Intersect(y.Intersect(z));  if r.Count=0 then Writeln('Нет общих элементов')  else begin Write ('Общие элементы: '); r.Println endend.Тестовое решениеp= 15q= 13r= 18-19 -16 -15 -11 -7 -7 -2 0 0 2 4 7 10 14 20-8 -6 -4 -4 -4 -3 -1 4 4 9 13 13 151 1 2 2 2 4 4 5 6 9 10 12 12 14 14 15 15 17Общие элементы: 4
  • //Школьный вариант с уродливым "пузырьком"//Pascal ABC.NET 3.1 сборка 1256Const n=10; m=20; z=30;Var ar1:array[1..n] of integer; ar2:array[1..m] of integer; ar3:array[1..z] of integer; i,k,j:integer; b:boolean;beginrandomize;k:=-1;b:=false;  for i:=1 to n do    ar1[i]:=random(20);  for i:=1 to n-1 do   for j:=i+1 to n do    if ar1[i]>ar1[j] then swap(ar1[i],ar1[j]);  writeln('Array 1:');  for i:=1 to n do   write(ar1[i]:4);  writeln;  for i:=1 to m do    ar2[i]:=random(20);  for i:=1 to m-1 do   for j:=i+1 to m do    if ar2[i]>ar2[j] then swap(ar2[i],ar2[j]);    writeln('Array 2:');  for i:=1 to m do   write(ar2[i]:4);  writeln;  for i:=1 to z do    ar3[i]:=random(20);  for i:=1 to z-1 do   for j:=i+1 to z do    if ar3[i]>ar3[j] then swap(ar3[i],ar3[j]);   writeln('Array 3:');  for i:=1 to z do   write(ar3[i]:4);   for i:=1 to n do    begin     k:=-1;     for j:=1 to m do     if ar1[i]=ar2[j] then       begin       k:=ar1[i];       break;      end;     if k=-1 then continue;     for j:=1 to z do     if k=ar3[j] then      begin       b:=true;       break;      end;    if b=true then break;   end; writeln; writeln('Result:'); if b=false then writeln('Нет') else writeln(k);end. 
    • Автор:

      hallie
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

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

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

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