Решение системы двух уравнений с двумя неизвестными методом Крамера - C (СИ)
Формулировка задачи:
нужно составить алгоритм на языке СИ, который бы решил систему двух уравнении с двумя неизвестными
Решение задачи: «Решение системы двух уравнений с двумя неизвестными методом Крамера»
textual
Листинг программы
#include <math.h> #include <stdio.h> int Kramer(float a11,float a12, float a21,float a22, float b1 ,float b2, float *x ,float *y) { float det,detx,dety; det =a11*a22-a12*a21; detx=b1*a22-b2*a12; dety=a11*b2-b1*a21; if (fabs(det) > 1.0E-14) { *x=detx/det; *y=dety/det; return 0; /* единственное решение */ } else if ((fabs(detx) <1.0E-14) && (fabs(dety) <1.0E-14)) return 1; /* бесконечное множество решений */ else return -1; /* решений нет */ } int main(int argc, char* argv[]) { float A11,A12,B1,A21,A22,B2,X,Y; int rc; printf("A11="); scanf("%e",&A11); printf("A12="); scanf("%e",&A12); printf("B1="); scanf("%e",&B1); printf("A21="); scanf("%e",&A21); printf("A22="); scanf("%e",&A22); printf("B2="); scanf("%e",&B2); rc=Kramer(A11,A12,A21,A22,B1,B2,&X,&Y); if (rc == 0) printf("X=%e\nY=%e\n",X,Y); else if (rc == 1) printf("Infinite set of roots...\n"); else printf("Set of roots is empty...\n"); return 0; }
Объяснение кода листинга программы
- В функции
Kramer
происходит решение системы двух уравнений методом Крамера. - В функции
main
осуществляется ввод данных для системы уравнений и вызов функцииKramer
. - Если решение существует, то выводятся значения X и Y.
- Если решений бесконечное множество, то выводится сообщение
Infinite set of roots...
. - Если решений нет, то выводится сообщение
Set of roots is empty...
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д