Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 06:15   #1
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость Делегаты C#

Ребята, помогите пожалуйста с программкой!
Ошибок нет, но методы как я понимаю не выполняются.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


delegate void StrMod(ref string str);

class StringOps {
        
    public void ReplaceSpaces(ref string s) {
            Console.WriteLine("Замена пробелов дефисами");
            s=s.Replace(' ','-');
        }

    public void RemoveSpaces(ref string s) {
            string temp="";
            int i;

            Console.WriteLine("Удаление пробелов");
            for(i=0; i<s.Length; i++){
                if (s[i] != ' ') temp += s[i];

                s = temp;
            }
        }

    public void Reverse(ref string s) {
            string temp = "";
            int i;

            Console.WriteLine("Обращение строки");
            for(i=s.Length-1; i<1 ; i--)
                temp += s[i];

            s = temp;         
}
}


    class Program
    {
        static void Main(string[] args)
        {
            
            StringOps so = new StringOps();

            StrMod strOp;
            StrMod replaceSp =so.ReplaceSpaces;
            StrMod removeSp=so.RemoveSpaces;
            StrMod reverseSp = so.Reverse;
            string str="Это просто текст";

            strOp = replaceSp;
            strOp += reverseSp;

            strOp(ref str);
            Console.WriteLine("Результирующая строка: " + str);
            Console.WriteLine();



        }
    }
sir.andrey вне форума Ответить с цитированием
Старый 21.09.2011, 06:23   #2
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
По умолчанию

Все разобрался в Reverse for условие не правильное

А вот удаление пробелов немного косякопорит!

При таком main:
Код:
static void Main(string[] args)
        {
            
            StringOps so = new StringOps();

            StrMod strOp;
            StrMod replaceSp =so.ReplaceSpaces;
            StrMod removeSp=so.RemoveSpaces;
            StrMod reverseSp = so.Reverse;
            string str="Это просто текст";

            strOp = replaceSp;
            strOp += reverseSp;

            strOp(ref str);
            Console.WriteLine("Результирующая строка: " + str);
            Console.WriteLine();

            strOp -= replaceSp;
            strOp += removeSp;
            str = "Это просто текст";

            strOp(ref str);
            Console.WriteLine("Результирующая строка: " + str);



        }
Обращение строки во второй раз происходит нормально, если красное убрать, то все выполнится!

Последний раз редактировалось sir.andrey; 21.09.2011 в 06:33.
sir.andrey вне форума Ответить с цитированием
Старый 21.09.2011, 07:46   #3
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость

Во второй раз, как результирующая строка выводится просто буква т
sir.andrey вне форума Ответить с цитированием
Старый 21.09.2011, 10:06   #4
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Удали скобки а то у тебя присвоение конечного результата в цикле идет, поэтому и не правильно.
Код:
            Console.WriteLine("Удаление пробелов");
            for(i=0; i<s.Length; i++){
                if (s[i] != ' ') temp += s[i];

                s = temp;
            }
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MinGW, Делегаты. Пепел Феникса Общие вопросы C/C++ 14 28.07.2011 19:42
Делегаты CaypoH Общие вопросы .NET 3 04.01.2011 05:43
События и делегаты в C# как они работают _PROGRAMM_ Общие вопросы .NET 11 04.02.2010 06:44
Делегаты в MSIL Андрей Стрелков Общие вопросы .NET 6 20.02.2009 19:17