Указатели на указатели

Тема в разделе "Общие вопросы по С и С++", создана пользователем Z1ppeR, 4 янв 2008.

  1. Z1ppeR

    Z1ppeR Гость

    Вот пример консольной программы на C++ :

    Код (Text):
    #include <iostream.h>
    #include <conio.h>
    #include <math.h>

    int** csmatr(int**,int); // --- Функция создания и вывода матрицы -------
    double determinant(int**,int); // --- Функция вычисления определителя ---------

    void main(void)
    {
    int **a,i,N,**matr;
    // -------------------- Указываем порядок матрицы ------------------------ //
    clrscr();
    cout<<"Введите порядок матрицы: "; cin>>N;
    cout<<'\n';
    // -------------------- Создание матрицы и вывод ее на экран ------------- //
    a=csmatr(matr,N);
    // -------------------- Вывод определителя на экран ---------------------- //
    cout<<"Определитель матрицы = "<<determinant(a,N);
    // -------------------- Освобождение памяти ------------------------------ //
    for (i=0;i<=N-1;i++) delete a[i];
    delete a;

    getch();
    }


    /*---------------------------------------------------------------------------
    Функция создания матрицы (обязательно должен быть динамический массив)
    ---------------------------------------------------------------------------*/
    int** csmatr(int **matr,int N)
    {
    int i,j;

    // -------------------- Формирование строк матрицы ----------------------- //
    matr=new int*[N];
    // -------------------- Формирование столбцов матрицы -------------------- //
    for (i=0;i<=N-1;i++) {matr[i]=new int[N];}

    return matr;

    }


    /*---------------------------------------------------------------------------
    Функция вычисления определителя (должна быть обязательно рекурсия)
    ---------------------------------------------------------------------------*/
    double determinant(int **a, int N)
    {
    int i,j;
    int **matr1;
    /* int sign=1;*/
    double determ=0;

    if (N==2)
    {
    determ=a[0][0]*a[1][1]-a[0][1]*a[1][0];
    }
    else
    {
    matr1=new int*[N-1];

    for(i=0;i<N;i++)
    {
    for(j=0;j<N-1;j++)
    {
    if(j<i) {matr1[j]=a[j];}
    else {matr1[j]=a[j+1];}
    }
    determ+=pow(-1,(i+j))*determinant(matr1,N-1)*a[i][N-1];
    }
    delete matr1;
    }

    return determ;
    cout<<'\n';
    }

    Сам не до конца понимаю всё, но здесь исп. двойные указатели для того, чтобы определить квадратную матрицу. Проблема в том, что фактические данные не вводятся и определитель всегда равен 0! Как их ввести (например, заполнить случ. числами)?
     
  2. gamecreator

    gamecreator Гость

    cin - считывает данные с клавиатуры
    random(n) - генерирует случайное число от 0 до n-1
    учи матчасть.
     
  3. Folderx

    Folderx Гость

    <!--QuoteBegin-gamecreator+-->
    <span class="vbquote">(gamecreator)</span><!--QuoteEBegin-->random(n) - генерирует случайное число от 0 до n-1
    учи матчасть.[/quote]
    Это где такое найти ?
     
  4. gamecreator

    gamecreator Гость

    нажми в среде shift+f1 и узнаешь
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-gamecreator+5:01:2008, 12:05 -->
    <span class="vbquote">(gamecreator @ 5:01:2008, 12:05 )</span><!--QuoteEBegin-->нажми в среде shift+f1 и узнаешь
    [snapback]92246" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Вот сначала сам нажми! Где определена эта функция? В CRT есть только rand
     
  6. Folderx

    Folderx Гость

    <!--QuoteBegin-gamecreator+-->
    <span class="vbquote">(gamecreator)</span><!--QuoteEBegin-->нажми в среде shift+f1 и узнаешь[/quote]
    Вопрос остаётся, среда это не матчасть, давай матчасть где искать :(
     
  7. gamecreator

    gamecreator Гость

    у тебя корявый хелп. она в stdlib.h
     
  8. Folderx

    Folderx Гость

    Код (Text):
    /* These are the functions that actually do things. The `random', `srandom',
    `initstate' and `setstate' functions are those from BSD Unices.
    The `rand' and `srand' functions are required by the ANSI standard.
    We provide both interfaces to the same random number generator. */
    /* Return a random long integer between 0 and RAND_MAX inclusive. */
    We provide both interfaces

    короче то же самое
     
  9. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-gamecreator+6:01:2008, 13:04 -->
    <span class="vbquote">(gamecreator @ 6:01:2008, 13:04 )</span><!--QuoteEBegin-->у тебя корявый хелп. она в stdlib.h
    [snapback]92308" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    У тя руки корявые! Не надо в разделе "Общие вопросы по С и С++" давать ссылки на функции, не определенные в стандарте. А если даешь то указывай компилятор! Вот нет у в VS 2005 в stdlib.h random(n). Что мне сделать? Скопировать из твоего любимого BC++ 3.1?
     
Загрузка...

Поделиться этой страницей