نمایش نتایج 1 تا 5 از 5

نام تاپیک: دترمینان ماتریس nدرn

  1. #1

    دترمینان ماتریس nدرn

    salam in barname determinane matrise n*n hast ke too mohite turbo C++‎ 4ta error dare mishe lotf konid va onharo bartaraf konid.
    #include <conio.h>
    #include <iostream.h>
    #include <vector.h> error


    class Permute
    { error
    vector< int > set;
    vector<vector< int > > all;

    public:
    void Print()
    {
    unsigned size = all.size();
    for(unsigned i = 0; i < size; i++)
    {
    unsigned size_i = all[i].size();
    for(unsigned j = 0; j < size_i; j++)
    cout<< all[i][j] << " ";
    cout<< "\n";
    }
    }
    //-------------------------------------------
    void Run()
    {
    unsigned size = set.size();
    if(size == 0)
    return;
    if(size == 1)
    {
    all.push_back(set);
    return;
    }

    unsigned i = 0; /* sweeper item can be any number between 0 & size - 1 */

    vector<int> subset;
    for(unsigned j = 0; j < size; j++)
    {
    if(i != j)
    subset.push_back(set[j]);
    }
    Permute P(subset);

    unsigned allsize = P.Size();

    for(unsigned k = 0; k < allsize; k++)
    {
    unsigned size_k = P[k].size();
    for(unsigned m = 0; m <= size_k; m++)
    {
    P[k].insert(P[k].begin() + m,set[i]);
    all.push_back(P[k]);
    P[k].erase(P[k].begin() + m);
    }
    }
    }
    //-------------------------------------------
    unsigned Size()
    {
    return all.size();
    }
    //-------------------------------------------
    vector<int>& operator [](unsigned i)
    {
    if(Size() <= i)
    i = Size() - 1;
    return all[i];
    }
    public:
    Permute(vector<int> set)
    : set(set)
    {
    Run();
    }
    };

    int Sign(vector<int> v) 2ta error
    {
    unsigned returns = 0;
    unsigned size = v.size();
    for(unsigned i = 0; i < size; i++)
    for(unsigned j = i + 1; j < size; j++)
    {
    if(v[j] < v[i])
    returns++;
    }

    if(returns % 2 == 0)
    return 1;
    else
    return -1;
    }

    template<const int n> // n by n matrix
    double Determinant(double a[n][n]) // determinant
    {
    vector<int> v;
    for(unsigned i = 0; i < n; i++)
    v.push_back(i);
    Permute P(v);
    unsigned size = P.Size();

    double sum = 0;
    for(unsigned k = 0; k < size; k++)
    {
    double prod = Sign(P[k]);
    for(unsigned i = 0; i < n; i++)
    prod *= a[i][P[k][i]];
    sum += prod;
    }
    return sum;
    }

    int main()
    {
    double a[3][3] =
    {
    {0, 0, 1},
    {5,-2, 6},
    {1, 1, 2}
    };
    cout<< Determinant<3>(a);
    _getch();
    }

  2. #2

    نقل قول: دترمینان ماتریس nدرn

    تا جایی که به خاطر دارم vector در ++Turbo C وجود نداره و در نسخه‌های بعدی اضافه شده. پس هر عبارتی که از این کلاس و هدرفایل استفاده کرده باشید خطا می‌ده.

  3. #3

    نقل قول: دترمینان ماتریس nدرn

    تو ویژوال سی پلاس پلاس جواب میده؟

  4. #4

    نقل قول: دترمینان ماتریس nدرn

    نقل قول نوشته شده توسط hatamabadi مشاهده تاپیک
    تو ویژوال سی پلاس پلاس جواب میده؟
    اگه ویژوال سی پلاس پلاس 6 منظورتونه که مطمئن نیستم. چون کار نکردم اصلا. اما در ویژوال دات نت تا جایی که دیدم جواب می‌ده. البته هدرفایل vector خالی هستش، نه vector.h. مثل کد زیر:



    #include< iostream >
    #include< vector >

    using namespace std;

    ...




    امتحان کنید. اگه خطای دیگه‌ای نداشته باشه اجرا می‎شه. من کل کد رو نخوندم که متوجه بشم خطای دیگه‌ای داره یا نه.

  5. #5

    نقل قول: دترمینان ماتریس nدرn

    بااصلاح هدرفایل همونطوری که شماگفتین توویژوال استودیو2008اجراشد.خیلی ممنون ازراهنماییتون

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •