Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2015, 14:42   #1
kimi_
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 1
По умолчанию Вычислить определитель методом Крамера

Здравствуйте, помогите пожалуйста написать программу в консольном приложении.
Дана матрица А. Ввести ее элементы с клавиатуры, посчитать определитель по методу Крамера и вывести на экран.
Заранее спасибо!
kimi_ вне форума Ответить с цитированием
Старый 30.06.2015, 06:09   #2
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Функция для подсчета детерминанта:
Код:
double det(double **matrix, unsigned int dim)
{
    double **copy;
    double result = 1.0;
    int sign = 1;
    int key = 1;
    double *temp;
    double multi;
    unsigned int i, j ,k;

    copy = (double **)malloc(dim * sizeof(double *));

    for (i = 0; i < dim; i++)
    {
        copy[i] = (double *)malloc(dim * sizeof(double));

        for (j = 0; j < dim; j++)
            copy[i][j] = matrix[i][j];
    }

    for (k = 0; k < dim; k++)
    {
        if (copy[k][k] == 0.0)
        {
            key = 0;

            for (i = k + 1; i < dim; i++)
            {
                if (copy[i][k] != 0.0)
                {
                    key = 1;

                    temp = copy[k];
                    copy[k] = copy[i];
                    copy[i] = temp;

                    sign *= -1;

                    break;
                }
            }
        }

        if (key == 0){
            for (i = 0; i < dim; i++)
                free(copy[i]);

            free(copy);

            return 0.0;
        }


        for (i = k + 1; i < dim; i++)
        {
            multi = copy[i][k] / copy[k][k];

            for (j = 0; j < dim; j++)
                copy[i][j] -= multi * copy[k][j];
        }

        result *= copy[k][k];
    }

    for (i = 0; i < dim; i++)
        free(copy[i]);

    free(copy);

    return sign * result;
}
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа на си шарп: калькулятор СЛАУ методом Крамера макс34455 Помощь студентам 0 28.02.2015 16:29
Решение СЛАУ методом Крамера (Delphi) Denis0993 Помощь студентам 1 02.06.2013 14:01
Ришить систему линейных уравнений методом Крамера. Gino4ka Помощь студентам 1 02.05.2013 21:43
Решить методом Крамера и Гаусса KIRILOW Помощь студентам 49 30.10.2012 18:26
Решение СЛАУ методом Гаусса и методом Крамера. R1k1 Помощь студентам 0 24.03.2012 19:17