Замена элементов строк из файла по условию встречи элементов в нем - C#

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

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

Ест файл txt, содержащий числовую последовательность (числа разделены двойным пробелом, возможна запись в несколько строк). Файл всегда начинается или с 100 или с 200. Может заканчиваться любым числом. Числа между 100 и 200 заменяются по первому правилу: 2 на "ромб", 3 на +, 12 на 56. Числа между 200 и 100 заменяются по второму правилу: 2 на "Круг", 3 на -, 12 на 65. Внутри последовательности от 100 до 200 может содержаться несколько 100 и наоборот. Суть в замене после 100 по определенному правилу, пока не появиться 200, что что является флагам для смены условий замены. Даже между 100 и 100 замена должна производиться. Результат записываем в файл. Есть похожая тема для одномерного массива: Замена элементов массива по условию встречи элементов в нем Но не смог перенести идею на строки.

Решение задачи: «Замена элементов строк из файла по условию встречи элементов в нем»

textual
Листинг программы
  1. static void Main(string[] args)
  2.         {
  3.  
  4.             var ruleset = new Dictionary<int, Dictionary<int, int>>
  5.             {
  6.                 [100] = new Dictionary<int, int>
  7.                 {
  8.                     [2] = 999,
  9.                     [3] = 9999,
  10.                     [12] = 56
  11.                 },
  12.                 [200] = new Dictionary<int, int>
  13.                 {
  14.                    [12] = 65
  15.                 }
  16.             };
  17.  
  18.             string file = File.ReadAllText("1.txt");
  19.             int[] arr = file.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(n => int.Parse(n)).ToArray();
  20.             int current = 0;
  21.  
  22.             for (int i = 0; i < arr.Length; i++)
  23.             {
  24.                 int num = arr[i];
  25.                 if (num == 100 || num == 200)
  26.                     current = num;
  27.                 else if (ruleset[current].TryGetValue(num, out num))
  28.                     arr[i] = num;
  29.  
  30.                 using (StreamWriter sw = File.CreateText("1.txt"))
  31.                 {
  32.                     sw.WriteLine(String.Join("  ", arr));
  33.                 }
  34.             }
  35.             File1(true);
  36.  
  37.          }
  38.             private static void File1(bool args)
  39.              {
  40.                  string str = string.Empty;
  41.                   using (System.IO.StreamReader reader = System.IO.File.OpenText("1.txt"))
  42.                   {
  43.                     str = reader.ReadToEnd();
  44.                   }
  45.                  str = str.Replace(" 2 ", "ромб ");
  46.                  str = str.Replace(" 3 ", "- ");
  47.                  str = str.Replace(" 999 ", "круг");
  48.                  str = str.Replace(" 9999 ", "+ ");
  49.  
  50.  
  51.                  using (System.IO.StreamWriter file = new System.IO.StreamWriter("1.txt"))
  52.                 {
  53.                     file.Write(str);
  54.                 }
  55.             }

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


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

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

11   голосов , оценка 3.818 из 5

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

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

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