Advertisement
Guest User

laba File

a guest
Apr 19th, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include<locale.h>
  4. #include<conio.h>
  5. using namespace std;
  6.  
  7. struct EquationSystem //structura start
  8. {
  9. int id;
  10. double Matrix[6][6];
  11. double Vector[6];
  12. int EquationCount;
  13. };
  14. struct EquationSystemRoot //structura finish
  15. {
  16. int id;
  17. double Root[6];
  18. int EquationCount;
  19. };
  20.  
  21. int Init(char *fname)//Vvod dannix
  22. {
  23. int i,j;
  24. double sum=0;
  25. char c;
  26. EquationSystem d;
  27. FILE *f;
  28. if((f = fopen(fname,"ab"))==NULL)
  29. {
  30. printf("Eror open File\n");
  31. return -1;
  32. }
  33.  
  34. do
  35. {
  36. printf("Nomer Zapisy:");
  37. scanf("%d",&d.id);
  38. printf("Vvedy Kolvo Uravnen\nNo Ne Bolshe 6\n");
  39. scanf("%d",&d.EquationCount);
  40. while(d.EquationCount > 6)
  41. {
  42. printf("Vvedy Kolvo Uravnen\nNo Ne Bolshe 6\n");
  43. scanf("%d",&d.EquationCount);
  44. }
  45. for(i=0;i<d.EquationCount;i++)
  46. {
  47. for(j=0;j<d.EquationCount;j++)
  48. {
  49. printf("Vvedy Koef");
  50. cin>>d.Matrix[i][j];
  51. while(d.Matrix[0][0]==0)
  52. {
  53. printf("Matix[0][0] Ne Mozhet = 0\nVvedy Zanogo\n");
  54. cin>>d.Matrix[0][0];
  55. }
  56. }
  57. printf("Vectora");
  58. cin>> d.Vector[i];
  59. }
  60. fwrite(&d,sizeof(d),1,f);
  61.  
  62. printf("Äîáàâèòü åùå çàïèñü? (+,-)\n");
  63. c=getchar(c);
  64. }
  65. while (c!='-');
  66.  
  67. fclose(f);
  68. }
  69. int Read(char *fname)
  70. {
  71. int i,j;
  72. EquationSystem d;
  73. FILE *f;
  74. if((f = fopen(fname,"rb"))==NULL)
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement