Program na riešenie sústavy lineárnych rovníc typu 3x3 pomocou Cramerovho pravidla
Delphi & Pascal (česká wiki)
Kategorija: Programy zos C, C++
Zrobil: ZSSR
Program: Cramer.c
Zrobil: ZSSR
Program: Cramer.c
Program na riešenie sústavy lineárnych rovníc typu 3x3 pomocou Cramerovho pravidla. Všetky premenné sú typu double.
#include <stdio.h> #include <stdlib.h> #define n 3 void Info() { printf("***********************************************\n"); printf("*Program na vypocet korenov riesenia sustavy *\n"); printf("*linearnych algebraickych rovnic Cramerovym *\n"); printf("*sposobom typu 3x3. *\n"); printf("* *\n"); printf("*Autor:ZSSR Licencia:free Verzia:1.1*\n"); printf("***********************************************\n\n"); } void Vstup1(double matica[n][n]) /* matica sustavy S */ { int i, j; for(i=0;i<n;i++){ printf("Zadaj postupne prvky %d. riadku matice 3x3:\n", (i+1)); for(j=0;j<n;j++) scanf("%lf", &matica[i][j]); } printf("\n\n"); } void Vstup2(double vektor[n]) /* vektor pravych stran */ { int i; printf("Zadaj postupne hodnoty vektora pravych stran:\n"); for(i=0;i<n;i++) scanf("%lf", &vektor[i]); printf("\n\n"); } double Determinant(double matica[n][n]) /* Sarussovo riesenie */ { double d1, d2, d3, det; d1=matica[0][0]*((matica[1][1]*matica[2][2])-(matica[2][1]*matica[1][2])); d2=matica[0][1]*(-1)*((matica[1][0]*matica[2][2])-(matica[2][0]*matica[1][2])); d3=matica[0][2]*((matica[1][0]*matica[2][1])-(matica[2][0]*matica[1][1])); det=d1+d2+d3; return det; } void Riesenie(double m[n][n], double b[n], double x[n], double D) /* vysledok */ { int i, j; double doc[n], det; for(i=0;i<n;i++){ for(j=0;j<n;j++){ doc[j]=m[j][i]; m[j][i]=b[j]; } det=Determinant(m); x[i]=det/D; for(j=0;j<n;j++){ m[j][i]=doc[j]; } } } int main() { double smatica[n][n], bvektor[n], xvektor[n], det; Info(); Vstup1(smatica); det=Determinant(smatica); if(det!=0){ Vstup2(bvektor); Riesenie(smatica, bvektor, xvektor, det); printf("Riesenie: [%8.3lf, %8.3lf,", xvektor[0], xvektor[1]); printf(" %8.3lf] \n\n", xvektor[2]); } else { printf("Dane sustavy rovnic nemaju riesenie!\n\n"); } system("pause"); return 0; }