Одномерные массивы

Автор работы: Пользователь скрыл имя, 26 Октября 2011 в 20:44, лекция

Краткое описание

Массив — это структура данных, которую можно рассматривать как набор переменных одинакового типа, имеющих общее имя. Массивы бывают одномерные и многомерные. Доступ к элементам массива осуществляется по индексу.
Массив в программах должен быть объявлен. Это делается следующим образом:
<имя>: array [<н_индекс>..<в_индекс>] of <тип>;

Содержимое работы - 1 файл

Массивы.doc

— 295.00 Кб (Скачать файл)

      write(a[i]:8:4)

    end;

END.

Пример 4. В одномерном массиве целых чисел заменить все элементы, меньшие среднего арифметического, значением среднего арифметического, округленного до целого. Массив заполняется случайным образом.

Листинг 4.

const n=10;

var a: array [1..n] of integer;

    i,s: integer;

    sred: real;

BEGIN

  randomize;

  s:=0;

  for i:=1 to n do

    begin

      a[i]:=random(20)-5;

      write(a[i]:4);

      s:=s+a[i];

    end;

  writeln;

  sred:=s/n;

  for i:=1 to n do

    begin

      if a[i]<sred then a[i]:=round(sred);

      write(a[i]:4)

    end;

  writeln

END.

Пример 5. В одномерном массиве целых чисел удалить k-й элемент массива.

Листинг 5.

const n=10;

var a: array [1..n] of integer;

    i,k: integer;

BEGIN

  randomize;

  for i:=1 to n do

    begin

      a[i]:=random(20)-5;

      write(a[i]:4)

    end;

  writeln;

  write('Введите  номер элемента для удаления

         (k < ',n,')->');

  readln(k);

  for i:=k to n-1 do

    a[i]:=a[i+1];

  for i:=1 to n-1 do

    write(a[i]:4);

  writeln

END.

Пример 6. В одномерном массиве целых чисел удалить элемент, равный заданному числу, если он есть. Если таких элементов несколько, то удалить последний из найденных.

Листинг 6.

const n=10;

var a: array [1..n] of integer;

    i,k,kk: integer;

BEGIN

  randomize;

  for i:=1 to n do

    begin

      a[i]:=random(20)-5;

      write(a[i]:4)

    end;

  writeln;

  write('Введите число ->');

  readln(kk);

  for i:=1 to n do

    if a[i]=kk then k:=i;

  for i:=k to n-1 do

    a[i]:=a[i+1];

  for i:=1 to n-1 do

    write(a[i]:4);

  writeln

END.

Пример 7. Вставить на k-е место массива целых чисел элемент, равный наименьшему элементу массива.

Листинг 7.

const n=10;

var a: array [1..n+1] of integer;

    i,k,min: integer;

BEGIN

  randomize;

  for i:=1 to n do

    begin

      a[i]:=random(20)-5;

      write(a[i]:4)

    end;

  writeln;

  min:=a[1];

  for i:=2 to n do

    if a[i]<a[min] then min:=a[i];

    write('Введите значение k (k < ',n,') ->');

    readln(k);

  for i:=n+1 downto k do

    a[i]:=a[i-1];

    a[k]:=min;

  for i:=1 to n+1 do

    write(a[i]:4);

    writeln

END.

Пример 8. Имеются два одномерных массива целых чисел размера n. Создать из них один одномерный массив, в котором сначала идут отрицательные элементы, затем нулевые и затем положительные.

Решим задачу следующим образом. Соединим два массива в один, а затем  упорядочим полученный массив, используя «пузырьковый» метод сортировки.

Листинг 8.

const n=10;

var a,b: array [1..n] of integer;

      c: array [1..2*n] of integer;

    i,j,k: integer;

BEGIN

  randomize;

  for i:=1 to n do

    begin

      a[i]:=random(20)-5;

      b[i]:=random(12)

    end;

  writeln('Массив А');

  for i:=1 to n do

   write(a[i]:4);

   writeln;

   writeln('Массив B');

  for i:=1 to n do

   write(b[i]:4);

   writeln;

  for i:=1 to n do

   c[i]:=a[i];

   k:=1;

  for i:=n+1 to 2*n do

    begin

      c[i]:=b[k];

      inc(k)

    end;

  for i:=1 to 2*n-1 do

   for j:=1 to 2*n-1 do

    if c[j]>c[j+1] then

      begin

        k:=c[j];

        c[j]:=c[j+1];

        c[j+1]:=k

      end;

  writeln('Массив С');

  for i:=1 to 2*n do

    write(c[i]:4);

  writeln

END.

Пример 9. Дан массив чисел. Найти, сколько в нем пары одинаковых соседних элементов [6].

Листинг 9.

const n=10;

var a: array [1..n] of integer;

    i,k: integer;

BEGIN

  randomize;

  for i:=1 to n do

    begin

      a[i]:=random(20)-5;

      write(a[i]:4)

    end;

  writeln;

  k:=0;

  for i:=1 to n-1 do

    if a[i] = a[i+1] then k:=k+1;

  writeln('Одинаковых пар соседних элементов

           в массиве ',k)

END.

Пример 10. Даны три одномерных числовых массива A, B, C. Сформировать массив K такой же длины, элементы которого вычисляются по формуле: [15].

Листинг 10.

const n=10;

var a,b,c: array [1..n] of integer;

        k: array [1..n] of real;

    i: integer;

BEGIN

  randomize;

  writeln;

  writeln('МАССИВ А');

  for i:=1 to n do

    begin

      a[i]:=random(20)-5;

      b[i]:=random(30)-2;

      c[i]:=random(40);

      write(a[i]:4)

    end;

  writeln;

  writeln('МАССИВ В');

  for i:=1 to n do

    write(b[i]:4);

  writeln;

  writeln('МАССИВ C');

  for i:=1 to n do

    write(c[i]:4);

  writeln;

  writeln('МАССИВ K');

  for i:=1 to n do

    begin

      k[i]:=(a[i]-b[i])/(1+c[i]);

      write(k[i]:8:4)

    end

END.

Пример 11. Даны натуральные числа A1, A2, …, AN (= 10). Не создавая дополнительные массивы, определить, какой из элементов повторяется в последовательности A1, A2, …, AN наибольшее число раз, и найти его порядковый номер, ближайший к началу последовательности [32].

Листинг 11.

const n=10;

var a: array [1..n] of integer;

    i,j,max,k,q: integer;

BEGIN

  randomize;

  for i:=1 to n do

    begin

      a[i]:=random(20);

      write(a[i]:4)

    end;

  writeln;

  max:=0;

  for i:=1 to n-1 do

    begin

      k:=1;

      for j:=i+1 to n do

      if a[i]=a[j] then inc(k);

      if k>max then

        begin

          max:=k;

          q:=i

        end

    end;

  write(a[q]:6,q:6,max:6);

  writeln

END.

Пример 12. В заполненном наполовину массиве, не создавая дополнительный массив, продублировать все элементы с сохранением порядка их следования. Например, из массива А (1, 2, 3, …) необходимо получить массив (1, 1, 2, 2, 3, 3) [32].

Листинг 12.

const n=5;

var a: array [1..2*n] of integer;

    i: integer;

BEGIN

  randomize;

  for i:=1 to n do

    begin

      a[i]:=random(20);

      write(a[i]:4)

    end;

  writeln;

  i:=2*n;

  while (i<=2*n) and (i>=2) do

    begin

      a[i]:=a[i div 2];

      a[i-1]:=a[i];

      dec(i,2);

    end;

  for i:=1 to 2*n do

    write(a[i]:4);

  writeln

END.

Пример 13. Заданы два одномерных массива различных размеров M и N и число K (M). Не создавая дополнительный массив, включить второй массив в первый между K-м и (К+1)-м его элементами [32].

Листинг 13.

const m=5; n=5;

var a: array [1..m+n] of integer;

    b: array [1..n] of integer;

    i,k: integer;

BEGIN

  randomize;

  write('Введите значение k -> ');

  readln(k);

  for i:=1 to m do

    begin

      a[i]:=random(20)-2;

      write(a[i]:4)

    end;

  writeln;

  for i:=1 to n do

    begin

      b[i]:=random(15)+4;

      write(b[i]:4)

    end;

  writeln; 

  for i:=m+n downto (m+n)-(m-k)+1 do

    a[i]:=a[i-n];

  for i:=1 to n do

   a[k+i]:=b[i];

  for i:=1 to m+n do

    write(a[i]:4);

  writeln

END.

Пример 14. Сообщество роботов живет по следующим законам: один раз в год они объединяются в группы по 3 или 5 роботов; за год группа из 3 роботов собирает 5, а группа из 5 — 9 новых собратьев; каждый робот живет 3 года после сборки. Известно начальное количество роботов (> 7), все они только что собраны. Определить, сколько роботов будет через N лет. [13]

Информация о работе Одномерные массивы