Ввод массива. Закончить программу по заполнению массива - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Нужно ввести с клавиатуры два непустых неубывающих массива целых чисел. Сформировать третий неубыв. массив различных чисел, в которой переписать те и только те элементы, которые встречаются в обоих исходных массивах (пересечение множеств). Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Листинг программы
  1. program massiv2;
  2. const M=30;
  3. const N=30;
  4. var a: array [1..M] of integer;
  5. var b: array [1..N] of integer;
  6. var c: array [1..M+N] of integer;
  7. i, j, k: integer;
  8. begin
  9. for i:= 1 to M do
  10. readln(a[i]);
  11. for j:= 1 to N do
  12. readln(b[j]);
  13.  
  14. ...
  15. end.
Необходимо дописать программу, используя те же самые исходные данные и переменные, какие были в условии. Это первая программа с массивами, пока не догоняю. Но точно знаю, что a или b можно не использовать.
Если убрать массив "a", т.к. он равен "b", то останется "b" и "c". Пересечение множества, как я понял, это когда числа из массивов совпадают. То есть в "b" массиве от 1 до 30, а в "c" массиве от 1 до 60, значит совпадение это от 1 до 30, и переменную k будем использовать чтобы заполнить массив от 1 до 30. Заполнить с клавиатуры значит каждое число от 1 до 30 писать вручную через enter? В конце еще вывести надо через writeln?

Решение задачи: «Ввод массива. Закончить программу по заполнению массива»

textual
Листинг программы
  1. program massiv2;
  2. const
  3.   M = 30;
  4. const
  5.   N = 30;
  6. var
  7.   a: array [1..M] of integer;
  8. var
  9.   b: array [1..N] of integer;
  10. var
  11.   c: array [1..M + N] of integer;
  12.   i, j, k: integer;
  13.  
  14. begin
  15.   for i := 1 to M do
  16.     readln(a[i]);
  17.   for j := 1 to N do
  18.     readln(b[j]);
  19.   k := 1;
  20.   for i := 1 to M do  
  21.     for j := 1 to N do
  22.     begin
  23.       if (k = 1) and (a[i] = b[j]) then
  24.       begin
  25.         c[k] := a[i];
  26.         k := k + 1;
  27.       end
  28.       else
  29.       if (a[i] = b[j]) and (c[k - 1] <> a[i]) then
  30.       begin
  31.         c[k] := b[j];
  32.         k := k + 1;
  33.       end;      
  34.     end;
  35.   writeln('Массив С: ');
  36.   for i := 1 to k-1 do write(c[i], ' ');
  37. end.

Объяснение кода листинга программы

  1. В первой строке объявляются константы M и N, которые задают размер массива a и b соответственно.
  2. Затем объявляются массивы a и b, а также массив c, который будет использоваться для хранения результатов.
  3. Далее, в двух циклах for, происходит ввод данных в массивы a и b.
  4. Затем, в переменной k инициализируется счетчик, который будет использоваться в следующем цикле.
  5. В двух вложенных циклах for происходит сравнение элементов массивов a и b и, если условия выполняются, запись результата в массив c.
  6. В конце программы выводится на экран массив c.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы