Помощь студентуФайлыЛабы по С++Основные функции работы с матрицами С++
27 Апреля 2024, Суббота
09:46
>>> Качественная веб-разработка <<<
09:46
Меню сайта
>Г Л А В Н А Я

>Ф А Й Л Ы

>С Т А Т Ь И

>Р Е Ф Е Р А Т Ы

>Ф О Р У М

>О Т З Ы В Ы

>Т Е С Т Ы

>F l a s h И Г Р Ы

>Ф О Т О Ш О П


Советуем...
Работа с массивами с++
Переписать элементы массива целых чисел X в обратном порядке в массив Y. Вычислить количество четных, нечетных и нулевых элементов массива Y.

Справочник по физике (2)
Ещё один справочник по физике. Документ в формате *.doc , поэтому для нахождения необходимой информации можно воспользоваться поиском.

Crack для Mafia 2
Скачать Crack кряк noDVD для мафия 2 Mafia 2 кряк Crack noDVD

MathCad 14
MathCad 14 + crack + русификатор.

Система PTC Mathcad 14 предоставляет собой мощное, удобное и наглядное средство описания алгоритмов решения математических задач. Система MathCAD настолько гибка и универсальна, что может оказать неоценимую помощь в решении математических задач как школьнику, постигающему азы математики, так и академику, работающему со сложнейшими научными проблемами.



Опрос
Вы учитесь в СУЗе/ВУЗе
Всего ответов: 249

Сотрудничество
Поставьте себе на сайт и сообщите мне


код кнопки:



Файлы
Главная » Файлы » Учебные материалы » Лабы по С++

Основные функции работы с матрицами С++

Название: Основные функции работы с матрицами С++
Категория: Лабы по С++
Формат файла: *.cpp
Размер: 3.8 Kb
Просмотров: 14488
Загрузок: 2464

Дата добавления: 18 Августа 2009, 09:55
Поделиться:
Скачать:

Скачать Основные функции работы с матрицами С++ бесплатно и без регистрации


Внимание! Если ссылка не работает, файл не найден или просто возникают какие-либо вопросы, напишите об этом, пожалуйста, мне на почту: xdypx@yandex.ru. В письме достаточно указать ссылку на эту страницу и описание проблемы или свой вопрос.


Описание:
Приемы и примеры работы с матрицами на С++. Это и транспонирование матрицы на с++, и возведение матрицы в квадрат на с++, и приведение матрицы к диагональному виду на с++. Готовая программа на с++ для работы с матрицами, транспонирование, возведение в квадрат, приведение к ступенчатому виду скачать бесплатно и без регистрации.

Исходный код:

Code
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>

//transponirovannaja matrica
int transponir(int **A,int n)
{
    int **BB;
    int i,j;
    BB =new int*[n];
     for (i=0; i<n; i++)
     {
        BB[i]=new int [n];
     }
        for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            BB[j][i]=A[i][j];
        }
    }
    cout<<"Transponirovannajaj matrica :"<<endl;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            cout<<BB[i][j]<<" ";
        }
        cout<<endl;
    }
    return **BB;
}

//Vozvedenie matrici v kvadrat
int Kvadrat(int **A, int n)
{
    int **CC;
    int i,j;
    CC =new int*[n];
     for (i=0; i<n; i++)
     {
        CC[i]=new int [n];
     }

        for(i=0;i<n;i++)
         {
            for(j=0;j<n;j++)
             {
                int Sum=0;
                for (int q=0; q<n; n++)
                {
                Sum+=A[i][n]* A[n][j];
                }
                CC[i][j]=Sum;
             }
         }
            cout<<"Matrica v kvadrate :"<<endl;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            cout<<CC[i][j]<<" ";
        }
        cout<<endl;
    }
    return **CC;
}
//privedenie k dagonalnomu vidu
int slau(int **A,int n)
{
        int ma,c,max;
        int **a,r,k,i,j,f;
        a=new int *[n];
         for (i=0;i<n;i++)               //pamjat dlja matricy
        {
            a[i]=new int [n];
        }
        for (i=0;i<n;i++)
        {
            for (j=0;j<n;j++)
            {
    a[i][j]=A[i][j];
            }
        }

        f=0;
        for (k=0;k<n;k++)         //nahoczdenie max elementa
        {
            max=fabs(a[k][k]);
            r=k;
            for (i=k+1;i<n;i++)
            {
    if (fabs(a[i][k])>max) {
                 max=fabs(a[i][k]);
                 r=i;
                         }
            }

    if (i!=r) f=f+1;

    for (j=0;j<n;j++)
    {
        c=a[k][j];
        a[k][j]=a[r][j];
        a[r][j]=c;
    }
    for (i=k+1;i<n;i++)
    {
        for (ma=a[i][k]/a[k][k],j=k;j<n;j++)
        a[i][j]-=ma*a[k][j];
    }
         }
         int det,fl;
         fl=1;
         det=1;
         for (i=0;i<n;i++)
         {
             if (a[i][i]!=0) det=det*a[i][i];    //determinant
             else {fl=0;break;}                  //esli raven 0
         }
                            //osvoboczdenie pamjati
         if (fl==0) {for (i=0;i<n;i++)  delete[]a[i];delete[]a; return 0;}
         else  {for (i=0;i<n;i++)  delete[]a[i];delete[]a;return det;}
}


//glavnaja
int main()
{
    clrscr();
    int **A,*Y;
    int n,i,j;
    A=new int *[n];
    Y=new int [n];
    cout<<"Vvedite razmer kvadratnoi matricy:"<<endl;
    cin>>n;
    for (i=0;i<n;i++)              //pamjat dlja matrici A
    {
        A[i]=new int [n];
    }
    cout<<"Vvedite elementy matricy:"<<endl;
    for(i=0;i<n;i++)           //vvod matricy A
    {
        for(j=0;j<n;j++)
        {
            cin>>A[i][j];
        }
    }
    cout<<endl;
    cout<<"Poluchennaja matrica:"<<endl;
    for(i=0;i<n;i++)             //vyvod
    {
        for(j=0;j<n;j++)
        {
            cout<<A[i][j]<<" ";
        }
        cout<<endl;
    }
    transponir(A,n);
    Kvadrat(A,n); //transponirovannaja
    int det;
    det=slau(A,n);   //determinant
    if (det==0) { //esli determinant raven nulju
        for(i=0;i<n;i++) delete[]A[i];delete[]A;
        for(i=0;i<n;i++) ;delete[]Y;
        cout<<"opredelitel raven 0!"<<endl;
        getch();
        return 0;
                }
    else { //inache
     double **C;
     C=new double *[n];
     for (i=0;i<n;i++)  //pamjat dlja nowoj matricy
     {
       C[i] = new double  [n];
     }
     for (i=0;i<n;i++)            //obratnaja
     {
       for (j=0;j<n;j++)
       {
         C[i][j]=((double)Y[i])/double(det);
       }
     }
  cout<<"Poluchennaja obratnaja matrica:"<<endl;
  for(i=0;i<n;i++)
  {
    for(j=0;j<n;j++)
    {
      cout<<C[i][j]<<" ";
    }
    cout<<endl;
  }
  int fll;
  fll=1;
  for(i=0;i<n;i++)  //sravnenie transponirovannoj s obratmoj
  {
    for(j=0;j<n;j++)
    {
      if (A[i][j]==C[i][j])  fll=1;
      else { fll=0;break;}
    }
  }
    /* if (fll==1)            { cout<<"Da,matrica ortogonalna."<<endl;
                         //osvoboczdenie
                         for(i=0;i<n;i++) delete[]A[i];delete[]A;
                         for(i=0;i<n;i++) delete[]B[i];delete[]B;
                         for(i=0;i<n;i++) delete[]C[i];delete[]C;
                         getch();
                         return 0;
                 }
                 else  {
                        cout<<"Net,matrica ne ortogonalna."<<endl;
                        //osvoboczdenie
                        for(i=0;i<n;i++) delete[]A[i];delete[]A;
                        for(i=0;i<n;i++) delete[]B[i];delete[]B;
                        for(i=0;i<n;i++) delete[]C[i];delete[]C;*/
                        getch ();
                        return 0;
                    }
    }


Комментарии:
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Разделы новостей
Образование [4]
лабы на Паскале [11]
Шпоры [10]
Учебники [19]
Лабы по физике [3]
Лабы по С++ [7]

Статистика

Яндекс.Метрика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Все пользователи

Яндекс цитирования Rambler's Top100

Сайт работает с 2008 года