Операции с матрицами
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ
ЮЖНО-РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
(НОВОЧЕРКАССКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ)
ФАКУЛЬТЕТ Информационных технологий и управления
КАФЕДРА Автоматизированные системы управления
СПЕЦИАЛЬНОСТЬ Прикладная информатика в экономике
КУРСОВАЯ РАБОТА
ПО КУРСУ: “Объектно-ориентированное программирование”
НА ТЕМУ: «Операции
с матрицами»____________________
______________________________
______________________________
Выполнил студент ____ курса, группы____ _______________________
Принял
______________________________
Должность ФИО
Оценка ______________
«____»______________ г. _____________________
Новочеркасск 2010 г.
СОДЕРЖАНИЕ
- Введение ……...…………………………………………….……... 3
- Постановка задачи, описание программы………………….…… 4
- Объектно-ориентированный анализ и проектирование..….…… 6
- Программная реализация на С++………………………………....7
4.1 Краткая характеристика
4.2 Структура программы……………………………
4.3 Инструкция пользователю…………………
- Заключение……………………………………………………
…...11 - Список используемой литературы ……………………………...12
- Приложение 1 (листинг программы) ……………………….…..13
- ВВЕДЕНИЕ
Современный мир, то есть мир «информационных войн» и научно-технического прогресса впитал в себя манию к компьютерному буму и всеобщей автоматизации. При этом компьютеры «стремятся попасть» во все сферы деятельности человека, начиная от развлечений и заканчивая сложнейшими научными расчетами и управлением космических кораблей.
Место компьютерных технологий среди ведущих факторов научно-технического прогресса определяется объективными потребностями человеческого общества, достигшего определенного уровня развития. Современный путь прогрессивного развития - представляет собой, прежде всего, - путь получения и освоения информации. Обработка и преобразование информации становится главной движущей силой современного общества. В свою очередь, последнее характеризуется несколькими факторами, ведущим среди которых - становиться потребность в интеллектуальных ресурсах. Решением возникшей задачи – является появление компьютеров и всеобщая компьютеризация.
Компьютеры становятся нам помощниками везде, в любой сфере деятельности. Всеобщая автоматизация и компьютеризация предоставляет нам больше времени для саморазвития и совершенствования. В то же время компьютеры помогают нам провести свой досуг и разнообразить свой быт.
Одним из видов таких факторов «компьютерного внедрения» - могут явиться всевозможные компьютерные автоматизации. Многие программисты занимаются автоматизацией научного процесса. Тема моего курсового проекта «Операции с матрицами». Написанная программа должна помочь студенту либо кому-то другому при решении проблем, связанных с расчетами данных, представленных в виде матриц (двумерных массивов). Данный курсовой проект является отчетной работой по курсу Объектно-ориентированное программирование и написан на языке программирования С++ (компилятор Turbo C/Borlan C).
2.ПОСТАНОВКА ЗАДАЧИ
Разработать прикладную программу «Операции с матрицами», предназначенную для решения математических задач (высшая математика). Эта программа не должна использоваться в коммерческих целях. Область применения – институтская повседневная работа, в качестве помощи при решении задач связанных со сложением, вычитанием матриц и прочими операциями.
Программа должна быть написана на языке программирования класса Borland или Turbo С. Игра должна иметь интуитивно понятный интерфейс и простую логику работы.
- ОПИСАНИЕ ПРОГРАММЫ
Алгоритм программы
Задача реализована следующим образом: основная программа содержит бесконечный цикл, вызывающий различные подпрограммы. При желании пользователь может выйти из программы(цикла) нажатием клавиши 8. Блок-схема программы показана на рисунке 1.
Рисунок 1.
Начало
- ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ АНАлИЗ И ПРОЕКТИРОВАНИЕ
Работа программы основана на определении класса Tomat. Его описание приведено ниже, в диаграмме.
+Tchto a [10][10];
+vv(ввод матриц для исследования)
+write_to(вывод результата на экран,
предложение записать результат в файл)
+ write_to_file(запись результата в файл)
+ trans(транспонирование матрицы)
+ Mult(умножение матрицы на число)
+step(возведение элементов матрицы
+rav(проверка матриц на равенство)
- ПРОГРАММНАЯ РЕАлИЗАЦИЯ НА С++
4.1 Краткая характеристика
C++ был разработан сотрудником
научно-исследовательского
C++ — это попытка решения
Программа написана под систему Turbo C. Turbo C – это древняя программа, позволяющая реализовывать консольные проекты.
4.2. Структура программы
В программе описан шаблонный класс Tomat, который в зависимости от запроса пользователя может принимать как целые, так и вещественные значения. Параметры класса – матрица STRхSTLB элементов и счетчики. Методы класса – функции vv, write_to, write_to_file, trans, Mult.step, rav. Существует переопределение операторов «+», «–«, «*». В основной функции реализован бесконечный цикл, который в зависимости от вводимой команды совершает действия и выход из программы.
4.3.Инструкция пользователю
Открываем программу, сразу видим вопрос – в каком виде будет представлена ваша матрица(целый, вещественный). См. рисунок 2.
Выбираем нужный ключ.
Рисунок 2.
Затем предлагается выбрать действие. См. рисунок 3.
Рисунок 3.
Выбираем нужное действие, например, «сложить матрицы». Предлагается ввести матрицы(построчно). См рисунок 4.
Рисунок 4.
Затем на экран выводится ваша матрица и предлагается ввести следующую.
Рисунок 5.
Затем если количество строк и столбцов в матрицах равное, то выводится результат сложения и предложение записать результат в файл (рисунок 6), иначе – сообщение об ошибке (рисунок 7).
Рисунок 6.
Рисунок 7.
Если вы выбрали запись в файл, то результат можете увидеть в файле OTVET.txt.
Рисунок 8.
Далее вам снова будем предложено выбрать действие. См. рисунок 1.
5. ЗАКЛЮЧЕНИЕ
В результате выполнения курсовой работы освоила основы работы на языке программирования С++, также научилась работать с классами, шаблонными классами, методами классов. В ходе разработки возникали различные трудности, но неполадки были устранены.
СПИСОК ЛИТЕРАТУРЫ
1. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Бейсик, Си, Паскаль. Самоучитель. – СПб.:БХВ-Петербург, 2002. – 480 с.
2. Шид Г., Самоучитель C++. – СПб.:БХВ-Петербург, 2007. – 688 с.
3. Подбельский В.В. Язык Си++. – М.: Финансы и статистика, 2000. – 560 с.
Приложение А (листинг программы)
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <FCNTL.H>
#include <string.h>
#include <math.h>
template <class Tchto> class Tomat{
public:
Tchto a [10][10];
int str,stlb;
Tomat() {int i,j;
for(i=0; i<10; i++)
{for(j=0; j<10; j++)
{a[i][j]=0;}} };
void vv(void){
int i,j,d;
cout<<"Skol'ko stolbcov?(do 10)"<<endl;
cin>>stlb;
cout<<"Skol'ko strok?(do 10)"<<endl;
cin>>str;
for(i=0;i<str;i++)
for(j=0;j<stlb;j++)
{printf("vvedite element matrici [%d][%d] ",i+1,j+1); scanf("%d",&a[i][j]);}
clrscr();
cout<<"vasha matrica:\n";
for(i=0;i<str;i++){
for(j=0;j<stlb;j++)
printf("%7d",a[i][j]);
puts("\n");
}
};
void write_to (char mess[50]){
int z;
cout<<"resul'tat "<<endl;
printf(mess);
for(int i=0;i<str;i++){
for(int j=0;j<stlb;j++)
printf("%7d",a[i][j]);
puts("\n");}
cout<<"zapisat' v fail?\n 1- yes \n 2- no"<<endl;
while(z!=1 || z!=2){
cin>>z;
if (z==1){
write_to_file(mess);
cout<<"\n\nrezul'tat zapisan v fail OTVET.TXT\n";
getch();
break;
}
else{ getch();
break;}
}
}
void Tomat<class Tchto> :: write_to_file(char mess[50]){
FILE *f;
f=fopen("OTVET.txt","w");
fprintf(f,mess);
for (int i=0; i<str; i++){
for(int j=0; j<stlb; j++)
fprintf(f,"%f",a[i][j]);
fprintf(f,"\n");
}
fclose(f);
};
Tomat<class Tchto> trans (){
int i,j;
Tomat<class Tchto> res;
for (i=0; i<str; i++)
for (j=0; j<stlb; j++)
res.a[i][j]=a[j][i];
return res;
}
void rav (Tomat<class Tchto> arg1, Tomat<class Tchto> arg2){
if (arg1.str!=arg2.str || arg1.stlb!=arg2.stlb)
{cout<<"matrici raznoj razmernosti! ix nel'zja sravnit'"<<endl;}
else{
for (int i=0; i<arg1.str; i++)
for (int j=0; j<arg1.stlb; j++)
if (arg1.a[i][j]==arg2.a[i][j]) {
cout<<"Eti matrici ravni!!"<<endl;
}
else { cout<<"matrici neravnie.."<<endl;}
};
}
Tomat<Tchto> mult (int mn){
int i,j;
Tomat<class Tchto> res;
for (i=0; i<str; i++)
for (j=0; j<stlb; j++)
res.a[i][j]=a[i][j]*mn;
res.str=str;
res.stlb=stlb;
return res;
}
Tomat<Tchto> step (int st){
Tomat<class Tchto> res;
for(int i=0;i<str;i++)
for(int j=0;j<stlb;j++)
res.a[i][j]=pow(a[i][j],st);
res.str=str;
res.stlb=stlb;
return res;
}
Tomat<class Tchto> operator + (Tomat<class Tchto> arg2){
int i,j;
Tomat<class Tchto> res;
if (str==arg2.str && stlb==arg2.stlb){
for (i=0; i<str; i++)
for (j=0; j<stlb; j++) {
res.a[i][j]=a[i][j] + arg2.a[i][j];
};
}
else {cout<<"raznoe koli4estvo strok v matricax, ix nel'zja sladivat'"<<endl;}
return res;
};
Tomat<class Tchto> operator - (Tomat<class Tchto> arg2){
int i,j;
Tomat<class Tchto> res;
if (str==arg2.str && stlb==arg2.stlb){
for (i=0; i<str; i++)
for (j=0; j<stlb; j++) {
res.a[i][j]=a[i][j] - arg2.a[i][j];
};
}
else {cout<<"raznoe koli4estvo strok v matricax, ix nel'zja vi4itat'"<<endl;}
return res;
}
Tomat<class Tchto> operator * (Tomat<class Tchto> arg2){
Tomat<class Tchto> res;
if (stlb==arg2.str){
for(int i=0;i<str;i++)
for(int j=0;j<arg2.stlb;j++)
{
res.a[i][j]=0;
for (int k=0;k<stlb;k++) res.a[i][j]+=a[i][k]*arg2.a[k]
}
}
else {cout<<"koli4estvo strok pervoj matrici ne ravno oli4estvu stolbcov vtoroj. Ix nel'zja peremnodgit'"<<endl;}
return res;
};
};
void main(void){
int d,s,h;
clrscr();
cout<<"4isla v vashej matrice:\n 1 - celie;\n 2 - veshestvennie;"<<endl;
cin>>d;
if (d==1) {*/Tomat<int> mat,mat1,c,a;/*}
else {if (d==2) {Tomat<double> mat,mat1,c,a;}
else cout<<"4to-to ne to..."<<endl;
};
while (1==1){
cout<<"<----VIBERITE DEISTVIE---->"<<endl;
cout<<" 1 - slodgit' matrici;"<<endl<<" 2 - vi4est' matrici;"<<endl;
cout<<" 3 - peremnoghit' matrici;"<<endl<<" 4 - sravnit' matrici;"<<endl;
cout<<" 5 - umnoghit' matricu na 4islo;"<<endl<<" 6 - vozvesti matricu v stepen'"<<endl;
cout<<" 7 - transponirovat';"<<endl<<" 8 - Exit;"<<endl;
cin>>s;
switch(s)
{
case 1: {mat.vv(); mat1.vv(); c=mat+mat1; mat.write_to("summa matric : "); break; };
case 2: {mat.vv(); mat1.vv(); c=mat-mat1; mat.write_to("raznost' matric : ");break; };
case 3: {mat.vv(); mat1.vv(); c=mat*mat1; mat.write_to("proizvedenie matric : ");break; };
case 4: {mat.vv(); mat1.vv(); mat1.rav(mat1, mat); break; };
case 5: {mat.vv(); mat1=mat.mult(3); mat1.write_to("umnojenija");
// cout<<"Vvedite stepen' : ";
// cin>>st;
break; };
case 6: {mat.vv();
/* cout<<"vvedite stepen'"<<endl;
cin>>h;*/
mat1=mat.step(3);
/*char *s2="isxodnaja matrica v stepeni ";
char *s1;
itoa(h,s1,10);
strcat(s2,s1);*/
mat1.write_to("matrica v stepeni 3");
break; };
case 7: {mat.vv(); mat1=mat.trans(); mat1.write_to("
case 8: {exit(1);};
}
getch(); }
}

- Операции с монетами из драгоценных металлов
- Операции с монетами из драгоценных металов
- Операции с муниципальным имуществом
- Операции с недвижимостью и их налогообложение
- Операции с пластиковыми картами
- Операции с пластиковыми карточками
- Операции с пластиковыми карточками в РК
- Операции с драгоценными металлами и драгоценными камнями и их учет
- Операции с драгоценными металлами: организация, оформление и учет. Современное состояние рынка драгоценных металлов
- Операции сельскохозяйственного кредитного потребительского кооператива
- Операции с иностранной валютой
- Операции с использованием банковских карточек
- Операции с использованием банковских пластиковых карточек в Беларуси
- Операции с использованием банковских пластиковых карточек в Республике Беларусь