Разработать программу для работы с двумя матрицами

Автор работы: Пользователь скрыл имя, 09 Июня 2013 в 17:46, контрольная работа

Описание работы

Целью контрольной работы является отражение приобретенных знаний и практических навыков по курсу «Программирование».
Задача контрольной работы – разработать программу для работы с двумя матрицами. Реализовать функции сложения, вычитания и умножения матриц. Элементы матриц задаются двумя файлами, указанными пользователями. Результат выводится на экран.

Содержание работы

Введение ….………………………….........................................................
1. Постановка задачи………………………………………………….......
2. 2. Описание алгоритма ……………….......................................................
3. 3. Листинг программы.................................................................................
4. Примеры работы программы ………………………………………….
Список литературы ……............................................................................

Файлы: 1 файл

Контрольная.docx

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


Федеральное государственное образовательное бюджетное учреждение

высшего профессионального образования

«Финансовый университет  при Правительстве Российской Федерации»

 

Кировский филиал

 

 

Учетно – статистический факультет

Кафедра аналитических информационных систем

 

 

 

 

 

 

 

КОНТРОЛЬНАЯ РАБОТА

по дисциплине «Программирование»

 

Вариант № 76

 

 

 

 

Студент

Кротов Николай Васильевич

Специальность

Бизнес-информатика

Образование

 

№ личного дела

Первое высшее

 

100.11/120026

Курс

1

Преподаватель

Чупраков Павел Григорьевич –

к.б.н., доцент

   

 

 

 

 

 

 
   

Киров 2013г.

 

СОДЕРЖАНИЕ

 

Введение ….………………………….........................................................

3

1. Постановка задачи………………………………………………….......

4

2. 2. Описание алгоритма ……………….......................................................

5

3. 3. Листинг программы.................................................................................

 9

4. Примеры работы программы ………………………………………….

12

Список литературы ……............................................................................

17


 

 

 

ВВЕДЕНИЕ

 

Целью контрольной работы является отражение приобретенных знаний и практических навыков по курсу «Программирование».

Задача  контрольной работы – разработать программу для работы с двумя матрицами. Реализовать функции сложения, вычитания и умножения матриц. Элементы матриц задаются двумя файлами, указанными пользователями. Результат выводится на экран.

Для реализации данной задачи была использована среда  Pascal ABC.Net. PascalABC.NET – это язык Object Pascal для платформы Microsoft .NET, содержащий все основные элементы современных языков программирования.

Язык  Паскаль был разработан Никлаусом Виртом в 1970 г. как язык со строгой типизацией и интуитивно понятным синтаксисом. В 80-е годы наиболее известной реализацией стал компилятор Turbo Pascal фирмы Borland, в 90-е ему на смену пришла среда программирования Delphi, которая стала одной из лучших сред для быстрого создания приложений под Windows. Delphi ввела в язык Паскаль ряд удачных объектно-ориентированных расширений, обновленный язык получил название Object Pascal.

 

 

1. Постановка задачи.

 

Условие задачи:  Разработать программу для работы с двумя матрицами. Реализовать функции сложения, вычитания и умножения матриц. Элементы матриц задаются двумя файлами, указанными пользователями. Результат выводится на экран.

.

 

Постановка  задачи - разработать программу, которая обеспечивает выполнение операций сложения, вычитания и умножения над матрицами целых чисел. Входная информация по задаче – две целочисленные матрицы, над которыми будут выполняться операции сложения, вычитания и умножения. Выходная информация это три матрицы, полученные в результате выполненных  операций.  Для программирования данной задачи используются структура данных – массив и циклические конструкции. Массив – совокупность однотипных элементов. Двумерный массив называются матрицей. Матрица определяется именем, размерность и типом. Доступ к элементам массива осуществляется с помощью индексов. Для доступа к элементам матрицы используются два индекса. Например, A[i,j] –элемент на пересечении i – строки, j – столбца.

Операции  сложения и вычитания матриц выполняются  поэлементно.

Для умножения  матриц строка первой матрицы скалярно умножается на столбец второй матрицы. В результате получится один элемент  новой матрицы.

Чтобы произвести операции сложения и вычитания размеры  матриц должны быть одинаковыми. Для  выполнения операции умножения количество столбцов первой матрицы должно быть одинаковым количеством строк второй матрицы. В программе исходные матрицы  считываются из двух текстовых файлов.

 

2. Описание алгоритма.

 

 

 

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

Так как выполняются операции над  матрицами, необходимо определить размерность и инициализировать исходные матрицы.

На рисунке 1 приведена схема обобщенного алгоритма программы.

 

 

Рисунок 1. Алгоритм программы.

 

 

В программе решаются три независимые  друг от друга подзадачи.

1. Сложение двух матриц и вывод результата.

2. Вычитание двух матриц и вывод результата.

3. Умножение двух матриц и вывод результата.

 

Схема алгоритма сложения матриц приведена  на рисунке 2.

 

 

 

Рисунок 2. Алгоритм сложения матриц

 

Схема алгоритма вычитания матриц приведена на рисунке 3.

 

 

Рисунок 3. Алгоритм вычитания двух матриц

 

 

Схема алгоритма умножения матриц приведена на рисунке 4.

 

 

Рисунок 4. Алгоритм умножения двух матриц.

 

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

 

 

 

program Kontr;

const

  nmax = 100;

  F1 = 'c:\matrix1.txt';

  F2 = 'c:\matrix2.txt';

type

  Matrica=array[1..nmax,1..nmax]of integer;

var

 f: text;

 a,b,c: Matrica;

 AStr,ACol,BStr,BCol,ch: integer;

 

// Определяем размеры матриц  из файлов

procedure RazmerMatrix;

begin

  AStr:=0;   ACol:=0;

  BStr:=0;   BCol:=0;

  assign(f,F1);

  reset(f);

  while not EOF(f) do   {считываем количество строк}

  begin

    readln(f,ch);

    inc(AStr)

  end;

  close(f);  reset(f);

  while not EOLn(f) do   {считываем количество столбцов}

  begin

    read(f,ch);

    inc(ACol)

  end;                        

  writeln('Размер первой матрицы:  ',AStr,' ',ACol);

  close(f);

  assign(f,F2);

  reset(f);

  while not EOF(f) do   {считываем количество строк}

  begin

    readln(f,ch);

    inc(BStr)

  end;

  close(f);  reset(f);

  while not EOLn(f) do   {считываем количество столбцов}

  begin

    read(f,ch);

    inc(BCol)

  end;                        

  writeln('Размер второй матрицы:  ',BStr,' ',BCol);

  close(f)

 

end;

 

// Чтение матриц из файлов

procedure VvodMatrix;

var

i,j: integer;

begin

assign (f,F1);

reset ( f ) ;

for i:=1 to AStr do

 for j:=1 to ACol do

  begin

  read(f,a[i,j]);

  end;

Close(f);

assign (f,F2);

reset ( f ) ;

for i:=1 to BStr do

 for j:=1 to BCol do

  begin

  read(f,b[i,j]);

  end;

Close(f);

end;

 

{процедура суммы матриц}

procedure Summ(const a,b:Matrica; var c:Matrica);

var

i,j: integer;

begin

writeln('Сумма матриц:');

  for i:=1 to Astr do

  begin

    for j:=1 to ACol do

     begin

      c[i,j]:=a[i,j]+b[i,j];

      write(c[i,j]:4);

     end;

  writeln;

  end;

end;

 

{процедура разности матриц}

procedure Raz(const a,b:Matrica; var c:Matrica);

var

i,j: integer;

begin

writeln('Разность матриц:');

  for i:=1 to Astr do

  begin

    for j:=1 to ACol do

     begin

      c[i,j]:=a[i,j]-b[i,j];

      write(c[i,j]:4);

     end;

  writeln;

  end;

end;

 

{процедура умножения матриц}

procedure Umn(const a,b:Matrica; var c:Matrica);

var

i,j,k:integer;

begin

writeln('Произведение матриц:');

  for i:=1 to astr do

  begin

  for j:=1 to bcol do

    begin

      C[i,j]:=0;

      for k:=1 to acol do

      C[i,j]:=C[i,j]+a[i,k]*b[k,j];

      write(c[i,j]:4);

    end;

  writeln;

  end;

end;

 

{основная программа}

begin

  RazmerMatrix;

  VvodMatrix;

  if (astr=bstr) and (acol=bcol)  then

  begin

    summ(a,b,c);

    raz(a,b,c);

  end;

 

  if acol=bstr then

  begin

  Umn(a,b,c);

  end;

 

  writeln('все');

  exit;

 

end.

 

4. Примеры работы программы

 

Пример 1.

 

Исходные матрицы:

 

Матрица №1

Матрица №2

1 2 1 2

3 4 3 4

5 6 5 6

12 5 56    7

  6  8 45 34

23 4 45    5


 

Результат:

 

Размер первой матрицы:  3 4

Размер второй матрицы:  3 4

Сумма матриц:

  13   7  57   9

   9  12  48  38

  28  10  50  11

Разность матриц:

-11  -3 -55  -5

  -3  -4 -42 -30

-18   2 -40   1

Все

 

 

 

 

Пример 2.

 

Исходные матрицы:

 

Матрица №1

Матрица №2

1 2 3 4

5 6 7 8

8 7 6 5

4 3 2 1

12 5 56    7

  6  8 45 34

23 4 45    5

  2  3    4    5


 

Результат:

 

Размер первой матрицы:  4 4

Размер второй матрицы:  4 4

Сумма матриц:

  13   7  59  11

  11  14  52  42

  31  11  51  10

   6   6   6   6

Разность матриц:

-11  -3 -53  -3

  -1  -2 -38 -26

-15   3 -39   0

   2   0  -2  -4

Произведение матриц:

101  45 297 110

273 125 897 314

286 135 1053 349

114  55 453 145

Все

 

 

Пример 3.

 

Исходные матрицы:

 

Матрица №1

Матрица №2

2 1 1

0 3 2

0 3

1 5

1 1


 

Результат:

 

Размер первой матрицы:  2 3

Размер второй матрицы:  3 2

Произведение матриц:

   2  12

   5  17

все

aco 

СПИСОК ЛИТЕРАТУРЫ

 

1. Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. Free Pascal и Lazarus: Учебник по программированию – М.: ALT Linux; Издательский дом ДМК-пресс, 2010.

2. Архангельский А.Я. Программирование  в Delphi 7. – М.: ООО «Бином-Пресс», 2003.

3. Долинский М.С. Алгоритмизация и программирование на Turbo Pascal: учебное пособие. — СПб.: Питер, 2005.

4. Прайс Д. Программирование на языке Паскаль. Практическое руководство. Пер. с англ. - М.: Мир, 2007.

5. Суркова Е.В. Лабораторный практикум по программированию на языке Pascal. Задания и примеры выполнения лабораторных работ № 1– 7: методические указания  для  студентов  специальности  08080165  «Прикладная информатика (в экономике)» / Е. В. Суркова. – Ульяновск: УлГТУ, 2007.


Информация о работе Разработать программу для работы с двумя матрицами