Автор работы: Пользователь скрыл имя, 09 Июня 2013 в 17:46, контрольная работа
Целью контрольной работы является отражение приобретенных знаний и практических навыков по курсу «Программирование».
Задача контрольной работы – разработать программу для работы с двумя матрицами. Реализовать функции сложения, вычитания и умножения матриц. Элементы матриц задаются двумя файлами, указанными пользователями. Результат выводится на экран.
Введение ….………………………….........................................................
1. Постановка задачи………………………………………………….......
2. 2. Описание алгоритма ……………….......................................................
3. 3. Листинг программы.................................................................................
4. Примеры работы программы ………………………………………….
Список литературы ……............................................................................
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
«Финансовый университет при Правительстве Российской Федерации»
Кировский филиал
Учетно – статистический факультет
Кафедра аналитических информационных систем
КОНТРОЛЬНАЯ РАБОТА
по дисциплине «Программирование»
Вариант № 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 – столбца.
Операции сложения и вычитания матриц выполняются поэлементно.
Для умножения матриц строка первой матрицы скалярно умножается на столбец второй матрицы. В результате получится один элемент новой матрицы.
Чтобы произвести операции сложения и вычитания размеры матриц должны быть одинаковыми. Для выполнения операции умножения количество столбцов первой матрицы должно быть одинаковым количеством строк второй матрицы. В программе исходные матрицы считываются из двух текстовых файлов.
По условию поставленной задачи необходимо программировать выполнения операции сложения, вычитания и умножения матриц.
Так как выполняются операции над матрицами, необходимо определить размерность и инициализировать исходные матрицы.
На рисунке 1 приведена схема обобщенного алгоритма программы.
Рисунок 1. Алгоритм программы.
В программе решаются три независимые друг от друга подзадачи.
1. Сложение двух матриц и вывод результата.
2. Вычитание двух матриц и вывод результата.
3. Умножение двух матриц и вывод результата.
Схема алгоритма сложения матриц приведена на рисунке 2.
Рисунок 2. Алгоритм сложения матриц
Схема алгоритма вычитания матриц приведена на рисунке 3.
Рисунок 3. Алгоритм вычитания двух матриц
Схема алгоритма умножения матриц приведена на рисунке 4.
Рисунок 4. Алгоритм умножения двух матриц.
program Kontr;
const
nmax = 100;
F1 = 'c:\matrix1.txt';
F2 = 'c:\matrix2.txt';
type
Matrica=array[1..nmax,1..nmax]
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. Архангельский А.Я.
3. Долинский М.С. Алгоритмизация и программирование на Turbo Pascal: учебное пособие. — СПб.: Питер, 2005.
4. Прайс Д. Программирование на языке Паскаль. Практическое руководство. Пер. с англ. - М.: Мир, 2007.
5. Суркова Е.В. Лабораторный практикум по программированию на языке Pascal. Задания и примеры выполнения лабораторных работ № 1– 7: методические указания для студентов специальности 08080165 «Прикладная информатика (в экономике)» / Е. В. Суркова. – Ульяновск: УлГТУ, 2007.
Информация о работе Разработать программу для работы с двумя матрицами