Обмен данными между классами - 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.Windows.Forms;
  9. namespace WindowsFormsApplication10
  10. {
  11. public partial class Form1 : Form
  12. {
  13. Tree tr;
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18. private void Form1_Load(object sender, EventArgs e)
  19. {
  20. Random rnd = new Random();
  21. for (int i = 0; i < 100; i++)
  22. {
  23. listBox1.Items.Add(rnd.Next(1, 1000));
  24. }
  25. }
  26. private void button1_Click(object sender, EventArgs e)
  27. {
  28. tr = new Tree(null, null, null);
  29. for (int i = 0; i < 100; i++)
  30. {
  31. tr.Insert(new Data(int.Parse(listBox1.Items[i].ToString()), ""));
  32. }
  33. }
  34.  
  35. private void button2_Click(object sender, EventArgs e)
  36. {
  37. tr.traverse(tr);
  38. }
  39.  
  40. }
  41. ////////////////////////
  42. class Data
  43. {
  44. public int k;
  45. public string v;
  46. public Data(int nk, string nv)
  47. {
  48. k = nk;
  49. v = nv;
  50. }
  51. }
  52. class Tree
  53. {
  54. public List<int> lst = new List<int>();
  55. Data data;
  56. Tree left;
  57. Tree right;
  58. public Tree(Data nd, Tree nl, Tree nr)
  59. {
  60. data = nd;
  61. left = nl;
  62. right = nr;
  63. }
  64. public void Insert(Data ndata)
  65. {
  66. if (this.data == null)
  67. {
  68. // MessageBox.Show("V " + ndata.k.ToString());
  69. this.data = ndata;
  70. }
  71. else
  72. {
  73. if (ndata.k < this.data.k)
  74. {
  75. if (left == null)
  76. {
  77. //MessageBox.Show("Пишу лево " + ndata.k.ToString());
  78. this.left = new Tree(ndata, null, null);
  79. }
  80. else
  81. {
  82. //MessageBox.Show("Перехожу лево " + ndata.k.ToString());
  83. left.Insert(ndata);
  84. }
  85. }
  86. else if (ndata.k >= this.data.k)
  87. {
  88. if (right == null)
  89. {
  90. // MessageBox.Show("Пишу право " + ndata.k.ToString());
  91. this.right = new Tree(ndata, null, null);
  92. }
  93. else
  94. {
  95. //MessageBox.Show("Перехожу право " + ndata.k.ToString());
  96. right.Insert(ndata);
  97. }
  98. }
  99. else
  100. throw new Exception("Узел уже существует");//no fuckin' way!
  101. }
  102. }
  103. public void traverse(Tree visitor)
  104. {
  105. if (left != null)
  106. {
  107. left.traverse(left);
  108. }
  109. MessageBox.Show(this.data.k.ToString());
  110. //данные this.data.k.ToString() надо добавить в листбокс в форме
  111. if (right != null)
  112. {
  113. right.traverse(right);
  114. }
  115. }
  116. }
  117. ////////////////////////////////
  118. }

Решение задачи: «Обмен данными между классами»

textual
Листинг программы
  1. using System;
  2.  
  3. public interface TreeVisitor<T> where T : IComparable<T>
  4. {
  5.     void Visit(Tree<T> node);
  6. }
  7.  
  8. public class KeyPrinter<T> : TreeVisitor<T> where T : IComparable<T>
  9. {
  10.     public void Visit(Tree<T> tree)
  11.     {
  12.         Console.Write("{0} ", tree.Key);
  13.     }
  14. }
  15.  
  16. public class Tree<T> where T: IComparable<T>
  17. {
  18.     public Tree(T key)
  19.     {
  20.         this.Key = key;
  21.     }
  22.  
  23.     public Tree<T> Left { get; set; }
  24.  
  25.     public Tree<T> Right { get; set; }
  26.  
  27.     public T Key { get; set; }
  28.  
  29.     public void Insert(Tree<T> tree)
  30.     {
  31.         if (tree.Key.CompareTo(this.Key) < 0)
  32.             if (Left != null)
  33.                 Left.Insert(tree);
  34.             else
  35.                 Left = tree;
  36.         else
  37.             if (Right != null)
  38.                 Right.Insert(tree);
  39.             else
  40.                 Right = tree;
  41.     }
  42.  
  43.     public void Traverse(TreeVisitor<T> visitor)
  44.     {
  45.         if (Left != null)
  46.             Left.Traverse(visitor);
  47.  
  48.         visitor.Visit(this);
  49.  
  50.         if (Right != null)
  51.             Right.Traverse(visitor);
  52.     }
  53. }
  54.  
  55.  
  56.  
  57. class Program
  58. {
  59.     static void Main(string[] args)
  60.     {
  61.         Tree<int> tree = new Tree<int>(7);
  62.         tree.Insert(new Tree<int>(5));
  63.         tree.Insert(new Tree<int>(9));
  64.         tree.Traverse(new KeyPrinter<int>());
  65.         Console.ReadKey(true);
  66.     }
  67. }

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


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

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

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

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

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

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