Program.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. using System;
  2. using System;
  3. using System.Diagnostics;
  4. using System.IO;
  5. class Program{
  6. public string[] product;
  7. public double brakPN10 = 0;
  8. public double brakPN16 = 0;
  9. public double brakPN20 = 0;
  10. public double brakPN25 = 0;
  11. public double PN10 = 0;
  12. public double PN16 = 0;
  13. public double PN20 = 0;
  14. public double PN25 = 0;
  15. public static void Main()
  16. {
  17. TextWriterTraceListener[] listeners = new TextWriterTraceListener[] {
  18. new TextWriterTraceListener($"{Directory.GetCurrentDirectory()}/debug.txt")
  19. };
  20. Trace.Listeners.AddRange(listeners);
  21. Console.ReadKey();
  22. Program obj = new Program();
  23. obj.Readdatas();
  24. obj.CheckProduct();
  25. }
  26. public void Readdatas()//метод для ситывания из файла
  27. {
  28. string[] lines = File.ReadAllLines(@"\\main\RDP\31П\КарзиновВА\Desktop\data.txt");
  29. Trace.WriteLine("данные считанны");
  30. product = new string[lines.Length];
  31. foreach (string s in lines)
  32. {
  33. }
  34. for (int i = 0; i < lines.Length; i++)
  35. {
  36. product[i] = lines[i];
  37. }
  38. }
  39. public void CheckProduct()// метод для вызова других методов через массив для проверки брака, нахождения процента брака и веса каждого изделия
  40. {
  41. Program obj = new Program();
  42. string line= "";
  43. string[] checking = product[0].Split(';');
  44. for (int i = 0; i < product.Length; i++)
  45. {
  46. checking = product[i].Split(';');
  47. obj.CheckBrak(checking);//проверка на брак
  48. }
  49. Trace.WriteLine("Осуществлена проверка на брак");
  50. foreach (string s in checking)
  51. {
  52. line += s + " ";
  53. }
  54. obj.ProcentBrak();// вывод процента
  55. Trace.WriteLine("Осуществлена вывод процента");
  56. for (int i = 0; i < product.Length; i++)
  57. {
  58. checking = product[i].Split(';');
  59. Console.WriteLine( line + " вес равен" + obj.weights(checking));// вывод dtcf
  60. }
  61. Trace.WriteLine("Осуществлена вывод веса");
  62. Trace.Flush();
  63. }
  64. public void CheckBrak(string[] myArray)//првоерка на брак
  65. {
  66. double lengts = 0;
  67. double vnDiametr = 0;
  68. double tolSten = 0;
  69. double min = 0;
  70. double max = 0;
  71. string line = "";
  72. //значения для проверки выхода за длину
  73. int minLengh = 3960;
  74. int maxLengh = 4040;
  75. //значения для проверки выхода за внешний диаметр
  76. switch (myArray[0])
  77. {
  78. case "PN10":
  79. PN10++;
  80. foreach (string s in myArray)
  81. {
  82. line += s + " ";
  83. }
  84. lengts = Double.Parse(myArray[1]);
  85. vnDiametr = Double.Parse(myArray[2]);
  86. tolSten = Double.Parse(myArray[3]);
  87. min = (vnDiametr / 100) * 10;
  88. max = (vnDiametr / 100) * 11;
  89. //проверка внешнего даметра
  90. // проверка толщины
  91. if (tolSten >= min & tolSten <= max)
  92. {
  93. // проверка длины
  94. if (lengts >= minLengh & lengts <= maxLengh)
  95. {
  96. Console.WriteLine(line + " -> соответствует");
  97. }
  98. else
  99. {
  100. brakPN10++;
  101. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  102. }
  103. }
  104. else
  105. {
  106. brakPN10++;
  107. if (lengts >= minLengh & lengts <= maxLengh)
  108. {
  109. Console.WriteLine($" {line} -> несоответствует толщина {tolSten} и внешний диаметр {vnDiametr} не входит в диапазон");
  110. }
  111. else
  112. {
  113. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  114. }
  115. }
  116. break;
  117. case "PN16":
  118. PN16++;
  119. foreach (string s in myArray)
  120. {
  121. line += s + " ";
  122. }
  123. lengts = Double.Parse(myArray[1]);
  124. vnDiametr = Double.Parse(myArray[2]);
  125. tolSten = Double.Parse(myArray[3]);
  126. min = (vnDiametr / 100) * 13.5;
  127. max = (vnDiametr / 100) * 14;
  128. if (tolSten >= min & tolSten <= max)
  129. {
  130. if (lengts >= minLengh & lengts <= maxLengh)
  131. {
  132. Console.WriteLine(line + " -> соответствует");
  133. }
  134. else
  135. {
  136. brakPN16++;
  137. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  138. }
  139. }
  140. else
  141. {
  142. brakPN16++;
  143. if (lengts >= minLengh & lengts <= maxLengh)
  144. {
  145. Console.WriteLine($" {line} -> несоответствует толщина {tolSten} и внешний диаметр {vnDiametr} не входит в диапазон");
  146. }
  147. else
  148. {
  149. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  150. }
  151. }
  152. break;
  153. case "PN20":
  154. PN20++;
  155. foreach (string s in myArray)
  156. {
  157. line += s + " ";
  158. }
  159. lengts = Double.Parse(myArray[1]);
  160. vnDiametr = Double.Parse(myArray[2]);
  161. tolSten = Double.Parse(myArray[3]);
  162. min = (vnDiametr / 100) * 16.5;
  163. max = (vnDiametr / 100) * 17;
  164. if (tolSten >= min & tolSten <= max)
  165. {
  166. if (lengts >= minLengh & lengts <= maxLengh)
  167. {
  168. Console.WriteLine(line + " -> соответствует");
  169. }
  170. else
  171. {
  172. brakPN20++;
  173. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  174. }
  175. }
  176. else
  177. {
  178. brakPN20++;
  179. if (lengts >= minLengh & lengts <= maxLengh)
  180. {
  181. Console.WriteLine($" {line} -> несоответствует толщина {tolSten} и внешний диаметр {vnDiametr} не входит в диапазон");
  182. }
  183. else
  184. {
  185. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  186. }
  187. }
  188. break;
  189. case "PN25":
  190. PN25++;
  191. foreach (string s in myArray)
  192. {
  193. line += s + " ";
  194. }
  195. lengts = Double.Parse(myArray[1]);
  196. vnDiametr = Double.Parse(myArray[2]);
  197. tolSten = Double.Parse(myArray[3]);
  198. min = (vnDiametr / 100) * 16.5;
  199. max = (vnDiametr / 100) * 17;
  200. if (tolSten >= min & tolSten <= max)
  201. {
  202. if (lengts >= minLengh & lengts <= maxLengh)
  203. {
  204. Console.WriteLine(line + " -> соответствует");
  205. }
  206. else
  207. {
  208. brakPN25++;
  209. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  210. }
  211. }
  212. else
  213. {
  214. brakPN25++;
  215. if (lengts >= minLengh & lengts <= maxLengh)
  216. {
  217. Console.WriteLine($" {line} -> несоответствует толщина {tolSten} и внешний диаметр {vnDiametr} не входит в диапазон");
  218. }
  219. else
  220. {
  221. Console.WriteLine($" {line} -> несоответствует длина {lengts} не входит в диапазон толщина {tolSten} и внешний диаметр{vnDiametr} не входит в диапазон");
  222. }
  223. }
  224. break;
  225. }
  226. }
  227. public void ProcentBrak()//подсчет процентов
  228. {
  229. double procPN10 = 0;
  230. double procPN16 = 0;
  231. double procPN20 = 0;
  232. double procPN25 = 0;
  233. //формула для прцоентов
  234. procPN10 = ((double)((brakPN10 / PN10) * 100));
  235. Console.WriteLine("Процент брака PN10 составляет" + procPN10);
  236. procPN16 = ((double)((brakPN16 / PN16) * 100));
  237. Console.WriteLine("Процент брака PN16 составляет" + procPN16);
  238. procPN20 = ((double)((brakPN20 / PN20) * 100));
  239. Console.WriteLine("Процент брака PN20 составляет" + procPN20);
  240. procPN25 = ((double)((brakPN25 / PN25) * 100));
  241. Console.WriteLine("Процент брака PN25 составляет" + procPN25);
  242. }
  243. public double weights(string[] myArray)//нахождение веса
  244. {
  245. double mass = 0;
  246. double plotNoA = 0.91 ;
  247. double plotA = 1.24 ;
  248. double S = Double.Parse(myArray[3]);
  249. double D = Double.Parse(myArray[2]);
  250. double L = Double.Parse(myArray[1]);
  251. if (myArray.Length == 5)
  252. {
  253. mass = Math.PI * plotA * S * (D - S) * L;
  254. }
  255. else mass = Math.PI * plotNoA * S * (D - S) * L;
  256. return mass;
  257. }
  258. }