Професионална програма
Loading...
+ Нов въпрос
kkaraivanov avatar kkaraivanov 439 Точки

Здравей. Имаш 4 команди според които извършваш действие. Аз я реших с един стек и една string променлива, като на 1 вмъквам в стек-а и присвоявам стойност на стринга, на 2 вмъквам в стека и присвоявам на стринга променливата на дадения индекс, на 3 принтирам знак от стринга, а на 4 вадя от стека. Ако все още ти е объркано за задачата, пиши да ти пратя линк с моето решение да го разгледаш.

0
Axiomatik avatar Axiomatik 543 Точки

The idea behind “Simple Text Editor” is to practise StringBuilder and Stack-collections skills. Commands 1-3 edit/print the content of your StringBuilder, while command 4 uses the Stack to return the StringBuilder to a previous state.

Code:

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace simpleTextEditor
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            Stack<string> textEditor = new Stack<string>();

            int n = int.Parse(Console.ReadLine());
            if (n < 1 && n > 105)
            {
                n = 0;
            }

            for (int i = 0; i < n; i++)
            {
                string[] cmdSplit = Console.ReadLine()
                    .Split(" ", StringSplitOptions.RemoveEmptyEntries);

                if (int.Parse(cmdSplit[0]) == 1))
                {
                    textEditor.Push(sb.ToString());
                    sb.Append(cmdSplit[1]);
                }
                else if (int.Parse(cmdSplit[0]) == 2)
                {
                    int count = int.Parse(cmdSplit[1]);
                    if (count > 0 && count <= sb.Length)
                    {
                        textEditor.Push(sb.ToString());
                        sb.Remove(sb.Length - count, count);
                        //or sb = text.Substring(0, text.Length - index)
                        //example: someText, index = 4: someText - Text
                    }
                }
                else if (int.Parse(cmdSplit[0]) == 3)
                {
                    int index = int.Parse(cmdSplit[1]);
                    if (index >= 0 && index <= sb.Length)
                    {
                        Console.WriteLine(sb[index - 1]);
                    }
                }
                else if (int.Parse(cmdSplit[0]) == 4)
                {
                    if (textEditor.Any())
                    {
                        sb.Clear();
                        sb.Append(textEditor.Pop());
                    }
                }
            }
        }
    }
}
 

0