Клас для роботи з квадратними матрицями

Автор работы: Пользователь скрыл имя, 22 Декабря 2011 в 21:52, курсовая работа

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

Актуальність моєї роботи полягає у тому, що робота з матрицями зустрічається практично у всіх ВУЗах майже на всіх спеціальностях, та часто на виробництві, при розрахунках. Однозначною перевагою програми є можливість проводити математичні операції над матрицями великої розмірності, що значно прискорює процес розрахунку в порівнянні з «ручною роботою».
У роботі необхідно виконати наступні завдання: проаналізувати предметну область, розробити програму, створити візуальний інтерфейс, провести тестування.

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

Вступ 7
Аналіз предметної області 8
1.1 Огляд існуючих методів вирішення завдання 8
1.2 Огляд існуючих програмних засобів, що вирішують аналогічні завдання 9
1.3 Висновки по розділу та постановка завдання роботи 9
Аналіз програмних засобів………………………………………………………...…… ……10
2.1 Огляд особливостей мови програмування........................................................................ .10
2.2 Огляд особливостей обраного компілятору…………………..…………………… …….14
2.3 Створення візуального інтерфейсу…………………….……….…….…………………..15
2.6 Висновки по розділу 2……………………………………………………..………………16
Основні рішення по реалізації компонентів системи…………………… ...…………….17
3.1 Основні рішення щодо уявлення даних системи……………………………………….. 17
3.2 Основні розроблені алгоритми ……………………………………..19
3.3 Основні рішення щодо модульного уявлення системи 20
3.4 Особливості реалізації системи 20
3.5 Результати тестування програми 21
3.6 Висновки по розділу 3 21
Посібник програміста 22
Інструкція користувача 25
Висновки 27

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

пз на курсовой мое.doc

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

             pM->print();

             cout<<"Determinant matrici:\n";

             cout << "det A=" << pM->det() << endl;

              break;

        case 6: //exit

             break;

        default:

                cout << "unknown command\n";

                break;

        }

    }while(command!=6);

    if (pM!=0) delete pM;

    if (pM2!=0) delete pM2; 

    system ("pause");

    return 0;   

}; 

M::M(int k, int in_num)

{

      num = in_num;

      n=k;

      p=new float *[n];

      for (int i=0; i<n; i++)

          p[i]=new float[n];

      cout << "Vvedite matricu N"<<num+1<<" "<<n<<"x"<<n<<":"<<endl;

      for (int i=0; i<n; i++)

           for (int j=0; j<n; j++)

               cin >> p[i][j];              

}; 

M::M()

{

      cout << "Vvedite koli4estvo strok:\t";

      cin >> n;

      p=new float *[n];

      for (int i=0; i<n; i++)

          p[i]=new float[n];

      cout << "Vvedite matricu:\n";

      for (int i=0; i<n; i++)

           for (int j=0; j<n; j++)

               cin >> p[i][j];              

}; 

M::M(const M& a)

{

      n=a.n;

      num = a.num;

      p=new float *[n];

      for (int i=0; i<n; i++)

          p[i]=new float[n];

      for (int i=0; i<n; i++)

           for (int j=0; j<n; j++)

               p[i][j]=a.p[i][j];

}; 

M::M(int k)

{

       n=k;

      num = -1;

      p=new float *[n];

      for (int i=0; i<n; i++)

          p[i]=new float[n];

      for (int i=0; i<n; i++)

           for (int j=0; j<n; j++)

               p[i][j]=0;           

}          

M::~M()

{ 

      for (int i=0; i<n; i++)

          delete [] p[i];

       delete [] p;

}; 

void M::print()

{

     if (num>=0)

        cout << "Matrica N"<<num+1<<":\n";

     else

        cout << "Matrica resultata:\n"; 

     for (int i=0; i<n; i++)

           {

           for (int j=0; j<n; j++)

               cout << p[i][j] << "\t";    

           cout << endl;

           }

}; 

M M::multi(float l)

{

     M tmp(n);

     for (int i=0; i<n; i++)

           for (int j=0; j<n; j++)

               tmp.p[i][j]=l*p[i][j];

     return tmp;

} 

M M::add(M tmp2)

{

     M tmp(n);

     for (int i=0; i<n; i++)

           for (int j=0; j<n; j++)

               tmp.p[i][j]=p[i][j]+tmp2.p[i][j];

     return tmp;                

} 

M M::multim(M tmp2)

{

     M tmp(n);             

     for (int i=0; i<n; i++)

           for (int j=0; j<n; j++)

               for (int r=0; r<n; r++)

                   tmp.p[i][j]+=p[i][r]*tmp2.p[r][j];

     return tmp;

} 

M M::trans()

{

     M tmp(n);           

     for (int i=0; i<n; i++)

         for (int j=0; j<n; j++)

             tmp.p[i][j]=p[j][i];

     return tmp;

} 

double M::det()

{

    double tmp=0;

    switch (n)

    {

    case 1:

         tmp=p[0][0];

         break;

    case 2:

         tmp=p[0][0]*p[1][1]-p[0][1]*p[1][0];

         break;

    default:     

    float **temp= new float *[n], **sum=new float*[n];

      for (int i=0; i<n; i++)

            temp[i]=new float [n*2];

      for (int i=0; i<n; i++)

            sum[i]=new float [2];

      for (int i=0; i<n; i++)

            for (int j=0; j<n; j++)

            {

                  temp[i][j]=p[i][j];

                  temp[i][j+n]=p[i][j];

            }

      for (int i=0; i<n; i++)

            for (int j=0; j<2; j++)

                  sum[i][j]=1;

      for (int i=0; i<n; i++)

      {

            for (int j=0; j<n; j++)

            {

                  sum[i][0]*=temp[j][j+i];

                  sum[i][1]*=temp[n-j-1][j+i];

            }

            tmp+=sum[i][0]-sum[i][1];

      }

    }

      return tmp;

} 
 
 
 
 
 
 
 
 
 

 

Додаток В

Інтерфейс програми 
 

 

Додаток Д

Результати  роботи системи 
 

 
 
 
 
 
 
 
 
 

Информация о работе Клас для роботи з квадратними матрицями