PageRenderTime 50ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/1 sem/homework11/task1/hw11t1/main.cpp

https://github.com/SabinaIdrisova/Homeworks
C++ | 131 lines | 129 code | 2 blank | 0 comment | 35 complexity | f56a08410b6badfedc8e666b5d55fa51 MD5 | raw file
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <string.h>
  4. bool isDigit(char symbol)
  5. {
  6. return symbol >= '0' && symbol <= '9';
  7. }
  8. int main()
  9. {
  10. setlocale(LC_ALL, "Rus");
  11. char string[30];
  12. printf("Введите строку\n");
  13. scanf("%s", string);
  14. int state = 0;
  15. int i = 0;
  16. char symbol = string[i];
  17. while (i < strlen(string))
  18. {
  19. switch (state)
  20. {
  21. case 0:
  22. if (isDigit(symbol))
  23. {
  24. state = 1;
  25. i++;
  26. symbol = string[i];
  27. }
  28. else
  29. state = -1;
  30. break;
  31. case 1:
  32. if (isDigit(symbol))
  33. {
  34. state = 1;
  35. i++;
  36. symbol = string[i];
  37. }
  38. else
  39. if (symbol == '.')
  40. {
  41. state = 2;
  42. i++;
  43. symbol = string[i];
  44. }
  45. else
  46. if (symbol == 'E')
  47. {
  48. state = 4;
  49. i++;
  50. symbol = string[i];
  51. }
  52. else
  53. state = -1;
  54. break;
  55. case 2:
  56. if (isDigit(symbol))
  57. {
  58. state = 3;
  59. i++;
  60. symbol = string[i];
  61. }
  62. else
  63. state = -1;
  64. break;
  65. case 3:
  66. if (isDigit(symbol))
  67. {
  68. state = 3;
  69. i++;
  70. symbol = string[i];
  71. }
  72. else
  73. if (symbol == 'E')
  74. {
  75. state = 4;
  76. i++;
  77. symbol = string[i];
  78. }
  79. else
  80. state = -1;
  81. break;
  82. case 4:
  83. if (symbol == '+' || symbol == '-')
  84. {
  85. state = 5;
  86. i++;
  87. symbol = string[i];
  88. }
  89. else
  90. if (isDigit(symbol))
  91. {
  92. state = 6;
  93. i++;
  94. symbol = string[i];
  95. }
  96. else
  97. state = -1;
  98. break;
  99. case 5:
  100. if (isDigit(symbol))
  101. {
  102. state = 6;
  103. i++;
  104. symbol = string[i];
  105. }
  106. else
  107. state = -1;
  108. break;
  109. case 6:
  110. if (isDigit(symbol))
  111. {
  112. state = 6;
  113. i++;
  114. symbol = string[i];
  115. }
  116. else
  117. state = -1;
  118. break;
  119. case -1:
  120. printf("Нет\n");
  121. return 0;
  122. }
  123. }
  124. if (state == 1 || state == 3 || state == 6)
  125. printf("Да\n");
  126. if (state == 2 || state == 4 || state == 5)
  127. printf("Нет\n");
  128. return 0;
  129. }