Форум программистов, компьютерный форум CyberForum.ru

Метод Гаусса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Узнать, что возвращает функция http://www.cyberforum.ru/cpp-beginners/thread803223.html
Функция возвращает указатель на неизвестную структуру но как определить что содержится в структуре? это нашел в интернете struct JassStringData { DWORD vtable; DWORD refCount;
C++ Поразрядная сортировка массива Дан массив двоичных чисел, нужно отсортировать его с помощью поразрядной сортировки, начиная со старшего разряда, функция должна быть рекурсивной. Никак не могу записать разбиение массива на части (вначале делится пополам, потом на 4 части и т.д.). Помогите, пожалуйста, довести программу до ума. Вот наработки: #include <cstdlib> #include <stdio.h> #include <math.h> #define L 16 int binary... http://www.cyberforum.ru/cpp-beginners/thread803205.html
C++ Программа про Stack
Помогите пожалуйста, решить программу про Stack. The input file should be HomeworkSixInput.txt, provided by the assignment. This file has one postfix notation expression per line. (You can test your program with any data you like, but this is the file that I will use to grade the program, and your program input should use this file name by default.) The program should read each line and...
C++ Что-то не могу въехать в задание
Написать функцию которая получает в качестве аргумента указатели к двум переменным типа int, которая изменяет значение указанных переменных, только тогда, когда указанная через второй аргумент переменная меньше от переменной указанной через первый аргумент. Только один вопрос. wtf?O_o void Switch(int *number1, int *number2) Не могу сообразить, в чем вообще смысл.
C++ обработка файлов http://www.cyberforum.ru/cpp-beginners/thread803146.html
товарищи подскажите что не так??? заранее благодарен!!! суть задачи следующая: "Найти максимальный из отрицательных элементов в файле целых чисел." То есть в той же папке что и программа я создаю файл допустим "1.txt" с набором цифр: 3 5 7 2 8 -2 8 -9 11 21 -32 И когда я ввожу в программе 1.txt мне должно выдать: " Максимальный из отрицательных элементов: -32 " Прога не работает!!!...
C++ Рекурсивные функции. В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов. Упорядочить элементы 2) 2. В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов. Упорядочить элементы массива по возрастанию. подробнее

Показать сообщение отдельно
_XDD_
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 5
08.03.2013, 18:29     Метод Гаусса
хм... вроде была где то работа, там 3 методами сделано, Гаусс, треугольный и еще какой то, сейчас поищу по вк кому скидывал...

Добавлено через 23 минуты
тааак, просьба ток сильно не ругать, писал довольно давно работу...

class SystemEquation
//Родительский класс. Система из трех линейных уравнений с тремя неизвестными x , y , z .
//Данные – коэффициенты, решение системы.
//Методы – ввод данных, вывод данных, нахождение решения методом Крамера.

листинг systemEqyation.h

Кликните здесь для просмотра всего текста

Код
#ifndef SYSTEMEQUATION_H
#define SYSTEMEQUATION_H

#include <math.h>
#include <iostream>

//Родительский класс. Система из трех линейных уравнений с тремя неизвестными x , y , z .
//Данные – коэффициенты, решение системы.
//Методы – ввод данных, вывод данных, нахождение решения методом Крамера.

using namespace std;

class SystemEquation
{
protected:
    //коофициенты
    int x,  y,  z;
    int x1, y1, z1;
    int x2, y2, z2;

    //переменные
    double resultX,  resultY,  resultZ;

    //результат каждого уравнения
    double result;
    double result1;
    double result2;

protected:
    double multiplication(const int &_x, const int &_y, const int &_z)
    {
        return _x * _y * _z;
    }

public:
    SystemEquation(const int &_x  = 0, const int &_y  = 0, const int &_z  = 0, const double &_result  = 0,
                   const int &_x1 = 0, const int &_y1 = 0, const int &_z1 = 0, const double &_result1 = 0,
                   const int &_x2 = 0, const int &_y2 = 0, const int &_z2 = 0, const double &_result2 = 0)
    {
        setEquation (_x,   _y,  _z, _result );
        setEquation1(_x1, _y1, _z1, _result1);
        setEquation2(_x2, _y2, _z2, _result2);
    }

    void setEquation(const int &_x, const int &_y, const int &_z, const double &_result)
    {
        x = _x;
        y = _y;
        z = _z;
        result = _result;
    }

    void setEquation1(const int &_x, const int &_y, const int &_z, const double &_result)
    {
        x1 = _x;
        y1 = _y;
        z1 = _z;
        result1 = _result;
    }

    void setEquation2(const int &_x, const int &_y, const int &_z, const double &_result)
    {
        x2 = _x;
        y2 = _y;
        z2 = _z;
        result2 = _result;
    }

    //возврат значений переменных
    double getResultX()
    {
        return resultX;
    }

    double getResultY()
    {
        return resultY;
    }

    double getResultZ()
    {
        return resultZ;
    }

    double calculationDeterminant()
    {
        return (multiplication(x, y1, z2) + multiplication(x2, y, z1) + multiplication(x1, y2, z)) -
                (multiplication(x2, y1, z) + multiplication(z2, x1, y) + multiplication(x, z1, y2));
    }

    double calculationDeterminant(const int &_x , const int &_y , const int &_z ,
                                          const int &_x1, const int &_y1, const int &_z1,
                                          const int &_x2, const int &_y2, const int &_z2)
    {
        return (multiplication(_x, _y1, _z2) + multiplication(_x2, _y, _z1) + multiplication(_x1, _y2, _z)) -
                (multiplication(_x2, _y1, _z) + multiplication(_z2, _x1, _y) + multiplication(_x, _z1, _y2));
    }

    virtual void calculation()
    {
        double determinant = calculationDeterminant();
        if(fabs(determinant) < 0.000001) //при методе Крамера определитель != 0
            return;

        double determinantX = calculationDeterminant(result, y, z,
                                                     result1, y1, z1,
                                                     result2, y2, z2);
        resultX = determinantX / determinant;

        double determinantY = calculationDeterminant(x, result, z,
                                                     x1, result1, z1,
                                                     x2, result2, z2);
        resultY = determinantY / determinant;

        double determinantZ = calculationDeterminant(x, y, result,
                                                     x1, y1, result1,
                                                     x2, y2, result2);
        resultZ = determinantZ / determinant;
    }

    void inputToStream()
    {
        cout << "x: " << resultX << endl;
        cout << "y: " << resultY << endl;
        cout << "z: " << resultZ << endl << endl;
    }

};

#endif // SYSTEMEQUATION_H



далее уже нужный вам класс
листинг systemEquation1.h

Кликните здесь для просмотра всего текста

Код
#ifndef SYSTEMEQUATION1_H
#define SYSTEMEQUATION1_H

#include "systemTriangleEquation.h"


//Методы – нахождение решения
//(делением коэффициентов в каждом уравнении).

class SystemEquation1:public SystemEquation
{
public:
    SystemEquation1(const int &_x  = 0, const int &_y  = 0, const int &_z  = 0, const double &_result  = 0,
                    const int &_x1 = 0, const int &_y1 = 0, const int &_z1 = 0, const double &_result1 = 0,
                    const int &_x2 = 0, const int &_y2 = 0, const int &_z2 = 0, const double &_result2 = 0):
        SystemEquation(_x, _y, _z, _result,
                       _x1, _y1, _z1, _result1,
                       _x2, _y2, _z2, _result2){}

    void setEquation(const int &_x, const int &_y, const int &_z, const double &_result)
    {
        this->SystemEquation::setEquation(_x, _y, _z, _result);
    }

    void setEquation1(const int &_x, const int &_y, const int &_z, const double &_result)
    {
        SystemEquation::setEquation1(_x, _y, _z, _result);
    }

    void setEquation2(const int &_x, const int &_y, const int &_z, const double &_result)
    {
        SystemEquation::setEquation2(_x, _y, _z, _result);
    }


    void calculation()
    {
        double _x = x, _y = y, _z = z;
        double _x1 = x1, _y1 = y1, _z1 = z1;
        double _x2 = x2, _y2 = y2, _z2 = z2;
        double factor;

        //сократим х

        factor = _x1 / _x;
        _x1 = 0;
        _y1 = _y1 - _y * factor;
        _z1 = _z1 - _z * factor;
        result1 = result1  - factor * result;

        factor = _x2 / _x;
        _x2 = 0;
        _y2 = _y2 - _y * factor;
        _z2 = _z2 - factor * _z;
        result2 = result2 - factor * result;


        //сократим у
        factor = _y2 / _y1;

        _y2 = 0;
        _z2 = _z2 - factor * _z1;
        result2 = result2 - factor * result1;


        //привели к треугольному виду

        resultZ = result2 / _z2;
        resultY = (result1 - _z1 * resultZ) / _y1;
        resultX = (result - _y * resultY - _z * resultZ ) / _x;
    }
};

#endif // SYSTEMEQUATION1_H
 
Текущее время: 01:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru