Разработка пакета прикладных программ для вычисления определителя матрицы произвольного порядка

Автор: Пользователь скрыл имя, 30 Марта 2012 в 07:12, курсовая работа

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

Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX
Цель работы – разработка пакета прикладных программ для вычисления определителя матрицы произвольного порядка.

Содержание

ВВЕДЕНИЕ
1. АНАЛИЗ ВОПРОСА И ПОСТАНОВКА ЗАДАЧИ
1.1. Выбор метода решения
1.2. Выбор инструментальных средств
1.3. Выбор аппаратных средств
1.4. Выводы по первой главе
2. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ
2.1. Общая структура программного модуля
2.2. Блок - схемы алгоритмов и их описание
2.3. Контрольный текстовый пример
2.4. Выводы по второй главе
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ

Работа содержит 1 файл

курсовик.doc

— 380.00 Кб (Скачать)

* Наименование: нет.                                                        *

* Назначение: вычисляет функцию Крамера                                     *

* Описатель: float *Kramer(float **A, float*B, int Razm)                   *             

* Входные параметры:                                                        *

* float **A – исходная матрица;                                             *

* float*B – столбец свободных членов;                                       *                          

* int Razm – размерность матрицы.                                           *                                                  

* Выходные параметры: нет.                                                  *

* Возвращаемое значение: x.                                                 *

* Внешние ссылки: printf, getch.                                            *

*****************************************************************************

*Программист: Кравченко Д.С. Группа: ИА-22                                  *

****************************************************************************/

 

float *Kramer(float **A, float*B, int Razm)

{float              *X = new float[Razm],  // выделение памяти для столбца с решением

                 **A_= new float*[Razm],              // матрица с замененным столбцом

                            det,   // определитель матрицы

                            det_;              // определитель матрицы A_

 

              // определение детерминанта матрицы

              det=Det(A,Razm);

              // если детерминант матрицы равен нулю то выход

              if(!det)

              {              printf("\n\n The matrix determinant is equal to zero,"

                                             "\n\t the further decision is not possible..."

                                             "\n\n Press any key for exit...");

                            getch();

                            // очищение памяти перед выходом

                            delete[] A;

                            delete[] X;

                            return NULL;   // возвращает ноль

              }

              // решение матрицы методом Крамера

              // копирование матрицы A в матрицу A_

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

              {              A_[i]=new float[Razm];

 

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

                                          A_[i][j] = A[i][j];

              }

 

              for(i=0; i<Razm; i++)

              {   // заменяем i-й столбец столбцом свободных членов

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

                                          A_[j][i] = B[j];

 

                            // определим детерминант полученной матрицы

                            det_ = Det(A_,Razm);

                            X[i] = det/det_; // нахождение неизвестного

 

                            // восстанавливаем столбец старыми значениями

                            for(j=0; j<Razm; j++)

                                          A_[j][i] = A[j][i];

              }

              return X;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/****************************************************************************

* Дата: 23/05/10 Время: 16:55 Версия: v.1.0                                 *

* Компилятор: BC v.3.1.                                                     *

* Лист 1/Листов 2                                                           *

* ***************************************************************************

* Проект:PROJECT2.PRJ                                                       *

* Файл: project.cpp                                                         *

* Наименование: нет.                                                        *

* Назначение: решает матрицу произвольного порядка методом Крамера          *

* Описатель: void main(void)                                                *

* Входные параметры: нет.                                                   *

* Выходные параметры: нет.                                                  *

* Возвращаемое значение: нет.                                               *

* Внешние ссылки: printf, scanf, getch .                                    *

*****************************************************************************

*Программист: Кравченко Д.С. Группа: ИА-22                                  *

****************************************************************************/

 

void main(void)

{

              int Razm;              // хранит в себе размерность матрицы

              float **A,                            // двумерный массив указателей на элементы матрицы

                                          *B,                            // столбец свободных членов

                                          *X;                            // столбец с решением

              printf("\n Enter dimension of a matrix: ");

              scanf("%d",&Razm);

              printf("\n Matrix filling:\n\n");  // запонение матрицы

              A = new float*[Razm];              // выделение памяти для матрицы

              B = new float[Razm];              // выделение памяти для столбца B

 

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

              { A[i] = new float[Razm]; // выделение памяти для каждого элемента           

                                                                матрицы

                            // ввод элементов матрицы с клавиатуры

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

                            {              printf("Enter element (%d,%d): ",i+1,j+1);

                                          scanf("%f",&A[i][j]);

                            }

                            // ввод свободных членов

                            printf("Enter element B[%d]: ",i+1);

                            scanf("%f",&B[i]);

              }

      // отобразить матрицу на экране

              printf("\n\n Matrix:\n");

              for(i=0; i<Razm; i++)

              {              printf("\n");

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

                                          printf("%f\t",A[i][j]);

                            printf("|  %f",B[i]);

              }

 

 

              printf("\n\n\t For continue press any key...");

              getch();// задержка

              // решение матрицы методом Крамера

              X=Kramer(A,B,Razm);

              if(!X) return; // если нет решения выход

              printf("\n\n he answer:");

              for(i=0; i<Razm; i++)

                            printf("\n X%d = %f",i+1,X[i]);

              printf("\n\n Press any key...");

              getch();

}

 



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