Рейтинг@Mail.ru
Menu
Скачать картинки на телефон бесплатно.
Заставки для телефона, аватарки.
(Вырезать из фотографии)

Роза `Гренд Могул` Яхта `Алиса` Лесное озеро Музей `Пирогово` Белочка
Выберите рубрику (тему)

Работа с двумерными массивами

Программирование на Паскале
Программа 4

Есть действительная квадратная матрица порядка A(n x n). Создать массив B(m),m=n x n, элементы которого добыты чтением матрицы по спирали.


Работа с двумерными массивами. Есть действительная квадратная матрица порядка A(n x n). Создать массив B(m),m=n x n, элементы которого добыты чтением матрицы по спирали.

Математическое решение


Пронумеруем кольца от внешнего кольца к внутреннему. На схеме показаны изменения индексов при передвижении по строке и столбцу для произвольного k - го кольца. Общее число колец равняется (n+1) div 2.


Работа с двумерными массивами. Математическое решение. Пронумеруем кольца от внешнего кольца к внутреннему. На схеме показаны изменения индексов при передвижении по строке и столбцу для произвольного k - го кольца. Общее число колец равняется (n+1) div 2.

Алгоритм в виде диаграммы действий


Работа с двумерными массивами. Программа 4. Есть действительная квадратная матрица порядка A(n x n). Создать массив B(m),m=n x n, элементы которого добыты чтением матрицы по спирали.. Алгоритм в виде диаграммы действий


Текст программы


program Prg4;



{ http://nataliya.kiev.ua/?id=104 }



uses


  crt;

type


  TMatrix = array[1..15, 1..15] of real;
  TVector = array[1..225] of real;

 

procedure InputMatrix(var A: TMatrix; var n: byte);


 
var

    i, j: integer;
    q: char;
 
begin

    Write('n=');
    ReadLn(n);
    Write('Input by hand(y/n)?');
    ReadLn(q);
    if (q = 'y') or (q = 'Y') then
      for i := 1 to n do
        for J := 1 to N do
          begin
            Write('A[', i, ',', j, ']=');
            ReadLn(a[i, j]);
          end
    else
    begin
      Randomize;
      for i := 1 to n do
        for j := 1 to n do
          a[i, j] := Random(999) / 10;
    end;
  end;

 

procedure OutputMatrix(const a: Tmatrix; m: byte);


 
var

    i, j: byte;
 
begin

    for i := 1 to m do
    begin
      for j := 1 to m do
        Write(a[i, j]:6:1);
      WriteLn;
    end;
  end;

 

procedure MatrixVector(const x: TMatrix; var y: TVector; n: byte);


 
var

    i, j, k, l: byte;
 
begin

    l := 0;
   
for k := 1 to (n + 1) div 2 do

    begin
      for j := k to n - k + 1 do
        begin
          l := l + 1;
          y[l] := x[k, j];
        end;
      for i := k + 1 to n - k + 1 do
        begin
          l := l + 1;
          y[l] := x[i, n - k + 1];
        end;
      for j := n - k downto k do
        begin
          l := l + 1;
          y[l] := x[n - k + 1, j];
        end;
      for i := n - k downto k + 1 do
        begin
          l := l + 1;
          y[l] := x[i, k];
        end;
    end;
  end;

 

procedure OutputVector(const vect: TVector; m: byte);


 
var

    i: byte;
 
begin

    WriteLn('Masiv:');
   
for i := 1 to m do

      Write(Vect[i]:7:1);
  end;

var


  a: TMatrix;
  b: TVector;
  n: byte;

begin


  ClrScr;
  InputMatrix(a, n);
  OutputMatrix(a, n);
  MatrixVector(a, b, n);
  OutputVector(b, n * n);
  ReadKey;
end.

Print

Печатать текст программы!



Source code: «Работа с двумерными массивами».

Редактировать, копировать

(WYSIWYG редактор «NicEdit»)
Загрузить файл с текстом программы: «Работа с двумерными массивами». Печатать текст программы!

Загрузить файл с текстом программы

(Prg4.pas - Windows-1251)

Результат работы программы


1)
n=10
Input by hand(y/n)?n
  55.1 33.7 25.3 59.9 57.4 94.3 91.5 96.6 24.7 30.0
  81.5 73.2 80.0 67.8 58.2 15.6 82.1 16.0 15.6 30.5
  27.4 45.2 28.3 74.9 92.3 71.3 10.6 67.8 84.8 76.2
  62.6 41.0 93.5 26.7 9.8 53.8 55.0 77.8 63.9 19.9
  80.0 72.5 62.4 18.4 5.3 71.2 63.0 90.0 64.9 74.8
  1.1 39.0 96.1 25.5 37.0 91.4 24.4 96.4 50.0 82.5
  91.6 7.6 57.7 70.7 23.5 25.7 64.7 3.6 49.9 38.3
  72.5 82.1 22.8 9.4 2.8 98.7 96.5 54.4 15.6 45.5
  66.4 94.6 26.2 17.7 77.6 77.6 50.6 60.0 51.8 74.4
  34.7 29.8 94.7 88.8 45.2 74.3 79.6 41.1 30.3 47.6
Masiv:
55.1 33.7 25.3 59.9 57.4 94.3 91.5 96.6 24.7 30.0 30.5 76.2 19.9 74.8 82.5 38.3 45.5 74.4 47.6 30.3 41.1 79.6 74.3 45.2 88.8 94.7 29.8 34.7 66.4 72.5 91.6 1.1 80.0 62.6 27.4 81.5 73.2 80.0 67.8 58.2 15.6 82.1 16.0 15.6 84.8 63.9 64.9 50.0 49.9 15.6 51.8 60.0 50.6 77.6 77.6 17.7 26.2 94.6 82.1 7.6 39.0 72.5 41.0 45.2 28.3 74.9 92.3 71.3 10.6 67.8 77.8 90.0 96.4 3.6 54.4 96.5 98.7 2.8 9.4 22.8 57.7 96.1 62.4 93.5 26.7 9.8 53.8 55.0 63.0 24.4 64.7 25.7 23.5 70.7 25.5 18.4 5.3 71.2 91.4 37.0

2)
n=4
Input by hand(y/n)?y
A[1,1]=1
A[1,2]=2
A[1,3]=3
A[1,4]=4
A[2,1]=8
A[2,2]=9
A[2,3]=0
A[2,4]=3
A[3,1]=12
A[3,2]=13
A[3,3]=18
A[3,4]=24
A[4,1]=68
A[4,2]=134
A[4,3]=3.11
A[4,4]=25
   1.0 2.0 3.0 4.0
   8.0 9.0 0.0 3.0
  12.0 13.0 18.0 24.0
  68.0 134.0 3.1 25.0
Masiv:
    1.0 2.0 3.0 4.0 3.0 24.0 25.0 3.1 134.0 68.0 12.0
 8.0 9.0 0.0 18.0 13.0

Теория к программе


Массивы



  Массив - это структура данных, что представляет собой совокупность фиксированного размера и конфигурации упорядоченных однородных независимых переменных.
    Массив относится к так называемым структурированным данным, то есть таких, что имеют фиксированную внутреннюю структуру (организацию).

   

Массив характеризуется

:

      1.
Количеством размерностей
(количеством координат, необходимых для определения местонахождения нужного элемента массива).
      2.
Общим идентификатором (именем)
для всех элементов массива.
      3.
Индексом или совокупностью индексов
, которые определяют каждый отдельный елемент масива.

 

Одномерный массив (вектор)

- имеет одну размерность

    При обращении к отдельному элементу массива необходимо указать его индекс (местонахождение в массиве):
      A[7]    i:=7; A[i]
      Здесь i - индекс элемента массива, может быть только целого или натурального типа

 

Двумерные массивы (матричные)

- имеют две размерности, m*n. Доступ к отдельному элементу массива осуществляется путем определения двух его координат: номера строки i=1..m и столбца j=1..n

    Операции предоставления выполняются аналогично:
      a[3,9]=8; B:=A[1,1]

 

В трехмерном массиве

для доступа к элементу необходимо указать три индекса A[i,j,k]. Можно создавать массивы с большей размерностью, но работа с массивами, размерность которых превышает 3, существенным образом усложняет алгоритм, поэтому, по возможности, необходимо избегать организации подобных структур данных.

 

Вложенные циклы



    Если один цикл есть составной чаcтиною второго цикла, такие циклы называются вложенными

   

Общие правила

работы с вложенными циклами следующие:

      а)
теоретически глубина вложения не ограниченная
, но если она будет превышать два - то есть большее трех последовательно вложенных один в один циклов,- это сделает программу трудной для чтения и отладки и вызовет возникновение ошибок;
      б)
границы тел циклов не должны пересекаться
, то есть один цикл может быть полностью вложен в другой.


Дата: 2007-10-13   Автор: Admin
Случайный анекдот

C - сонное;
Т - теоретически;
У - умное;
Д - дитя;
Е - естественно;
Н - не желающее;
Т - трудится.
Дата: 05-05-2005   Автор: Admin   Подрубрика: Разное