М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
innassss
innassss
21.06.2022 05:27 •  Информатика

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

👇
Ответ:
AnikaNay
AnikaNay
21.06.2022
Код написан ниже. 
Пример ввода:
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.length()) {
      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.length()) && (str[i] >= '0') && (str[i] <= '9')) {
         n = 10 * n + (str[i] - '0');
         isCoeffOmitted = false;
         i++;
      }
      if ((i < str.length()) && (str[i] == '.')) {
         int exp = 0;
         i++;
         while ((i < str.length()) && (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.length()) && (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.size()) && (eqns[j][vars[i]] == 0))
         j++;
      if (j == eqns.size()) 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; i--) {
      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.begin(), vars.end());
   try {
      GaussJordan(eqns, vars_list);
   }
   catch (char const *e) {
      cout << e;
      return 1;
   }
   printAnswer(eqns, vars_list);   
   return 0;
}
4,5(98 оценок)
Открыть все ответы
Ответ:
Vita0814
Vita0814
21.06.2022
1. Винер Норберт - изучил высшую математику, стал доктором философии Гарвардского университета , профессор Массачусетского технологического института. Получил известность как математик работами по теории потенциала, гармоническим функциям, рядам и преобразованиям Фурье, тауберовым теоремам, общему гармоническому анализу. У Винера возникла идея о необходимости создания единой науки, изучающей процессы хранения и переработки информации, управления и контроля. Для этой науки предложил название кибернетика .
2. Клод Шеннон - основатель теории информации .Приложил свои руки в инженерии, кибернетики, электротехнике, математике и теории информации. Разработал теорию связи кодирования. Создал промышленную  радиоуправляемую игрушку , ввёл понятие "бит" - единица измерения. Отмечен многими наградами и премиями,  и Нобелевской премией.
3. Тедом Нельсоном в 1965 году
4. Тим Бернерс-Ли в 1980 году
4,6(11 оценок)
Ответ:
katyaklimovich
katyaklimovich
21.06.2022
Var N,B,k:integer;
Begin
Write('N = ');ReadLn(N);
Write('Искомые числа:');
For N:= 1 to N do
    Begin
    B:=N;
    k:=1;
    // перед каждой проверкой k:=1
    // и если число не делится на любую из своих цифр, то k:=0
    While B > 0 do
       Begin
       if B mod 10 = 0 then k:=0
       // B mod 10 - это остаток от деления B на 10
       // то есть, например, 123 mod 10 = 3
       else if N mod (B mod 10) > 0 then k:=0;
       B:=B div 10
       // целая часть от деления B на 10
       // 123 div 10 = 12
       End;
    if k = 1 then Write(' ',N)
    End;
End.
4,8(46 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ