Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <iostream>
- #include<locale.h>
- #include<conio.h>
- using namespace std;
- struct EquationSystem //structura start
- {
- int id;
- double Matrix[6][6];
- double Vector[6];
- int EquationCount;
- };
- struct EquationSystemRoot //structura finish
- {
- int id;
- double Root[6];
- int EquationCount;
- };
- int Init(char *fname)//Vvod dannix
- {
- int i,j;
- double sum=0;
- char c;
- EquationSystem d;
- FILE *f;
- if((f = fopen(fname,"ab"))==NULL)
- {
- printf("Eror open File\n");
- return -1;
- }
- do
- {
- printf("Nomer Zapisy:");
- scanf("%d",&d.id);
- printf("Vvedy Kolvo Uravnen\nNo Ne Bolshe 6\n");
- scanf("%d",&d.EquationCount);
- while(d.EquationCount > 6)
- {
- printf("Vvedy Kolvo Uravnen\nNo Ne Bolshe 6\n");
- scanf("%d",&d.EquationCount);
- }
- for(i=0;i<d.EquationCount;i++)
- {
- for(j=0;j<d.EquationCount;j++)
- {
- printf("Vvedy Koef");
- cin>>d.Matrix[i][j];
- while(d.Matrix[0][0]==0)
- {
- printf("Matix[0][0] Ne Mozhet = 0\nVvedy Zanogo\n");
- cin>>d.Matrix[0][0];
- }
- }
- printf("Vectora");
- cin>> d.Vector[i];
- }
- fwrite(&d,sizeof(d),1,f);
- printf("Äîáàâèòü åùå çàïèñü? (+,-)\n");
- c=getchar(c);
- }
- while (c!='-');
- fclose(f);
- }
- int Read(char *fname)
- {
- int i,j;
- EquationSystem d;
- FILE *f;
- if((f = fopen(fname,"rb"))==NULL)
- {
- printf("Eror open File:Net Takogo FILE\n");
- return -1;
- }
- while(fread(&d,sizeof(d),1,f))
- {
- printf("\nID==%d",d.id);
- printf("\nEquationCount==%d\n",d.EquationCount);
- printf("\nMatrica= \n");
- for(i = 0 ; i < d.EquationCount ; i++)
- {
- printf("(");
- for(j = 0 ; j < d.EquationCount ; j++)
- printf(" %7.2f",d.Matrix[i][j]);
- printf(" |%7.2f)\n",d.Vector[i]);
- }
- }
- }
- double Sum ( double *a, int n)
- {
- int i;
- double sum=0;
- for( i = 0 ; i < n ; i++)
- sum+=a[i];
- return sum;
- }
- long Size(char *fname)
- {
- FILE *f;
- long n;
- if((f = fopen(fname,"rb"))==NULL)
- return -1;
- fseek(f,0,SEEK_END);
- n = ftell(f);
- return n;
- }
- int Obrabotka(char *fname, char *fname2)
- {
- int sum,k,i,j,l,b,m;
- double buf,koef;
- EquationSystem d;
- EquationSystemRoot d2;
- FILE *f,*f2;
- if((f = fopen(fname,"rb"))==NULL)
- return -1;
- if((f2 =fopen(fname2,"ab"))==NULL)
- {
- fclose(f);
- return -2;
- }
- fclose(f2);
- while( fread(&d,sizeof(d),1,f))
- {
- for(m = 0 ; m < d.EquationCount - 1; m++)//Stup Vid1
- for(i = 1 + m ; i < d.EquationCount ; i++)
- {
- if( d.Matrix[m][m] == 0)
- continue;
- koef = d.Matrix[i][m] / d.Matrix[m][m] * (-1);
- for(j = m ; j < d.EquationCount ; j++)
- d.Matrix[i][j] = koef * d.Matrix[m][j] +d.Matrix[i][j];
- d.Vector[i]=d.Vector[m]*koef+d.Vector[i];
- }
- for(i=0 ,k=d.EquationCount-1; i<d.EquationCount && i<=k;i++,k--)//perestanovka1
- {
- buf=d.Vector[i];
- d.Vector[i]=d.Vector[k];
- d.Vector[k]=buf;
- if (i<k)
- for(j=0,l=d.EquationCount-1;j<d.EquationCount ;j++,l--)
- {
- buf= d.Matrix[i][j];
- d.Matrix[i][j]=d.Matrix[k][l];
- d.Matrix[k][l]=buf;
- }
- else
- for(j=0,l=d.EquationCount-1;j<=l;j++,l--)
- {
- buf= d.Matrix[i][j];
- d.Matrix[i][j]=d.Matrix[k][l];
- d.Matrix[k][l]=buf;
- }
- }
- for(m = 0 ; m < d.EquationCount - 1; m++)//Stup Vid2
- for(i = 1 + m ; i < d.EquationCount ; i++)
- {
- if( d.Matrix[m][m] == 0)
- {
- printf("Continue!!!");
- continue;
- }
- koef = d.Matrix[i][m] / d.Matrix[m][m] * (-1);
- for(j = m ; j < d.EquationCount ; j++)
- d.Matrix[i][j] = koef * d.Matrix[m][j] +d.Matrix[i][j];
- d.Vector[i]=d.Vector[m]*koef+d.Vector[i];
- }
- for(i=0 ,k=d.EquationCount-1; i<d.EquationCount && i<=k;i++,k--)//Perestanovka2
- {
- buf=d.Vector[i];
- d.Vector[i]=d.Vector[k];
- d.Vector[k]=buf;
- if (i<k)
- for(j=0,l=d.EquationCount-1;j<d.EquationCount ;j++,l--)
- {
- buf= d.Matrix[i][j];
- d.Matrix[i][j]=d.Matrix[k][l];
- d.Matrix[k][l]=buf;
- }
- else
- for(j=0,l=d.EquationCount-1;j<=l;j++,l--)
- {
- buf= d.Matrix[i][j];
- d.Matrix[i][j]=d.Matrix[k][l];
- d.Matrix[k][l]=buf;
- }
- }
- // printf("\n\n\nPosle Smeni===\n"); //vivod
- // for(i=0;i<d.EquationCount;i++)//vivod
- // {
- // for(j=0;j<d.EquationCount;j++)//vivdo
- // printf("%5.2f",d.Matrix[i][j]);//vivod
- // printf("|%5.2f",d.Vector[i]);
- // printf("\n");
- // }
- f2=fopen(fname2 , "ab");
- for(i = d.EquationCount-1 ; i >= 0; i--)
- {
- if(Sum(d.Matrix[i],d.EquationCount) == 0 )
- {
- d2.Root[i]=1;
- continue;
- }
- else
- d2.Root[i]=(d.Vector[i]-(Sum(d.Matrix[i],d.EquationCount)-d.Matrix[i][i]))/d.Matrix[i][i];
- }
- d2.id=d.id;
- d2.EquationCount=d.EquationCount;
- fwrite(&d2,sizeof(d2),1,f2);
- fclose(f2);
- }
- fclose(f);
- f2=fopen(fname2 , "r");
- while(fread(&d2,sizeof(d2),1,f2))
- {
- printf("\nID==%d",d2.id);
- printf("\nEquationCount==%d\n",d2.EquationCount);
- printf("Korni= ");
- for(i = 0 ; i < d2.EquationCount ; i++)
- {
- printf(" %5.2f",d2.Root[i]);
- }
- }
- fclose(f2);
- if((Size(fname)) == 0)
- puts("Ôàéë ïóñò!");
- }
- int main()
- {
- setlocale(LC_ALL,"Rus");
- EquationSystem d;
- EquationSystemRoot d2;
- int c;
- int sum,k,i,j,b,m,l;
- double buf,koef;
- char fname[50],fname2[50];
- //char fname[]="Z:\\fail\\second.txt";
- //char fname[]="D:\\univer\\C\\programki\\laba3.txt";
- //char fname2[]="D:\\univer\\C\\programki\\laba3.1.txt";
- FILE *f,*f2;
- //f=fopen(fname,"rb");
- while(1)
- {
- puts("\t\t\t***ÌÅÍÞ***");
- puts("1 - Äîáàâèòü çàïèñü â ôàéë èëè ñîçäàòü íîâûé,åñëè åãî íåò");
- puts("2 - ×òåíèå âõîäíîãî ôàéëà");
- puts("3 - Îáðàáîòêà");
- puts("0 - Âûõîä");
- fflush(stdin);
- c = getch();
- printf("Podtvedite vibor\n");
- //c=getch();
- switch(c)
- {
- case '1':
- printf("Vvedite FIlE Name: ");scanf("%s",fname);
- Init(fname);
- break;
- case '2':
- printf("Ââåäèòå íàçâàíèå ôàéëà: ");scanf("%s",fname);
- Read(fname);
- break;
- case '3':
- printf("Ââåäèòå íàçâàíèå âõîäíîãî ôàéëà: ");scanf("%s",fname);
- printf("Ââåäèòå íàçâàíèå âûõîäíîãî ôàéëà: ");scanf("%s",fname2);
- Obrabotka(fname,fname2);
- break;
- case '0':
- return 0;
- }
- }
- printf("\nKonec\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement