Есть 12 скобок. Подсчитать и напечатать все синтаксически верные варианты - C#

Узнай цену своей работы

Формулировка задачи:

пример синтаксически верного варианта: ()()()()()(),(((((()))))) пример синтаксически неверного варианта: )()()()()()(,))))))(((((( надо просчитать все варианты и выдать пользователю число верных/неверных вариантов вот что я написал
Листинг программы
  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. namespace DZ
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18. //0-открывающая 1-закрывающая
  19. string st = "";
  20. int x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12;
  21. int b;
  22. int y;
  23. int chislopar=0;
  24. int pr = 0,nepr=0;
  25. private void button1_Click(object sender, EventArgs e)
  26. {
  27. for (int i = 0; i < 2; i++)
  28. {
  29. x1 = i;
  30. for (int q = 0; q < 2; q++)
  31. {
  32. x2 = q;
  33. for (int w = 0; w < 2; w++)
  34. {
  35. x3 = w;
  36. for (int r = 0; r < 2; r++)
  37. {
  38. x4 = r;
  39. for (int t = 0; t < 2; t++)
  40. {
  41. x5 = t;
  42. for (int y = 0; y < 2; y++)
  43. {
  44. x6 = y;
  45. for (int u = 0; u < 2; u++)
  46. {
  47. x7 = u;
  48. for (int o = 0; o < 2; o++)
  49. {
  50. x8 = o;
  51. for (int p = 0; p < 2; p++)
  52. {
  53. x9 = p;
  54. for (int a = 0; a < 2; a++)
  55. {
  56. x10 = a;
  57. for (int s = 0; s < 2; s++)
  58. {
  59. x11 = s;
  60. for (int d = 0; d < 2; d++)
  61. {
  62. x12 = d;
  63. st=x1.ToString()+x2.ToString()+x3.ToString()+x4.ToString()+x5.ToString()+x6.ToString()+x7.ToString()+x8.ToString()+x9.ToString()+x10.ToString()+x11.ToString()+x12.ToString();
  64. string st1 = st;
  65. b++;
  66. for (int f = 0; f < st1.Length; f++)
  67. {
  68. if (st1[f] == '0'||f!=11)
  69. for (int f1 = f + 1; f1 < st1.Length; f1++)
  70. {
  71. if (st1[f1] == '1')
  72. {
  73. st1 = st1.Remove(f1, 1);
  74. st1 = st1.Remove(f, 1);
  75. y++;
  76. break;
  77. }
  78. }
  79. if (st1 == "")
  80. {
  81. break;
  82. }
  83. }
  84. if (y == 6)
  85. {
  86. int n=0;
  87. n++;
  88. textBox2.Text = n.ToString();
  89. //listBox1.Items.Add(st + ":синтаксически верно");
  90. }
  91. else
  92. {
  93. //listBox1.Items.Add(st + ":синтаксически неверно");
  94. }
  95. y = 0;
  96. }
  97. }
  98. }
  99. }
  100. }
я заменил скобки числами 0-'(' 1-')' и написал 12 циклов под каждую скобку потом брал открывающую скобку и искал ей закрывающую если находил то удалял их и добавлял переменной y единичку потом после проверке проверял y если он равен 6 тогда вариант правильный если нет неправильный программа перестает отвечать на около 000001111111

Решение задачи: «Есть 12 скобок. Подсчитать и напечатать все синтаксически верные варианты»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace NETExperiments
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             string source = "()()()()()(),(((((())))))";
  12.             int correctCounter = 0;
  13.             int incorrectCounter = 0;
  14.             Stack<char> brackets = new Stack<char>();
  15.  
  16.             foreach (char c in source)
  17.             {
  18.                 if (c == '(' || c == ')')
  19.                 {
  20.                     if (!brackets.Any() || brackets.Peek() == c || c == '(')
  21.                     {
  22.                         brackets.Push(c);
  23.                     }
  24.                     else
  25.                     {
  26.                         if (c == ')' && brackets.Peek() == '(')
  27.                         {
  28.                             correctCounter++;
  29.                             brackets.Pop();
  30.                         }
  31.                     }
  32.                 }
  33.             }
  34.  
  35.             incorrectCounter += brackets.Count;
  36.  
  37.             Console.WriteLine("Correct count  : " + correctCounter);
  38.             Console.WriteLine("Incorrect count: " + incorrectCounter);
  39.  
  40.             Console.ReadKey();
  41.         }
  42.     }
  43. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы