View difference between Paste ID: cwkvsikk and 3eDqfgLL
SHOW: | | - or go back to the newest paste.
1
#include <stdio.h>
2-
#include <time.h>
2+
#include <iostream>
3-
#include <stdlib.h>
3+
#include<locale.h>
4-
#include <math.h>
4+
#include<conio.h>
5-
#define M 5
5+
using namespace std;
6-
#define N 7
6+
7-
#define A -50
7+
struct EquationSystem //structura start
8-
#define B 50
8+
9
	int id;
10-
void Init(int a[][N],int m , int n)
10+
	double Matrix[6][6];
11
	double Vector[6];
12
	int EquationCount;
13-
	for(i = 0 ; i < m ; i++)
13+
};
14-
		for(j = 0 ; j < n ; j++)
14+
struct EquationSystemRoot //structura finish
15-
			a[i][j]=A+rand()%(B-A+1);
15+
{	
16
	int id;			
17-
void Print(int a[][N],int m,int n)
17+
	double Root[6];		
18
	int EquationCount;	
19
};
20-
	for(i = 0 ; i < m; i++)
20+
21
int Init(char *fname)//Vvod dannix
22-
		for(j = 0 ; j < n ; j++)
22+
23-
			printf("%4d",a[i][j]);
23+
24-
		printf("\n");
24+
	double sum=0;
25
	char c;
26-
	printf("\n");
26+
	EquationSystem d;
27
	FILE *f;
28-
int Prostoe(int a)
28+
	if((f = fopen(fname,"ab"))==NULL)
29
	{
30-
	a=abs(a);
30+
		printf("Eror open File\n");
31
		return -1;
32-
	if (a==2)
32+
33-
		return 1;
33+
	
34-
	if (a==0 || a==1 || a%2==0)
34+
	do
35-
		return 0;
35+
36-
	int i=3;
36+
		printf("Nomer Zapisy:");
37-
	while(i <= a/2 && a%i != 0)
37+
		scanf("%d",&d.id);
38-
		i+=2;
38+
		printf("Vvedy Kolvo Uravnen\nNo Ne Bolshe 6\n");
39-
	return i>a/2;
39+
		scanf("%d",&d.EquationCount);
40
		while(d.EquationCount > 6)
41-
int CountStr(int a[][N],int m,int n)
41+
42
			printf("Vvedy Kolvo Uravnen\nNo Ne Bolshe 6\n");
43-
	int i,j,count=0,flag=0,max=0,buf=0;
43+
			scanf("%d",&d.EquationCount);
44-
	for( i = 0 ; i < m; i++)
44+
45
		for(i=0;i<d.EquationCount;i++)
46-
		for(j = 0 ; j < n ; j++)
46+
47-
			if(Prostoe(a[i][j])==1)
47+
			for(j=0;j<d.EquationCount;j++)
48
			{
49-
				printf("==%4d",a[i][j]);
49+
				printf("Vvedy Koef");
50-
				count++;
50+
				cin>>d.Matrix[i][j];
51-
				flag=1;
51+
				while(d.Matrix[0][0]==0)
52
				{
53-
		if(count>=max)
53+
					printf("Matix[0][0] Ne Mozhet = 0\nVvedy Zanogo\n");
54
					cin>>d.Matrix[0][0];
55-
			max=count;
55+
				}
56-
			buf=i;
56+
57
			printf("Vectora");
58-
		count=0;
58+
			cin>> d.Vector[i]; 
59
		}
60-
	if (flag==0)
60+
		fwrite(&d,sizeof(d),1,f);
61
62-
	if (flag)
62+
		printf("Äîáàâèòü åùå çàïèñü? (+,-)\n");
63-
		return buf;
63+
		c=getchar(c);
64
	}
65
	while (c!='-');
66
		
67-
	int a[M][N],b[M],buf;
67+
	fclose(f);
68-
	srand(time(NULL));;
68+
69-
	Init(a,M,N);
69+
int Read(char *fname)
70-
	Print(a,M,N);
70+
71-
	buf=CountStr(a,M,N);
71+
72-
	if(buf==-1)
72+
	EquationSystem d;
73-
	printf("Net Stroki s prostimi 4islami");
73+
	FILE *f;
74-
	else
74+
	if((f = fopen(fname,"rb"))==NULL)
75-
	printf("\nNomer Stroki=%d\n",buf);
75+
76
		printf("Eror open File:Net Takogo FILE\n");
77
		return -1;
78
	}
79
	while(fread(&d,sizeof(d),1,f))
80
	{
81
		printf("\nID==%d",d.id);
82
		printf("\nEquationCount==%d\n",d.EquationCount);
83
		printf("\nMatrica=   \n");
84
		for(i = 0 ; i < d.EquationCount ; i++)
85
		{
86
			printf("(");
87
			for(j = 0 ; j < d.EquationCount ; j++)
88
				printf(" %7.2f",d.Matrix[i][j]);
89
			printf(" |%7.2f)\n",d.Vector[i]);
90
		}
91
	}
92
}
93
double Sum ( double *a, int n)
94
{
95
	int i;
96
	double sum=0;
97
	for( i = 0 ; i < n ; i++)
98
		sum+=a[i];
99
	return sum;
100
}
101
long Size(char *fname)
102
{
103
    FILE *f;
104
    long n;
105
    if((f = fopen(fname,"rb"))==NULL)
106
        return -1;
107
    fseek(f,0,SEEK_END);
108
    n = ftell(f);
109
    return n;
110
}
111
int Obrabotka(char *fname, char *fname2)
112
{
113
	int sum,k,i,j,l,b,m;
114
	double buf,koef;
115
	EquationSystem d;
116
	EquationSystemRoot d2;
117
	FILE *f,*f2;
118
	if((f = fopen(fname,"rb"))==NULL)
119
        return -1;
120
 	if((f2 =fopen(fname2,"ab"))==NULL)
121
 	{
122
 		fclose(f);
123
 		return -2;
124
 	}
125
 	fclose(f2);
126
	while( fread(&d,sizeof(d),1,f))
127
	{
128
		for(m = 0 ; m < d.EquationCount - 1; m++)//Stup Vid1
129
			for(i = 1 + m ; i < d.EquationCount ; i++)
130
			{
131
				if( d.Matrix[m][m] == 0)
132
					continue;
133
				koef = d.Matrix[i][m] / d.Matrix[m][m] * (-1);
134
				for(j = m ; j < d.EquationCount ; j++)
135
					d.Matrix[i][j] = koef * d.Matrix[m][j] +d.Matrix[i][j];
136
				d.Vector[i]=d.Vector[m]*koef+d.Vector[i];
137
				
138
			}		
139
		for(i=0 ,k=d.EquationCount-1; i<d.EquationCount && i<=k;i++,k--)//perestanovka1
140
		{
141
			buf=d.Vector[i];
142
			d.Vector[i]=d.Vector[k];
143
			d.Vector[k]=buf;
144
			if (i<k)
145
				for(j=0,l=d.EquationCount-1;j<d.EquationCount ;j++,l--)
146
				{ 
147
					buf= d.Matrix[i][j];
148
					d.Matrix[i][j]=d.Matrix[k][l];
149
					d.Matrix[k][l]=buf;
150
				}
151
			else
152
				for(j=0,l=d.EquationCount-1;j<=l;j++,l--)
153
				{ 
154
					buf= d.Matrix[i][j];
155
					d.Matrix[i][j]=d.Matrix[k][l];
156
					d.Matrix[k][l]=buf;
157
				}
158
		}	
159
		for(m = 0 ; m < d.EquationCount - 1; m++)//Stup Vid2
160
			for(i = 1 + m ; i < d.EquationCount ; i++)
161
			{
162
				if( d.Matrix[m][m] == 0)
163
				{
164
					printf("Continue!!!");
165
					continue;
166
				}
167
				koef = d.Matrix[i][m] / d.Matrix[m][m] * (-1);
168
				for(j = m ; j < d.EquationCount ; j++)
169
					d.Matrix[i][j] = koef * d.Matrix[m][j] +d.Matrix[i][j];
170
				d.Vector[i]=d.Vector[m]*koef+d.Vector[i];
171
			}	
172
		for(i=0 ,k=d.EquationCount-1; i<d.EquationCount && i<=k;i++,k--)//Perestanovka2
173
		{
174
			buf=d.Vector[i];
175
			d.Vector[i]=d.Vector[k];
176
			d.Vector[k]=buf;
177
			if (i<k)
178
				for(j=0,l=d.EquationCount-1;j<d.EquationCount ;j++,l--)
179
				{ 
180
					buf= d.Matrix[i][j];
181
					d.Matrix[i][j]=d.Matrix[k][l];
182
					d.Matrix[k][l]=buf;
183
				}
184
			else
185
				for(j=0,l=d.EquationCount-1;j<=l;j++,l--)
186
				{ 
187
					buf= d.Matrix[i][j];
188
					d.Matrix[i][j]=d.Matrix[k][l];
189
					d.Matrix[k][l]=buf;
190
				}
191
		}
192
		
193
	//	printf("\n\n\nPosle Smeni===\n"); //vivod 
194
	//	for(i=0;i<d.EquationCount;i++)//vivod
195
	//	{
196
	//		for(j=0;j<d.EquationCount;j++)//vivdo
197
	//			printf("%5.2f",d.Matrix[i][j]);//vivod
198
	//		printf("|%5.2f",d.Vector[i]);
199
	//		printf("\n");
200
	//	}
201
		f2=fopen(fname2 , "ab");
202
		for(i = d.EquationCount-1 ; i >= 0; i--)
203
		{
204
			if(Sum(d.Matrix[i],d.EquationCount) == 0 )
205
			{
206
				d2.Root[i]=1;
207
				continue;
208
			}
209
			else
210
				d2.Root[i]=(d.Vector[i]-(Sum(d.Matrix[i],d.EquationCount)-d.Matrix[i][i]))/d.Matrix[i][i];
211
		}
212
		d2.id=d.id;
213
		d2.EquationCount=d.EquationCount;		
214
		fwrite(&d2,sizeof(d2),1,f2);
215
		fclose(f2);
216
	} 
217
	
218
	fclose(f);
219
	f2=fopen(fname2 , "r");
220
	while(fread(&d2,sizeof(d2),1,f2))
221
	{
222
		printf("\nID==%d",d2.id);
223
		printf("\nEquationCount==%d\n",d2.EquationCount);
224
		printf("Korni=   ");
225
		for(i = 0 ; i < d2.EquationCount ; i++)
226
		{
227
			printf(" %5.2f",d2.Root[i]);
228
		}
229
	}
230
	fclose(f2);
231
	
232
	if((Size(fname)) == 0)
233
	puts("Ôàéë ïóñò!");
234
}
235
int main()
236
{
237
	setlocale(LC_ALL,"Rus");
238
	EquationSystem d;
239
	EquationSystemRoot d2;
240
	int c;
241
	int sum,k,i,j,b,m,l;
242
	double buf,koef;
243
	char fname[50],fname2[50];
244
	//char fname[]="Z:\\fail\\second.txt";
245
	//char fname[]="D:\\univer\\C\\programki\\laba3.txt";
246
	//char fname2[]="D:\\univer\\C\\programki\\laba3.1.txt";
247
	FILE *f,*f2;
248
	//f=fopen(fname,"rb");
249
	while(1)
250
	{
251
		puts("\t\t\t***ÌÅÍÞ***");
252
		puts("1 - Äîáàâèòü çàïèñü â ôàéë èëè ñîçäàòü íîâûé,åñëè åãî íåò");
253
		puts("2 - ×òåíèå âõîäíîãî ôàéëà");
254
		puts("3 - Îáðàáîòêà");
255
        puts("0 - Âûõîä");
256
		fflush(stdin);
257
		c = getch();
258
		printf("Podtvedite vibor\n");
259
		//c=getch();
260
		 switch(c)
261
		 {
262
		 	
263
		 	case '1':
264
	            printf("Vvedite FIlE Name: ");scanf("%s",fname);
265
	            Init(fname);
266
	            break;
267
	        case '2':
268
	            printf("Ââåäèòå íàçâàíèå ôàéëà: ");scanf("%s",fname);
269
	            Read(fname);
270
	            break;
271
	        case '3':
272
	            printf("Ââåäèòå íàçâàíèå âõîäíîãî ôàéëà: ");scanf("%s",fname);
273
	            printf("Ââåäèòå íàçâàíèå âûõîäíîãî ôàéëà: ");scanf("%s",fname2);
274
	           	Obrabotka(fname,fname2);
275
	            break;
276
	        case '0':
277
		 	    return 0;
278
		 }
279
    }
280
	
281
	
282
	
283
	
284
	
285
	
286
	printf("\nKonec\n");
287
	return 0;
288
}