Advertisement
Guest User

Zadacha2

a guest
Jun 26th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.67 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace Zadacha2
  9. {
  10. class Program
  11. {
  12. public static string s;
  13. public static int pos = 0;
  14. public static char c;
  15. public static bool correct = true;
  16. public static char EOS = '\n';
  17.  
  18. public static void No()
  19. {
  20. Console.WriteLine("NO");
  21. // File.WriteAllText("OUTPUT.TXT", "NO");
  22. // correct = false;
  23. Environment.Exit(0);
  24. System.Diagnostics.Process.GetCurrentProcess().Kill();
  25.  
  26. }
  27.  
  28. public static void NextChar()
  29. {
  30. if (pos < s.Length)
  31. {
  32. c = s[pos];
  33. pos++;
  34. }
  35. else
  36. {
  37. c = EOS;
  38. }
  39.  
  40. }
  41.  
  42. public static void Number()
  43. {
  44. if (c == '1')
  45. {
  46. NextChar();
  47. if ('0' <= c && c <= '9')
  48. {
  49. NextChar();
  50. }
  51. else
  52. {
  53. No();
  54. }
  55. while ('0' <= c && c <= '9')
  56. {
  57. NextChar();
  58. }
  59. }
  60. else
  61. {
  62. if ('2' <= c && c <= '9')
  63. {
  64. NextChar();
  65. while ('0' <= c && c <= '9')
  66. {
  67. NextChar();
  68. }
  69. }
  70. else
  71. {
  72. No();
  73. }
  74. }
  75. }
  76.  
  77. public static string ElementWithIndex()
  78. {
  79. string element = "";
  80. if ('A' <= c && c <= 'Z')
  81. {
  82. element += c;
  83. NextChar();
  84. }
  85. else
  86. {
  87. No();
  88. }
  89. if ('a' <= c && c <= 'z')
  90. {
  91. element += c;
  92. NextChar();
  93. }
  94. if ('0' <= c && c <= '9')
  95. {
  96. Number();
  97. }
  98.  
  99. return element;
  100. }
  101.  
  102. public static void Formula()
  103. {
  104. string prev = ElementWithIndex();
  105. while (c != EOS)
  106. {
  107. string cur = ElementWithIndex();
  108. if (prev == cur)
  109. {
  110. No();
  111. }
  112.  
  113. prev = cur;
  114. }
  115.  
  116.  
  117. }
  118.  
  119. static void Main(string[] args)
  120. {
  121. char[] buffer = new char[1000 + 1];
  122. Console.WriteLine("Запись химической реакции всегда содержит описания нескольких веществ. \n" +
  123. "В свою очередь, описание одного химического вещества - строка, в которой входящие в него атомы химических элементов \nперечисляются в определенном порядке." +
  124. "При этом последовательности из двух и более одинаковых атомов, идущих подряд, \n" +
  125. "группируются: записывается сокращенное название химического элемента и количество одинаковых элементов подряд. \n" +
  126. "Обозначения химических элементов состоят из одной или двух английских букв, из которых первая - прописная, \nа вторая - строчная. " +
  127. "Необходимо проверить, является ли заданная последовательность подходящей под описание для \n" +
  128. "химической формулы выше");
  129. Console.WriteLine("Входные данные: В единственной строке записана непустая последовательность символов, содержащая только цифры и строчные и прописные английские буквы" +
  130. "Гарантируется, что в последовательности перед каждой строчной буквой идет прописная, \n"+
  131. "а все однобуквенные и двухбуквенные подстроки, начинающиеся с прописной буквы - правильные обозначения химических \nэлементов. "+
  132. "Длина последовательности от 1 до 1000 символов.Выходные данные: “YES” если формула корректна, \n“NO” если формула некорректна.");
  133. Console.WriteLine("Введите хим.формулу:");
  134. s = Console.ReadLine();
  135. //s = File.ReadAllText("INPUT.TXT");
  136. buffer = s.ToCharArray();
  137.  
  138.  
  139. pos = 0;
  140. NextChar();
  141. Formula();
  142. if (c != EOS)
  143. {
  144. No();
  145. }
  146. //if (correct == false) File.WriteAllText("OUTPUT.TXT", "NO");
  147. // else
  148. //File.WriteAllText("OUTPUT.TXT", "YES");
  149. Console.WriteLine("YES");
  150. // if (correct == false) Console.WriteLine("NO");
  151. //else Console.WriteLine("YES");
  152.  
  153.  
  154.  
  155.  
  156. }
  157. }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement