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

String Manipulator - Group 2

Здравейте, дава ми 90/100, а не мога да си открия грешката. Ако може малко помощ.

 

 

Create a program that executes changes over a string. First, you are going to receive the string, then commands.

You will be receiving commands until the "Done" command. There are six possible commands:

  • "Change {char} {replacement}"
    • Replace all occurences of {char} with {replacement}, then print the string.
  • "Includes {string}"
    • Check if the string includes with {string} and print "True/False".
  • "End {string}"
    • Check if the string ends with {string} and print "True/False".
  • "Uppercase"
    • Make the whole string uppercased, then print it.
  • "FindIndex {char}"
    • Find the first index of {char}, then print it.
  • "Cut {startIndex} {length}"
    • Remove all characters from the string except for those starting from {startIndex} and the next {length} characters, then print it.

Input

  • On the 1st line you are going to receive the string.
  • On the next lines, until the "Done" command is received, you will be receiving commands.
  • All commands are case sensitive.
  • The input will always be valid.

Output

  • Print the output of every command in the format described above.

 

 

Examples

Input

Output

//Th1s 1s my str1ng!//
Change 1 i
Includes string
End my
Uppercase
FindIndex I
Cut 5 5
Done

//This is my string!//

True

False

//THIS IS MY STRING!//

4

S IS

 

 

using System;

namespace String_Manipulator___Group_2
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = Console.ReadLine();
            string command = Console.ReadLine();

            while (command != "Done")
            {
                string[] token = command.Split();

                if (token[0] == "Change")
                {
                    text = text.Replace(token[1], token[2]);
                    Console.WriteLine(text);
                }
                else if (token[0] == "Includes")
                {
                    if (text.Contains(token[1]))
                    {
                        Console.WriteLine("True");
                    }
                    else
                    {
                        Console.WriteLine("False");
                    }
                }
                else if (token[0] == "End")
                {
                    int element = text.IndexOf(token[1]);
                    int lastIndex = text.Length - 1;

                    if (element == lastIndex)
                    {
                        Console.WriteLine("True");
                    }
                    else
                    {
                        Console.WriteLine("False");
                    }
                }
                else if (token[0] == "Uppercase")
                {
                    text = text.ToUpper();
                    Console.WriteLine(text);
                }
                else if (token[0] == "FindIndex")
                {
                    int index = text.IndexOf(token[1]);
                    Console.WriteLine(index);
                }
                else if (token[0] == "Cut")
                {
                    int startIndex = int.Parse(token[1]);
                    int length = int.Parse(token[2]);
                    text = text.Substring(startIndex, length);
                    Console.WriteLine(text);
                }

                command = Console.ReadLine();
            }
        }
    }
}

0
Programming Fundamentals
svephoto avatar svephoto 288 Точки

Здравей, колега,

 

Проблемът е в това това, че (както виждаме в условието) при команда "Еnd" трябва да проверим дали стрингът завършва с частта след командата. При използването на променливите, които си направил (int element и int lastIndex) не можем да получим желания резултат, защото те връщат интеджер стойности (10 - индексът, на който само започва частта след командата и 21 - последният индекс от стринга). Затова после сравнението в if-проверката не сработва коректно, понеже на нас ни трябва да проверим дали стрингът завършва с точно същата (стринг) част, която ни е дадена след командата. Опитай да направиш така и виж дали ще ти даде максималния брой точки:

 

                else if (token[0] == "End")
                {
                    string finalPart = token[1]; // Присвояваме стринга, с който ще сравняваме в стринг променлива.
                    if (text.EndsWith(finalPart)) // Ползваме вградения метод EndsWith, който ни върши работа точно за целта.
                    {
                        Console.WriteLine("True");
                    }
                    else
                    {
                        Console.WriteLine("False");
                    }
                }

 

Успех!

0
12/11/2019 00:19:10
Val3ntinV avatar Val3ntinV 21 Точки

Не става ..направих това , което казваш , но пак е 90/100т.

0
svephoto avatar svephoto 288 Точки

Трябва да стане, при мен минава със 100/100. Ако искаш, дай линк към код да го видя.

0
Val3ntinV avatar Val3ntinV 21 Точки

Ето кода....   https://pastebin.com/vgkL8D16

Всъщност задачата String manipulator-Group 1 я реших 100/100 , те са почти едно към едно спрямо условие, но специално за тези не знам къде бъркам , предполагам е нещо малко от недоглеждане..

 

0