profile
Опубликовано 6 лет назад по предмету Информатика от Аккаунт удален

напишите программу в паскале .
мы вводим первый массив,вводим второй массив и в третьем массиве программа выводит
все числа по возрастанию

  1. Ответ
    Ответ дан hloyaygrt
    Решение быстрой сортировкой , вводим длину начальных массивов и 2 массива. Получаем ответ
  2. Ответ
    Ответ дан Аккаунт удален
    1. Классическая "школьная" реализация на Паскале

    // PascalABC.NET 3.0, сборка 1076
    const
      nn=50; { максимальная длина массивов 1,2 }
    var
      a,b:array[1..nn] of integer;
      c:array[1..2*nn] of integer;
      n1,n2,n3,i,j,t,k:integer;
    begin
      Randomize;
      Write('Размер первого массива (1-50): '); Read(n1);
      Write('Размер второго массива (1-50): '); Read(n2);
      { Шаг 1. Инициализация первого массива случайными числами }
      Writeln('*** Первый массив ***');
      for i:=1 to n1 do begin
        a[i]:=Random(51)-25;
        Write(a[i],' ')
      end;
      Writeln;
      { Шаг 2. Инициализация второго массива случайными числами }
      Writeln('*** Второй массив ***');
      for i:=1 to n2 do begin
        b[i]:=Random(51)-25;
        Write(b[i],' ')
      end;
      Writeln;
      { Шаг 3. Сортировка первого массива }
      for i:=1 to n1-1 do
        for j:=1 to n1-1 do
          if a[j]>a[j+1] then
          begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end;
      { Шаг 4. Сортировка второго массива }
      for i:=1 to n2-1 do
        for j:=1 to n2-1 do
          if b[j]>b[j+1] then
          begin t:=b[j]; b[j]:=b[j+1]; b[j+1]:=t end;
      { Шаг 5. Слияние }
      n3:=n1+n2;
      i:=1; j:=1; k:=1;
      while (i<=n1) and (j<=n2) do begin
        if a[i]<=b[j] then begin c[k]:=a[i]; Inc(i) end
        else begin c[k]:=b[j]; Inc(j) end;
        Inc(k);
      end;
      if i>n1 then
        for j:=j to n2 do begin c[k]:=b[j]; Inc(k) end
      else
        if j>n2 then
          for i:=i to n1 do begin c[k]:=a[i]; Inc(k) end;
      { Шаг 6. Вывод результата }
      Writeln('*** Третий массив ***');
      for i:=1 to n3 do Write(c[i],' ');
      Writeln
    end.
     
    Тестовое решение:
    Размер первого массива (1-50): 10
    Размер второго массива (1-50): 7
    *** Первый массив ***
    11 -9 20 -8 -1 13 25 23 5 24
    *** Второй массив ***
    20 -4 -14 -19 19 -23 10
    *** Третий массив ***
    -23 -19 -14 -9 -8 -4 -1 5 10 11 13 19 20 20 23 24 25

    2. Реализация современными средствами программирования

    // PascalABC.NET 3.0, сборка 1076
    begin
      var n1:=ReadInteger('Размер первого массива (1-50): ');
      var n2:=ReadInteger('Размер второго массива (1-50): ');
      var a:=ArrRandom(n1,-25,25);
      Writeln('*** Первый массив ***'); a.Println;
      var b:=ArrRandom(n2,-25,25);
      Writeln('*** Второй массив ***'); b.Println;
      var c:=(a+b).Sorted;
      Writeln('*** Третий массив ***'); c.Println
    end.

    Тестовое решение:
    Размер первого массива (1-50): 10
    Размер второго массива (1-50): 7
    *** Первый массив ***
    1 22 -22 -16 -1 -10 24 -22 -18 -8
    *** Второй массив ***
    15 23 -12 12 17 -8 13
    *** Третий массив ***
    -22 -22 -18 -16 -12 -10 -8 -8 -1 1 12 13 15 17 22 23 24
    1. Ответ
      Ответ дан Аккаунт удален
      Если считать, что массивы уже даны, то решение в один оператор: var c:=(a+b).Sorted;
    2. Ответ
      Ответ дан Аккаунт удален
      Ну или можно var c:=(a+b).Sorted.Println; чтобы сразу уже и результат вывести.
    3. Ответ
      Ответ дан Аккаунт удален
      Хочется верить, что когда-нибудь в школе, хотя бы в непрофильных классах, дети получат возможность изучать программирование именно на таком уровне.
    4. Ответ
      Ответ дан petyaGavrikov
      Почему-то классы, объекты, конструкции вида объект.метод воспринимаются детьми нисколько не легче, чем алгоритмические конструкции. Не могу понять - почему это так. Казалось бы - так все просто, однако ... А те, кто дружат с алгоритмами, дружат и с объектами.
    5. Ответ
      Ответ дан Аккаунт удален
      Возможно, дело в методике преподавания. По своему опыту могу сказать, что хорошо работает "нисходящий" (дедуктивный) подход. Учим манипулировать объектами в целом, а потом спускаемся к детализации.
Самые новые вопросы