//programma che consente di eseguire un sistema di quarto ordine con il metodo di pivout
#include<stdio.h>
#include<conio.h>
#include <math.h> //inclusione librerie
#include<dos.h>
#include<fstream.h>
#include<graphics.h>
void compl41(int &); //richiamo funzioni importanti per il calcolo del delta
void compl42(int &);
void compl43(int &);
void compl44(int &);
void det(); //calcolo del delta
float tt,y,z,xx;
void vai(); //serve per la risouzione con gauss
void stamp(); //stampa delle soluzioni
float mat[4][5]; //dichiarazione matrice
void scoef();
void tnot();
void Scelta();
void main()
{ Scelta();
textcolor(WHITE);
char c;
do
{textcolor(WHITE);
clrscr();
printf("\n\n");
textcolor(LIGHTRED);
cprintf(" INSERIMENTO DATI DELLA ");
cprintf("PRIMA EQUAZIONE:");
textcolor(YELLOW);
printf("\n\n\n");
cprintf(" -- Inserire il coefficiente della x1: ");
scanf("%f",&mat[1][1]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x2: ");
scanf("%f",&mat[1][2]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x3: ");
scanf("%f",&mat[1][3]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x4: ");
scanf("%f",&mat[1][4]);
printf("\n\n");
cprintf(" -- Inserire il termine noto: ");
scanf("%f",&mat[1][5]);
textcolor(LIGHTGREEN);
clrscr();
printf("\n\n");
textcolor(LIGHTRED);
cprintf(" INSERIMENTO DATI DELLA ");
cprintf("SECONDA EQUAZIONE:");
textcolor(YELLOW);
printf("\n\n\n");
cprintf(" -- Inserire il coefficiente della x1: ");
scanf("%f",&mat[2][1]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x2: ");
scanf("%f",&mat[2][2]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x3: ");
scanf("%f",&mat[2][3]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x4: ");
scanf("%f",&mat[2][4]);
printf("\n\n");
cprintf(" -- Inserire il termine noto: ");
scanf("%f",&mat[2][5]);
textcolor(LIGHTCYAN);
clrscr();
printf("\n\n");
textcolor(LIGHTRED);
cprintf(" INSERIMENTO DATI DELLA ");
cprintf("TERZA EQUAZIONE:");
textcolor(YELLOW);
printf("\n\n\n");
cprintf(" -- Inserire il coefficiente della x1: ");
scanf("%f",&mat[3][1]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x2: ");
scanf("%f",&mat[3][2]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x3: ");
scanf("%f",&mat[3][3]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x4: ");
scanf("%f",&mat[3][4]);
printf("\n\n");
cprintf(" -- Inserire il termine noto: ");
scanf("%f",&mat[3][5]);
textcolor(LIGHTMAGENTA);
clrscr();
printf("\n\n");
textcolor(LIGHTRED);
cprintf(" INSERIMENTO DATI DELLA ");
cprintf("QUARTA EQUAZIONE:");
textcolor(YELLOW);
printf("\n\n\n");
cprintf(" -- Inserire il coefficiente della x1: ");
scanf("%f",&mat[4][1]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x2: ");
scanf("%f",&mat[4][2]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x3: ");
scanf("%f",&mat[4][3]);
printf("\n\n");
cprintf(" -- Inserire il coefficiente della x4: ");
scanf("%f",&mat[4][4]);
printf("\n\n");
cprintf(" -- Inserire il termine noto: ");
scanf("%f",&mat[4][5]);
textcolor(WHITE);
cprintf("\n\n\n Vuoi ripetere l'immisione dei dati? (S/N)");
do{ c=getch(); fflush(stdin); }while(c!='s'&&c!='S'&&c!='n'&&c!='N');
if(c=='n'||c=='N')
{ scoef();
tnot();
det();
do{ c=getch(); fflush(stdin); }while(c!='s'&&c!='S'&&c!='n'&&c!='N');
}
}
while(c=='S'||c=='s');
}
void det()
{float determinante;
clrscr();
cprintf("\n\n\n DETERMINANTE");
int ascissa=1,ordinata;
while(ascissa<5)
{
ordinata=1;
while(ordinata<5)
{
gotoxy(9+ascissa*6,8+ordinata*3);
printf("%2.f",mat[ordinata][ascissa]);
ordinata++;
}
ascissa++;
}
gotoxy(36,10);
printf("³");
gotoxy(36,11);
printf("³");
gotoxy(36,12);
printf("³");
gotoxy(36,13);
printf("³");
gotoxy(36,14);
printf("³");
gotoxy(36,15);
printf("³");
gotoxy(36,16);
printf("³");
gotoxy(36,17);
printf("³");
gotoxy(36,18);
printf("³");
gotoxy(36,19);
printf("³");
gotoxy(36,20);
printf("³");
gotoxy(56,10);
printf("³");
gotoxy(56,11);
printf("³");
gotoxy(56,12);
printf("³");
gotoxy(56,13);
printf("³");
gotoxy(56,14);
printf("³");
gotoxy(56,15);
printf("³");
gotoxy(56,16);
printf("³");
gotoxy(56,17);
printf("³");
gotoxy(56,18);
printf("³");
gotoxy(56,19);
printf("³");
gotoxy(56,20);
printf("³");
ascissa=1;
while(ascissa<=3)
{
ordinata=1;
while(ordinata<=4)
{
gotoxy(35+ascissa*6,8+ordinata*3);
printf("%2.f",mat[ordinata][ascissa]);
ordinata++;
}
ascissa++;
}
int ris1,ris2,ris3,ris4;
compl41(ris1);
float a=mat[4][1]*ris1;
compl42(ris2);
float b=mat[4][2]*ris2;
compl43(ris3);
float c=mat[4][3]*ris3;
compl44(ris4);
float d=mat[4][4]*ris4;
determinante=a+b+c+d;
if (determinante==0)
{ printf("\n\n DELTA=0! ");
printf("\n\n ATTENZIONE...Il sistema risulta IMPOSSIBILE / INDETERMINATO");
printf("\n\n Vuoi continuare ad inserire dati? (S/N)");
}
else
{ printf("\n\n\n Stampa del determinante: %f",determinante);
printf("\n Premere un tasto per visualizzare le soluzioni...");
getch();
vai();
}
}
void compl41(int & risu1)
{ int miti=(mat[1][2]*mat[2][3]*mat[3][4])+(mat[1][3]*mat[2][4]*mat[3][2])+(mat[1][4]*mat[2][2]*mat[3][3]);
int mit1=(mat[1][3]*mat[2][2]*mat[3][4])+(mat[1][2]*mat[2][4]*mat[3][3])+(mat[1][4]*mat[2][3]*mat[3][2]);
risu1=-miti+mit1;
}
void compl42(int & risu2)
{int miti=(mat[1][1]*mat[2][3]*mat[3][4])+(mat[1][3]*mat[2][4]*mat[3][1])+(mat[1][4]*mat[2][1]*mat[3][3]);
int mit1=(mat[1][3]*mat[2][1]*mat[3][4])+(mat[1][1]*mat[2][4]*mat[3][3])+(mat[1][4]*mat[2][3]*mat[3][1]);
risu2=miti-mit1;
}
void compl43(int & risu3)
{int miti=(mat[1][1]*mat[2][2]*mat[3][4])+(mat[1][2]*mat[2][4]*mat[3][1])+(mat[1][4]*mat[2][1]*mat[3][2]);
int mit1=(mat[1][2]*mat[2][1]*mat[3][4])+(mat[1][1]*mat[2][4]*mat[3][2])+(mat[1][4]*mat[2][2]*mat[3][1]);
risu3=-miti+mit1;
}
void compl44(int & risu4)
{
int miti=(mat[1][1]*mat[2][2]*mat[3][3])+(mat[1][2]*mat[2][3]*mat[3][1])+(mat[1][3]*mat[2][1]*mat[3][2]);
int mit1=(mat[1][2]*mat[2][1]*mat[3][3])+(mat[1][1]*mat[2][3]*mat[3][2])+(mat[1][3]*mat[2][2]*mat[3][1]);
risu4=miti-mit1;
}
void vai()
{if(mat[1][1]==0)
{int vet[6];
int gig=1;
while(gig<=5)
{vet[gig]=mat[1][gig];
gig++;
}
int hh=1;
while(hh<=5)
{mat[1][hh]=mat[2][hh];
mat[2][hh]=vet[hh];
hh++;
}
}
clrscr();
float cu=mat[1][1];
int a=1;
while(a<=5)
{
mat[1][a]/=cu;
a++;
}
int b=1;
float qq=-mat[2][1];
while(b<=5)
{ mat[2][b]+=mat[1][b]*qq;
b++;
}
int so=2;
float si=mat[2][2];
while(so<=5)
{
mat[2][so]/=si;
so++;
}
int d=1;
float r=-mat[3][1];
while(d<=5)
{
mat[3][d]+=mat[1][d]*r;
d++;
}
int yaya=2;
float rr=-mat[3][2];
while(yaya<=5)
{mat[3][yaya]+=mat[2][yaya]*rr;
yaya++;
}
float bid=mat[3][3];
int aaa=3;
while(aaa<=5)
{
mat[3][aaa]/=bid;
aaa++;
}
int eee=1;
float r9=-mat[4][1];
while(eee<=5)
{
mat[4][eee]+=mat[1][eee]*r9;
eee++;
}
int yoyo=2;
float rio=-mat[4][2];
while(yoyo<=5)
{mat[4][yoyo]+=mat[2][yoyo]*rio;
yoyo++;
}
int noo=3;
float rio1=-mat[4][3];
while(noo<=5)
{mat[4][noo]+=mat[3][noo]*rio1;
noo++;
}
float bidib=mat[4][4];
int cr=4;
while(cr<=5)
{
mat[4][cr]/=bidib;
cr++;
}
tt=mat[4][5];
float tnot=mat[3][5];
float sper=mat[3][4]*tt;
z=tnot-sper;
float ale=mat[2][3]*z;
float ale1=mat[2][4]*tt;
float tnot1=mat[2][5];
y=tnot1-(ale+ale1);
float giu=mat[1][2]*y;
float giu1=mat[1][3]*z;
float giu2=mat[1][4]*tt;
float tnot2=mat[1][5];
xx=tnot2-(giu+giu1+giu2);
stamp();
}
void stamp()
{printf("\n\n\nCOEFFICIENTI DEL SISTEMA CON IL METODO DI PIVOUT");
int he=1,ordinata;
while(he<=5)
{
ordinata=1;
while(ordinata<5)
{
delay(350);
gotoxy(25+he*5,5+ordinata*3);
printf("%2.f",mat[ordinata][he]);
ordinata++;
}
he++;
}
printf(" \n\nSOLUZIONI: ");
printf("\n x1: %.2f",xx);
printf("\n x2: %.2f",y);
printf("\n x3: %.2f",z);
printf("\n x4: %.2f",tt);
printf("\n\n Vuoi continuare ad inserire dati? (S/N)");
}
void scoef()
{clrscr();
printf("\n\n MATRICE DEI COEFFICIENTI");
int i=1,j;
while(i<5)
{
j=1;
while(j<5)
{delay(350);
gotoxy(23+i*6,8+j*3);
printf("%2.f",mat[j][i]);
j++;
}
i++;
}
delay(500); printf("\n\n Premere un tasto per continuare...");
getch();
}
void tnot()
{ clrscr();
printf("\n\n TERMINI NOTI");
int i=1,j=1;
while(i<5)
{delay(350);
gotoxy(35+i*0,8+j*3);
printf("%2.f",mat[i][5]);
i++;
j++;
}
delay(500); printf("\n\n Premere un tasto per continuare..."); getch();
}