1

Тема: Написати метод, вхідним параметром якого є рядок...

Допоможіть, Будь ласка! 3-й день голову ламаю...
Є завдання: Написати метод, вхідним параметром якого являється рядок. Метод повинен повернути кількість слів у рядку, у яких перший і останній символи співпадають (слова – групи символів, розділені пробілами або пробілом і початком (кінцем) рядка).
Ось моя версія, але у відповідь виводиться значення "а" (якщо поставити, что, наприклад, а =200, то в відповідь виведе 200). Підкажіть, як виправити ситуацію? Всім заздалегідь дякую за відповідь.

class Program
    {
        static void Main()
        {
            Console.WriteLine(Colvo("Asa фывф adsa asda sd"));
        }

        public static int Colvo(string Text)
        {
            int a = 0;
            char[] s = { ' ', ',', '.', '!', '-', '?', '+', '=', '(', ')' };
            string strLw = Text.ToLower();
            string[] mass1 = strLw.Split(s);
            for (int i = 0; i < mass1.Length; i++)
                if (mass1[i][0] == mass1[i][mass1[i].Length - 1])
                    return a++;
            return 0;
        }
    }

2

Re: Написати метод, вхідним параметром якого є рядок...

Мені здається, що наша допомога вам не потрібна, бо ви не розумієте навіть що робить ваш код, який ви нагуглили. Це не ваш код, бо ваше завдання

(слова – групи символів, розділені пробілами або пробілом і початком (кінцем) рядка).

і код

 char[] s = { ' ', ',', '.', '!', '-', '?', '+', '=', '(', ')' };

мають різне приначення.

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»

3

Re: Написати метод, вхідним параметром якого є рядок...

using System;
using System.Text;
using System.Text.RegularExpressions;

namespace Ex02
{
    class Program
    {
        public static void Main(string[] args)
        {
            string s = "However, when the regular expression pattern includes multiple\r\n"+
            "sets of capturing parentheses, the behavior of this method depends\r\n"+
            "on the version of the .NET Framework. In the .NET Framework\r\n" +
            "versions 1.0 and 1.1, if a match is not found within "+
            "the first set of capturing parentheses, captured text "+
            "from additional capturing parentheses is not included in the "+
            "returned array. In the .NET Framework version 2.0, all captured "+
            "text is also added to the returned array. For example, the following" +
            "code uses two sets of capturing parentheses to extract the elements of a"+ 
            "date, including the date delimiters, from a date string.";
            
string p = @" |\r\n| +\r\n|\, |\,\r\n";
            int countWord = ParseString(s,p);
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
        public static int ParseString(string s, string sPattern)
        {
            Regex regex = new Regex(sPattern,RegexOptions.CultureInvariant);
            string[] arrWords = regex.Split(s);
            //string[] arrWords = s.Split(new char[] {' ',' \n'});            
            int count = 0;
            foreach(string word in arrWords)
            {
                Console.WriteLine("{0}",word);
                if( (string.IsNullOrEmpty(word)) || (word.Length < 2) ) continue;
                
                if(word[0] == word[word.Length-1]) count++;
            }
            Console.WriteLine("All word count={0}.",arrWords.Length);
            Console.WriteLine("Count word with condition (word[0] == word[word.Length-1])={0}",count);
            return count;
        }
    }
}
Подякували: Stormantonio1

4 Востаннє редагувалося olmovc (02.03.2015 13:29:47)

Re: Написати метод, вхідним параметром якого є рядок...

помилка в рядкові

return a++;

мабуть там потрібно просто

a++;

+ потрібно передбачити коли слова розділятимуть декілька пробілів, або пробіл і закінчення строки(\n,\r\n) і т.д.

class Program
    {
        static void Main()  {
            Console.WriteLine(Colvo("Asa фывф adsa asda sd"));
        }

        public static int Colvo(string text)
        {
            int count = 0;
            char[] s = { ' ',' \r\n',' \n', ',', '.', '!', '-', '?', '+', '=', '(', ')' };
            string strLower = text.ToLower();
            string[] words = strLower.Split(s);
//  
            for (int i = 0; i < words.Length; i++)
                if (words[i][0] == words[i][words[i].Length - 1])
                    count++;
            return count;
        }
    }
Подякували: Stormantonio1

5

Re: Написати метод, вхідним параметром якого є рядок...

Дякую Вам велике! Заплутався, ще тільки навчаюсь.