fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO;
  11. using System.Threading;
  12.  
  13.  
  14. namespace WindowsFormsApplication1
  15. {
  16. public partial class Form1 : Form
  17. {
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. Grid.RowCount = 10;
  22. Grid.AllowUserToAddRows = false;
  23.  
  24. //чтение из файла
  25. var names = new List<string>();
  26. string[] lines = File.ReadAllLines(@"E:/table.txt", Encoding.Default);
  27. for (int i = 0; i < 9; i++)
  28. {
  29. string[] array = lines[i].Split(';');
  30. for (int n = 0; n < 9;n++ )
  31. { Grid[n, i].Value = array[n]; }
  32. }
  33.  
  34. }
  35.  
  36. private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
  37. {
  38.  
  39. }
  40.  
  41. private void HorBtn_Click(object sender, EventArgs e)
  42. {
  43. int i, j;
  44. int[,] vgrid = new int[9, 9];//создание массива
  45. int[,] oldgrid = new int[9, 9];//создание старого массива
  46. int change = 1;
  47.  
  48. for (i = 0; i < 9; ++i)//запись из таблицы в массив
  49. for (j = 0; j < 9; ++j)
  50. if (Grid.Rows[i].Cells[j].Value!="")
  51. vgrid[i, j]=Convert.ToInt32(Grid.Rows[i].Cells[j].Value);
  52.  
  53.  
  54. // while (change != 0)//цикл редактирования
  55. // {
  56. for (i = 0; i < 9; ++i)//запись из нового массива в старый
  57. for (j = 0; j < 9; ++j)
  58. oldgrid[i, j] = vgrid[i, j];
  59. //начинаем редактирование
  60.  
  61. for (i = 0; i < 9; ++i) //горизонтальный прогон
  62. {
  63. int recx = 0;
  64. int recy = 0;
  65. int zeros = 0;
  66. int sum = 0;
  67. for (j = 0; j < 9; ++j)
  68. {
  69. sum = sum + vgrid[i, j];
  70. if (vgrid[i, j] == 0)
  71. {
  72. zeros++;
  73. recx = i; recy = j;
  74. }
  75. }
  76. if (zeros == 1) { vgrid[recx, recy] = 45 - sum;
  77. }
  78. }
  79. //////////////////////////////////////////////////
  80. for (i = 0; i < 9; ++i) //вертикальный прогон
  81. {
  82. int recx = 0;
  83. int recy = 0;
  84. int zeros = 0;
  85. int sum = 0;
  86. for (j = 0; j < 9; ++j)
  87. {
  88. sum = sum + vgrid[j, i];
  89. if (vgrid[j, i] == 0)
  90. {
  91. zeros++;
  92. recx = j; recy = i;
  93. }
  94. }
  95. if (zeros == 1) { vgrid[recx, recy] = 45 - sum;
  96. }
  97. }
  98. /////////////////////////////////////
  99. for (int x = 0; x < 3; x++)//прогон блока
  100. for (int y = 0; y < 3; y++)
  101. {
  102. int recx = 0;
  103. int recy = 0;
  104. int zeros = 0;
  105. int sum = 0;
  106. for (i = 3 * x; i < 3 + 3 * x; ++i) //горизонтальный прогон
  107. {
  108.  
  109. for (j = 3 * y; j < 3 + 3 * y; ++j)
  110. {
  111. sum = sum + vgrid[i, j];
  112. if (vgrid[i, j] == 0)
  113. {
  114. zeros++;
  115. recx = i; recy = j;
  116. }
  117. }
  118.  
  119. }
  120.  
  121. if (zeros == 1) { vgrid[recx, recy] = 45 - sum; }
  122. }
  123.  
  124. //метод исключения
  125. for (int x = 0; x < 3; x++)//прогон блока
  126. for (int y = 0; y < 3; y++)
  127. {
  128. int zeros = 0;
  129. int[] xblank = new int[10]; //х-координата пустой клетки
  130. int[] yblank = new int[10]; //у-координата пустой клетки
  131. bool[] available = new bool[10]; //доступность пустой клетки
  132. bool[] used = new bool[10]; //использованность пустой клетки другим числом
  133. bool present = false;
  134. int possibleblanks = 0;
  135. for(int a = 1; a<=9; a++)
  136. {
  137. available[a]=false;
  138. used[a]=false;
  139. }
  140.  
  141. for (i = 3 * x; i < 3 + 3 * x; ++i) //Сколько нулей, сука?
  142. {
  143. for (j = 3 * y; j < 3 + 3 * y; ++j)
  144. if (vgrid[i, j] == 0)
  145. {
  146. zeros++;
  147. xblank[zeros]=i;
  148. yblank[zeros] = j;
  149. available[zeros]=true;
  150. }
  151. }
  152. //Каких цифр не хватает?
  153. for(int n = 1; n<=9;n++)
  154. { present = false;
  155. possibleblanks = 0;
  156. for(int a = 1; a<=9; a++)
  157. {
  158. available[a]=true;
  159. }
  160. for (i = 3 * x; i < 3 + 3 * x; ++i)
  161. {
  162. for (j = 3 * y; j < 3 + 3 * y; ++j)
  163. if (vgrid[i, j] == n)
  164. {
  165. present = true;
  166. }
  167. }
  168. if(present==false)//если такой цифры нет, смотрим, можно ли подставить
  169. {
  170. for (int blankcount = 1; blankcount <= zeros; blankcount++)
  171. {
  172. if (used[blankcount] == false)//если пустая клетка не использована
  173. {
  174. for (int a = 0; a < 9; a++)//перекрестная проверка конфликта
  175. {
  176. if (vgrid[a, yblank[blankcount]] == n)
  177. { available[blankcount] = false; }
  178. if (vgrid[xblank[blankcount], a] == n)
  179. { available[blankcount] = false; }
  180. }
  181. }
  182. }
  183. for(int a = 1; a<=zeros; a++)//считаем колво возможных клеток
  184. {
  185. if((available[a]==true)&&(used[a]==false)) possibleblanks++;
  186. }
  187. if(possibleblanks==1)
  188. for(int a = 1; a<=9; a++)
  189. {
  190. if((available[a]==true)&&(used[a]==false))
  191. {
  192. vgrid[xblank[a], yblank[a]] = n;
  193. used[a] = true;
  194. }
  195. }
  196.  
  197.  
  198.  
  199. }
  200.  
  201. }
  202.  
  203.  
  204. }
  205.  
  206.  
  207.  
  208.  
  209. //заканчиваем редактирование
  210. change = 0;
  211. for (i = 0; i < 9; ++i) //проверяем массив на новизну
  212. for (j = 0; j < 9; ++j)
  213. {
  214. change = change + vgrid[i, j] - oldgrid[i, j];
  215. }
  216.  
  217. //} //конец редактирования
  218.  
  219.  
  220.  
  221. for (i = 0; i < 9; ++i) //запись массива в таблицу
  222. for (j = 0; j < 9; ++j)
  223. Grid.Rows[i].Cells[j].Value = vgrid[i, j];
  224.  
  225.  
  226. }
  227.  
  228. private void VertBtn_Click(object sender, EventArgs e)
  229. {
  230. var names = new List<string>();
  231. string[] lines = File.ReadAllLines(@"E:/table.txt", Encoding.Default);
  232. for (int i = 0; i < 9; i++)
  233. {
  234. string[] array = lines[i].Split(';');
  235. for (int n = 0; n < 9; n++)
  236. { Grid[n, i].Value = array[n]; }
  237. }
  238. }
  239.  
  240.  
  241. }
  242. }
  243.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cs(4,14): error CS0234: The type or namespace name `Data' does not exist in the namespace `System'. Are you missing `System.Data' assembly reference?
prog.cs(9,22): error CS0234: The type or namespace name `Forms' does not exist in the namespace `System.Windows'. Are you missing `System.Windows.Forms' assembly reference?
prog.cs(16,34): error CS0246: The type or namespace name `Form' could not be found. Are you missing an assembly reference?
prog.cs(36,68): error CS0246: The type or namespace name `DataGridViewCellEventArgs' could not be found. Are you missing an assembly reference?
Compilation failed: 4 error(s), 0 warnings
stdout
Standard output is empty