исправте пожалуйста - C#

  1. как сделать без создания масива


textual

Код к задаче: «исправте пожалуйста - C#»

 static string words;
 static string Splitters = ".,!?:; ";
 static void Main(string[] args)
        {
            Console.WriteLine("Пишите предложение");
            words = Console.ReadLine(); //читаем исследуемую строку
            int word_start = 0;
            int word_end = 0; //начало и конец слова между разделителями
            string word = "";
            for (int i = 0; i < words.Length; i++)
            {
                
                if (CheckChar(i) ) 
                {
                    word_end=i; //пока нет разделителей накручиваем слово
                }
                else //иначе, вынимаем слово и удаляем повторы
                {
                    
                    word_end = i;
                    word = words.Substring(word_start, word_end-word_start);
                    if (word != "")
                    {
                        RemoveWord(word,ref i);
                        word_start = i;
                        word_end = i;
                    }
                    
                }
            }
            Console.WriteLine("Результат: " + words);
        }
        //возвращает false если указаный символ является разделителем
        static bool CheckChar(int index) 
        {
            bool result = true;
            foreach(char ch in Splitters)
            {
                result &= ch != words[index];
            }
            return result;
        }
        //рекурсивно удаляет слова, пока не останется ни одного
        static void RemoveWord(string word,ref int start_index)
        {
            int remove_index = words.IndexOf(word, start_index);//нашли еще одно слово
            if (remove_index == -1) return; //не нашли, значит выходим из функции
            else  //если нашли, убираем его, и ищем еще раз
            {
                 //сдвигаем счетчик так как стрка укорачивается на слово
                words = words.Remove(remove_index, word.Length);
                RemoveWord(word,ref start_index);
                start_index -= word.Length;
            }
        }

СДЕЛАЙТЕ РЕПОСТ

9   голосов, оценка 4.333 из 5



Похожие ответы
  1. Уже третий раз пытаюсь сдать тест и окончательно сам себя запутал. Зеленым отмечены мои ответы. Судя по результатам почти треть неправильных (( Заранее премного благодарен! З.Ы. В прикрепленных один и тот же тест, просто в формате PDF и JPG.

  1. Подскажите, пожалуйста, как перевести программу из Pascal в C#Pascal1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 procedure AnalizeIdentifier(StrTmp : string); const   //Множество цифр.   Digits = ['0'..'9'];   //Множество разрешённых символов - те которые могут участвовать в записи идентификатора.   ResolvChars = ['_','a'..'z', 'A'..'Z'] + Digits;   var   i : Integer;   IsIdentifier : boolean;   //Флаг, показывающий является ли анализируемая строка идентификатором   begin   //Запускаем цикл последовательной обработки символов строки.   IsIdentifier := True;   for i := 1 to Length(StrTmp) do begin     if       //Текущий символ не принадлежит множеству разрешённых для индентификаторов символов.       not ( StrTmp[i] in ResolvChars )       //Либо текущий символ является первым символом строки и является цифрой.       or ( (i = 1) and (StrTmp[i] in Digits) )     then          begin           //Тогда данная строка не является идентификатором Pascal.             IsIdentifier := False;           //Выходим из цикла.            Break;          end         else          begin                       //Тогда данная строка не является идентификатором Pascal.                       IsIdentifier := False;                       //Выходим из цикла.                       Break;                     end;       end; end;

  1. Объясните пожалуйста назначение этих свойств вот в таком виде: { get; set; }

  1. Привет всем. сразу скажу код не мой, все работает просто я не могу его понять В пирципе я понимаю что код делает: После запуска консоли проверяется с каким аргументом консоль запустилась и открывается соответствующая форма. Program.cs

  1. Добрый день. Есть код, вернее часть программы, исполняется. Но хочу более точно разобраться. Объясните пожалуйста подробно. Интересует именно строка

  1. Pascal1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Var t,k,j,x,y:integer; * * n:longint; Begin * * write('Введите число N: ');readln(n); * * write('Введите цифру X: ');readln(x); * * write('Введите цифру Y: ');readln(y); * * k:=0;j:=0; * * While n<>0 do * * *Begin * * * t:=n mod 10; * * * if t=x then inc(k); * * * if t=y then inc(j); * * * n:=n div 10; * * *End; * * writeln('Цифра ',x,' встречается ',k,' раз'); * * writeln('Цифра ',y,' встречается ',j,' раз'); End.:

  1. Здравствуйте уважаемые форумчане! Я решил изучить C#, и вот начал с основ. Написал простую программу: "Вопрос-ответ". Но проблема в том что я прописал различные ответы на разные вопросы, но не могу их спокойно вводить... У меня программа сразу выскакивает при вводе первого значения. По моему я что то не правильно написал с ReadLine и ReadKey. Помогите пожалуйста:

  1. У меня есть класс ContactBook, в котором происходит добавление контактов (объектов класса Contact) в list и dictionary и поиск их. Здесь c - это объект Contact, который ищется в list. Объясните, пожалуйста, задание. Как добавить метод к лямбда-выражению?Задание: "Add "RemoveAll" method to the ContactBook class with an appropriate signature so that the project compiles. Implement the method: it should remove all contacts satisfying a condition, which is passed as a parameter". И вот такой код в Program (уже написан преподавателем):

  1. Доброго времени суток. Объясните пожалуйста как работает код и зачем мы то или иное действие делаем. Вот сама задача: Найти количество элементов массива A={a[i]}, являющихся сте-пенями двойки (1, 2, 4…). Утроить все элементы, являющиеся степенями двойки. Вот код:

  1. Добрый день, имеем пример кода: Кликните здесь для просмотра всего текста