В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
yanakisleiko
yanakisleiko
18.07.2022 00:18 •  Информатика

Написать программу на си/си++, используя указатели

решить систему из двух линейных уравнений(частные случаи можно не рассматривать)

Показать ответ
Ответ:
kalymkulovramaz
kalymkulovramaz
17.08.2020 13:14

#include <iostream>

#include <cmath>

#include <algorithm>

int main() {

   const double eps = 1e-7; //для сравнения с нулём вещественных чисел

   /*Коэффициенты системы уравнений будем хранить в матрице 2*3

     Система уравнений вида

     a1*x1+b1*x2=c1,

     a2*x1+b2*x2=c2

     в двумерном массиве будет храниться так:

     {{a1, b1, c1},

      {a2, b2, c2}}

   */

   double **m = new double*[2];

   for(int i = 0; i < 2; i++){

       m[i] = new double[3];

   }

   for(int i = 0; i < 2; i++){

       std::cout << "Input a, b, c for " << i + 1 << " equation:\n";

       for(int j = 0; j < 3; j++){

           std::cin >> m[i][j];

       }

   }

   /*

   Решить систему можно методом Крамера:

   det = a1*b2-a2*b1

   det1 = c1*b2-c2*b1

   det2 = a1*c2-a2*c1

   x1 = det1/det

   x2 = det2 / det

   */

   double det = m[0][0] * m[1][1] - m[1][0] * m[0][1];

   double det1 = m[0][2] * m[1][1] - m[1][2] * m[0][1];

   double det2 = m[0][0] * m[1][2] - m[1][0] * m[0][2];

   if (std::abs(det) < 1e-7){

       if (std::abs(det1) < 1e-7){

           std::cout << "Infinity solutions\n";

       }

       else{

           std::cout << "No solution\n";

       }

   }

   else{

       double x1 = det1 / det;

       double x2 = det2 / det;

       std::cout << "x1 = " << x1 << std::endl;

       std::cout << "x2 = " << x2 << std::endl;

   }

   //Освобождение выделенной динамической памяти

   for(int i = 0; i < 2; i++){

       delete []m[i];

   }

   delete []m;

   return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота