Есть ответ 👍

Написать программу для решения слу методом жордана-гаусса. программа на вход получает n - количество уравнений, затем сами уравнения, каждое - в формате строки. пример: входные данные: 3 2x+y+z=7 x+2y+z=8 x+y+2z=9 выходные данные: x=1 y=2 z=3 язык c++

133
197
Посмотреть ответы 2

Ответы на вопрос:


Код написан ниже.  пример ввода: 4 x100+12mamba+11=barry-3 7x100-4barry=4 barry=x100-2mamba 4=2+2 пример вывода: barry=6 mamba=-1 x100=4 #include < iostream> #include < map> #include < string> #include < set> #include < vector> #define abs(x) ((x)< 0 ? -(x) : (x)) using namespace std; typedef map< string, double> equation; equation parseline(const string & str, set< string> & vars) {     map< string, double> eqn;     bool left_part = true;     size_t i = 0;     while (i < str. {       double n = 0;       bool isneg = ! left_part;       bool iscoeffomitted = true;       string var = "";       if (str[i] == '='){           left_part = false;           i++;           continue;       }       if ((str[i] == '-') || (str[i] == '+'))       {           if (str[i] == '-') isneg = ! isneg;           i += 1;       }       while ((i < str. & & (str[i] > = '0') & & (str[i] < = '9')) {           n = 10 * n + (str[i] - '0');           iscoeffomitted = false;           i++;       }       if ((i < str. & & (str[i] == '.')) {           int exp = 0;           i++;           while ((i < str. & & (str[i] > = '0') & & (str[i] < = '9')){             n = 10 * n + (str[i] - '0');             exp++;             i++;           }           for (int j = 0; j < exp; n /= 10., j++);           }       while ((i < str. & & (str[i] ! = '+') & & (str[i] ! = '=') & & (str[i] ! = '-')){           var += str[i];           i++;       }       if (iscoeffomitted) n = 1;       if (isneg) n = -n;       eqn[var] += n;       vars.insert(var);     }     return eqn; } void gaussjordan(vector< equation> & eqns, const vector< string> & vars) {     for (size_t i = 0; i < vars.size(); i++) {       size_t j = i;       while ((j < eqns. & & (eqns[j][vars[i]] == 0))           j++;       if (j == eqns. throw "underdetermined system";       if (j ! = i) swap(eqns[i], eqns[j]);       double elem = eqns[i][vars[i]];       for (equation: : iterator it = eqns[i].begin(); it ! = eqns[i].end(); it++)           it-> second /= elem;       for (j = i + 1; j < eqns.size(); j++){           elem = eqns[j][vars[i]];           for (equation: : iterator it = eqns[i].begin(); it ! = eqns[i].end(); it++)             eqns[j][it-> first] -= elem * eqns[i][it-> first];       }     }     for (size_t i = vars.size(); i < eqns.size(); i++)       for (equation: : iterator it = eqns[i].begin(); it ! = eqns[i].end(); it++)           if (abs(it-> second) > 1e-12) throw "no solutions";     for (size_t i = vars.size() - 1; i > 0; {       for (size_t j = 0; j < i; j++) {           eqns[j][""] -= eqns[j][vars[i]] * eqns[i][""];           eqns[j][vars[i]] = 0;       }     } } void printanswer(vector< equation> & eqns, vector< string> & vars) {     for (size_t i = 0; i < vars.size(); i++)       cout < < vars[i] < < "=" < < -eqns[i][""] < < endl; } int main() {     set< string> vars;     vector< equation> eqns;     size_t n = 0;     cin > > n;     for (size_t i = 0; i < n; i++) {       string t;       cin > > t;       eqns.push_back(parseline(t, vars));     }     vars.erase("");     vector< string> vars_list(vars. vars.;     try {       gaussjordan(eqns, vars_list);     }     catch (char const *e) {       cout < < e;       return 1;     }     printanswer(eqns, vars_list);         return 0; }

Модель - это искусственно созданный объект, представление о реальном объекте, процессе или явлении, отражающий существующие стороны изучаемого объекта с точки зрения цели моделирования. 

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS