Пользователей: 0
Гостей: 256
Всего: 256

» Подробно
» Сегодня


Привет, Гость!

Ник


Пароль


Запомнить?




» Добавить в избранное

» Сделать стартовой

Главная
Форум
Обзор игры
Мир Зоны
Файлы
Галерея
Разное






Форумы > Специализированные > Hard & Soft > Программирование на C# (C Sharp)

Страница 5 из 9Первая«2345678 »Последняя
Быстрый переход:


 

Автор Сообщение
o_OKO
[1] Странник
Онлайн статус=0  Профиль    




Посты: 383
Откуда: Москва
Занятие: HTML, Photoshop
Возраст: 28

10-07-2010
28-03-2010 22:45 GMT3 часа #1210104   Split
Vitek5 Спасибо. Так если всё основное можно сделать с помощью панели инструментов, для чего сами коды нужны?
По поводу текста. Насколько я понял, это инструмент Label. В общем, ради эксперимента скопировал туда статью. Вышла такая проблема, что статья выходит за границы окна. Пытался изменить размеры, но они остаются такими же. Как в блокноте, пока не нажмёшь enter, строка будет идти и идти вправо. Как решить проблему?


Множество людей верит в Бога, но не много таких, которым верит Бог. (с)

Michael Jackson 1958-2009 He live in our hearts forever...
userbar
Vitek5
[1] Странник
Онлайн статус=0  Профиль    




Посты: 359
Откуда:
Занятие:
Возраст:

30-03-2010
28-03-2010 22:54 GMT3 часа #1210107   Split
erlik Страницу пробовал обновить?Сайт работает даже на том самодельном браузере.Вот только что проверил всё работает.

добавлено спустя 6 минут

o_OKO Коды нужны для выполнения самой функции.Я выложил недавно ссылку на браузер который сделал.Там к кнопке поиск привязан код как и к любому другому элементу.Вывод: в программе код очень важен.
Я только сегодня начал изучать Microsoft Visual.Помоему Basic легче чем C#,но учить я буду и то и другое.C серьёзным подходом.

Сообщение было успешно отредактировано Vitek5 (28-03-2010 22:54 GMT3 часа, назад)

В журнал добавлены 2 полезные статьи.
o_OKO
[1] Странник
Онлайн статус=0  Профиль    




Посты: 383
Откуда: Москва
Занятие: HTML, Photoshop
Возраст: 28

10-07-2010
29-03-2010 01:53 GMT3 часа #1210383   Split
Интересует, как сделать следующую вещь.
Я сделал фиксированное окно без возможности разворачивания, т.е. размеры окна никак изменить нельзя. Элементом Label я поместил внутрь большое количество текста (ну, по-людски говоря, статью). Эта статья занимает больше места, чем само окно. Как сделать полоску вертикальной прокрутки текста статьи?
(Всегда встречается подобная вещь в окне установки игр, в момент принятия лицензионного соглашения в окне много-много текста, который можно вниз прокручивать)


Множество людей верит в Бога, но не много таких, которым верит Бог. (с)

Michael Jackson 1958-2009 He live in our hearts forever...
userbar
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
29-03-2010 04:11 GMT3 часа #1210445   Split
o_OKO
Для вывода больших текстов используй другие компоненты - label это всего лишь текстовая метка - то есть допустим сделал ты компонент интерфейса и захотел его подписать сверху, чтобы понятно было что это - вот здесь метка и годится - а выравнивание текста она не поддерживает.
Для текстов используй TextBox, RichTexBox, ComboBox(скрытый бокс - разворачивается при нажатии - то есть можно его сделать в виде тонкой полоски - жмешь на нее - и появляется скрытый внутри текст - но это для специальных целей.) также TextBlock, Expander и т.д.
Они почти все (читай описание каждого) имеют встроенную полосу прокрутки - как вертикальную так и горизонтальную. И поддерживают выравнивание - свойство TextWrapping= "Wrap" , хотя RichTexBox автоматом выравнивает текст по границам бокса. Насчет TextBox не помню - автоматом или надо указывать свойство.
TextBlock сам не выравнивает - нужно указывать.

Правда оговорюсь - я пользуюсь компонентами из пространства имен Controls , а не Forms - они похожи и в них много чего одинакового, но есть и различия - тут кому что удобнее.
И например в проектах в WPF в которых я работаю в отличие от Forms нет панельки для перетаскивания - так что создавать компонент нужно вручную - это дает больше навыков чем когда ты просто перетаскиваешь компонент не создавая код.

Собственно полоса прокрутки есть и как отдельный элемент ScrollBar - но можно ли ее прикрутить в label не знаю - как то не пробовал.

Vitek5
У меня укозовские сайты вообще плохо грузятся.

Сообщение было успешно отредактировано erlik (29-03-2010 04:11 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
30-03-2010 14:22 GMT3 часа #1211591   Split
Гы-гы! Надыбал интересную замену if-else в случаях присваивания значений:

Условный оператор (?:)

Данный оператор возвращает одно из двух значений, в зависимости от условия. При этом код, при его использовании значительно короче, чем при использовании if-else.
Например:
Имеем две переменные:

bool b = true;
int n;


Назначим переменной n значение, в зависимости от значения b:
Типа, если b = true, то n = 1, иначе n = 0;

n = b ? 1 : 0;

Данный код можно расширять до неограниченных размеров. Например, присвоим значение строковой переменной s, в зависимости от значения переменной типа int:

int n = 0;

string s = n == 0 ? "ноль" : n == 1 ? "адын" : n == 2 ? "два" : "дофига";


Данный код, в зависимости от значения переменной n, будет присваивать соответствующие значения переменной s:

Если n == 0, то s = "ноль";
Если n == 1, то s = "адын";
Если n == 2, то s = "два";
Иначе s = "дофига";

Прикольно. Может для когото это совершенно не новость, но для меня это просто отличная новость, упрощающая многие действия. Ещё много чего надыбал. Но это пожалуй пока самое интересное. Продолжаем изучение языка (не библиотеки Framework), а именно самого языка C#.

Сообщение было успешно отредактировано singapur22 (30-03-2010 14:22 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
01-04-2010 22:53 GMT3 часа #1214655   Split
singapur22
Оператор интересный - только мне пока привычнее if else использовать - не так абстрактно выглядит.
да и код куда читабельнее (хотя бы чисто для себя).

бесконечный цикл в Си шарпе
for (; ; )

цикл без тела

int i ;
int sum =0;
for(i = 1; i <= 5; sum +=i++);


Console.WriteLine("Сумма равна " + sum);

инструкция continue для принудительного перехода на новую итерацию
for(int i = 0; i <= 100; i++)
{
if((i%2) != 0) continue; // Переход на следующую итерацию.
Console.WriteLine(i);
}

при обнаружении нечетного числа происходит преждевременный переход к следующей итерации, а метод WriteLine () не вызывается.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

01-04-2010 23:16 GMT3 часа #1214690   Split
singapur22
Цитата
Надыбал интересную замену if-else в случаях присваивания значений

Ага, удобная в некоторых случаях штука, применял как-то в макросах на Ссях когда краткость выражения была важнее читабельности.

Цитата
Продолжаем изучение языка (не библиотеки Framework), а именно самого языка C#.

Я за, если кто-то объяснит на пальцах и простых примерах работу абстрактных классов / интерфейсов / делегатов C# и их разницу между аналогами в C++ / Java. Давно нужно переходить на шарп, да все никак не хватает силы воли на многотомные мануалы.


singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
02-04-2010 01:05 GMT3 часа #1214765   Split
erlik
Цитата
инструкция continue для принудительного перехода на новую итерацию

Тоже прикольно. Возьму на заметку.

Cos Ну, здесь с нас мало чего можно выудить. Сами на базовом уровне изучения. Но по возможности будем выкладывать все свои достижения.

В настоящий момент могу описать, как работать с делегатами. Делегат, это такой тип, который содержит в себе ссылку на статический метод. При этом ссылку можно изменять динамически. Тоесть, при определённых условиях, делегату можно назначать тот, или иной метод, который будет вызываться при вызове делегата. Например, создадим два класса и делегат. Первый класс "Form" будет являться основным. Из него будем производить вызов делегата. Второй класс "test" будет содержать в себе методы вызова делегатом и метод выполняющий переключения:

Код:
namespace WindowsFormsApplication1
{
//создаём делегат
    public delegate void Del();

//основной класс
    public partial class Form1 : Form
    {
     //создаём объект класса "test"
        test obj = new test();

        ...//методы инициализации формы

     //метод вызываемый при клике кнопки находящейся на форме
        private void button1_Click(object sender, EventArgs e)
        {
         //вызываем делегат
            obj.delegat();
         //производим переключение методов делегата
            obj.perekl();
        } 
    }

//класс методов делегата
    public class test
    {
     //создаём объект делегата
        public Del delegat;
     //ключ переключения методов
        public bool f = false;

     //конструктор класса "test"
     //производит первоначальный вызов переключателя
        public test()
        {
            perekl();
        }

     //первый метод делегата
     //обязательно статический
        public static void metodDelegata1()
        {
            Console.Beep(800, 200);
        }

     //второй метод делегата
        public static void metodDelegata2()
        {
            Console.Beep(400, 200);
        }

     //метод переключатель
     //при соответствующих значениях
     // переменной f
     //назначает делегату тот,
     //или иной метод
        public void perekl()
        {
            if (f)
            {
                delegat = metodDelegata1;
                f = !f;
            }
            else
            {
                delegat = metodDelegata2;
                f = !f;
            }
        }
    }
       
}


Результат будет таков, что при каждом клике кнопки, будут вызывать методы metodDelegata1 и metodDelegata2, по переменно.

Фактически, всё довольно просто. Главное понять, чем конкретно занимаются делегаты.

Сообщение было успешно отредактировано singapur22 (02-04-2010 01:05 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
02-04-2010 01:14 GMT3 часа #1214843   Split
А мне вот интересно - таким кодом я получается создал свой класс? (ну или какое то подобие его)
или что то другое?
Код:
class MyProcess
{

void ListProcesses()
        {
            Process[] AllPROCESSES = Process.GetProcesses();
         
           foreach (Process x in AllPROCESSES)
            {
            Console.WriteLine(@"Процесс:{0} ID:{1} Machine:{2} память:{3} title:{4} физ.память:{5}",
            x.ProcessName, x.Id, x.MachineName,
            x.PrivateMemorySize64 / 1024, x.MainWindowTitle, x.WorkingSet64 / 1024);
            }
           Console.ReadKey();
        }

        static void Main()
        {
            MyProcess myProcess = new MyProcess();

            //myProcess.Kill_Process();
            //myProcess.Autorun();
            myProcess.ListProcesses();

        }
    }
}


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
02-04-2010 01:16 GMT3 часа #1214846   Split
erlik Обычный класс, без каких либо конкретных назначений.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

02-04-2010 01:37 GMT3 часа #1214853   Split
singapur22
Ну в прицнипе как и предполагал - некое подобие указателя на функцию или метод.

Цитата
Главное понять, чем конкретно занимаются делегаты.

Судя по-всему как я понял, применительно к .NET применяются они в основном для реализации событий, закрывая в себе всеми любимые callback-функции коими завален WinAPI. Впринципе логично, да. Нужно будет применить куда-нибудь...

Цитата
инструкция continue для принудительного перехода на новую итерацию

Народ требует continue vs. break. Думаю из-за специфичности данных операторов рассматривать их можно и нужно вместе, как и if-else и for-while.


erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
02-04-2010 01:37 GMT3 часа #1214855   Split
singapur22
То бишь чтобы это превратить в нормальный класс нужно сделать чтобы у него были методы и возвращаемые значения?
Надо будет попробовать наконец с ООП поработать - а то пока в этом мало что соображаю...

Просто тот способ я использую для тестирования функций - очень удобно когда нужно запустить только одну из десятка функций в файле.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
02-04-2010 01:52 GMT3 часа #1214862   Split
Cos
Цитата
некое подобие указателя на функцию или метод.


В принципе да. НО! В C# существуют ещё анонимные методы, реализованные специально для делегатов.
Приведу пример. Создадим делегат:

public delegate void Del();

Далее, в любом из классов создаём объект делегата, с анонимным методом:

Del Delegat = delegate() { Console.Beep(); };

Где: { Console.Beep(); } --тело анонимного метода.
Через скобки delegate(), в тело анонимного метода можно передавать аргументы.

добавлено спустя 7 минут

erlik
Цитата
То бишь чтобы это превратить в нормальный класс нужно сделать чтобы у него были методы и возвращаемые значения?


Не обязательно. Класс может вообще не содержать методов, а только определённые данные. А может иметь все типы конструкторов кода. Да и что ты подразумеваешь под нормальным классом?

Сообщение было успешно отредактировано singapur22 (02-04-2010 01:52 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

02-04-2010 02:14 GMT3 часа #1214876   Split
erlik
Цитата
я получается создал свой класс?

Теоретически да, но прежде всего нужно обратить внимание на практический аспект создания MyProcess, пока это:
Цитата
способ я использую для тестирования функций

То есть будучи классом он все же неполноценен и является скорее надстройкой под Main, этаким дополнением. Не претендуя на лавры сотен написанных по этой теме книг, для меня ООП - прежде всего модульность и иерархия. Создавая класс представляющий уток, вполне логично если он будет зависеть от птиц, но не от класса зоопарка.

Цитата
в нормальный класс нужно сделать чтобы у него были методы и возвращаемые значения?

Методы - естественно, возвращаемые значения - по желанию, все ведь зависит от предназначения создаваемого класса. Далее опять таки в зависимости от желаемого функционала нормой будет добавление конструктора/деструктора.

Цитата
Надо будет попробовать наконец с ООП поработать - а то пока в этом мало что соображаю...

Черепаха ООП стоит на трех китах: инкапсуляция, наследование, полиморфизм. Естественно это предполагает некие базовые знания в манипуляции с классами, а в C# еще и аспектами связанными с самим .NET (ибо трудно представить что одно будет нужно без другого).

singapur22
Цитата
В C# существуют ещё анонимные методы

Вот это сложнее для моего мозга)), несомненно это что-то чудовищно полезное но думаю мне понадобится некоторое время на осмысливание природы а главное предназначения этого чуда.

Сообщение было успешно отредактировано Cos (02-04-2010 02:14 GMT3 часа, назад)

erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
02-04-2010 19:20 GMT3 часа #1215398   Split
singapur22
Цитата
Да и что ты подразумеваешь под нормальным классом?

Я только имел ввиду класс который будет выполнять какое то индивидуальное предназначение (как верно указал Cos ) - а не как у меня - для удобства теста

Типа такого например


Код:
class Calculator
{
   
public int Plus(int a, int b)
    {
     return a+b;

    }
    public int Minus(int a, int b)
    {
        return a-b;
    }

    public int Increase(int a, int b)
    {
        return a * b;
    }

    public int Partition(int a, int b)
    {
        return a/b;
    }

    public double Pow(int a, int b)
    {
        return Math.Pow(a,b);
    }

    public double Sqrt(int a)
    {
        return Math.Sqrt(a);
    }


    public void Test(ref int a)
    {
        a = a * a;
    }

    public int parts(double n, out double frac)
    {
        int whole;
        whole = (int)n;
        frac = n - whole; // Передаем дробную часть посредством параметра frac.
        return whole; // Возвращаем целую часть
    }


}

Cos
Цитата
Черепаха ООП стоит на трех китах: инкапсуляция, наследование, полиморфизм.

Знаю -знаю - только в это море где эти три кита плавают я пока не заходил. На практике пока не ничего применял (в lua как то без этого все обходилось).
Но ничего - и здесь разберемся.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Bertryger
[7] Выживший
Онлайн статус=0  Профиль    




Посты: 737
Откуда: Улан-Удэ
Занятие: Радиотехника,игры
Возраст: 32

22-12-2008
02-04-2010 21:46 GMT3 часа #1215573   Split
Народ! Тут возникла у меня проблема,только не по шарпу а по с++...
Нужно считать из файла строку и поменять местами слова разделённые союзом "и".А потом записать то что получилось в выходной файл...
Примерно так: "А и б сидели на трубе." а в выходной файл:"Б и а сидели..."
В принципе ясно чего делать, а написать не могу.
1.считать строку, а из неё символы до и после "и".
2.Потом загнать их в массив и развернуть.
3.Вбить получившийся массив в строку и записать в выход.файл.
Но никак не воткнусь чего написать надо


В раю лучше климат, в аду - компания.(Вальтер Скотт)
На пути к светлому будущему мешаются пробки из реалистичного настоящего.
Мечты похожи на радугу - только идиоты их преследуют!
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

03-04-2010 00:58 GMT3 часа #1215783   Split
Bertryger
Цитата
В принципе ясно чего делать, а написать не могу.

Главное в таком случае понять почему "не могется", из-за недостатка знаний о базовых классах строк:
Цитата
считать строку, а из неё символы до и после "и".

или работы с файлами:
Цитата
и записать в выход.файл.

Либо же это простое не умение / не желание пользоваться справкой. Во втором случае все решается довольно быстро:

http://www.cppreference.com/wiki/string/start
http://msdn.microsoft.com/en-us/library/cscc687y%28VS.80%29.aspx

В первом - медленнее, но решаемо, с помощью книг например. Ежели хочется быстрее - ждем основной каркас будущего приложения, а уж с заполнением коллективно поможем.


singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
03-04-2010 16:18 GMT3 часа #1216127   Split
И снова, про нормальные (полноценные) классы. Ну что такое полноценный класс? Понимать это понятие можно по разному. По сути, даже простой класс производящий обычный вывод информации на экран можно причислить к полноценным классам. Так как он отвечает за конкретные(собственные) действия. Как и класс содержащий список конкретных данных, который содержит конкретную информацию на конкретную тему.
Но если поразмышлять и по анализировать хоть немного, можно прийти к выводу, что полноценных классов вообще не может быть. Другое дело, если речь идёт не про одиночный класс, а про некую классовую систему. Наиболее полноценные классовые системы строятся по принципу (базовый класс => дочерний (унаследованный) класс => ...). При этом базовый класс может быть как конструктивным, так и абстрактным. Во втором случае базовый класс не может содержать конструктора, так как является базовым классом только для унаследования (Cos --это будет ответом на твой вопрос про абстрактные классы). Думаю объяснять как производится унаследование не нужно. Если проанализировать Framework, то не сложно понять, что весь пакет состоит из унаследованных классов, где базовым классом основного списка унаследованных классов, является класс Object. Можно привести такой пример. Имеется список унаследавания классов по теме RayHit. Это тема отвечает за хит позиции на экране по отображаемым элементам находящихся под данной координатой. Приведём сам список:

System.Object
System.Windows.Media.HitTestResult
System.Windows.Media.Media3D.RayHitTestResult
System.Windows.Media.Media3D.RayMeshGeometry3DHitTestResult


Как видно из списка, базовым классом здесь является ранее упомянутый класс Object.
Каждый последующий класс в списке является дочерним классом предыдущего от него класса.
При этом каждый класс отвечает за собственные действия. Объединяет их только тема, за которую они отвечают.
Итак, приведём краткие описания классов:

System.Object -- базовый класс

System.Windows.Media.HitTestResult --класс отвечающий за хит в 2D Viewer (унаследован от System.Object)

System.Windows.Media.Media3D.RayHitTestResult --класс отвечающий за хит в 3D Viewer(унаследован от System.Windows.Media.HitTestResult)

System.Windows.Media.Media3D.RayMeshGeometry3DHitTestResult --класс отвечающий за хит в 3D отображении и возвращающий достаточно большой список данных хита, в плоть до всех данных ближайшего вертекса меши от точки хита. (унаследован от System.Windows.Media.Media3D.RayHitTestResult)

При всём этом, все эти классы являются пустым набором символов без классов от которых они наследуются. Тоесть хоть они и отвечают за конкретные решения, но без друг друга в сторону материнства они абсолютно бесполезны.

Вот вам и тема нормальных (полноценных) классов.

Сообщение было успешно отредактировано singapur22 (03-04-2010 16:18 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
03-04-2010 17:04 GMT3 часа #1216184   Split
Bertryger
Решение твоей проблемы.
Наверно не самое оптимальное но какое уж получилось. Запись в файл - твоя забота.
Если между словами в строке будет два пробела - то код не работает.
Код:
class Replicant
{
    public string[] mass;
    public string word1;
    public string word2;
    public int index;
   
    public void Rep()
    {
        mass[index + 1] = word1;
        mass[index - 1] = word2;
    }

    public string Split(string str)
    {
        mass = str.Split(' ', ','); //разделители  пробел и запятая.

        for (int i = 0; i < mass.Length; i++)
        {
            if (mass[i] == "и")
            {
                index = i;
                word1 = mass[i - 1];
                word2 = mass[i + 1];
                Rep(); 
            }

        }
        str = string.Join(" ", mass);
        return str;
    }

    class Test
    {

        public static void Main()
        {
            Replicant rep = new Replicant();
            string str = rep.Split("А и Б сидели на трубе, шутили и смеялись, играли и пели");
            Console.WriteLine(str);
            Console.ReadKey();

        }
    }
}


singapur22
Конечно ты прав насчет классов - то что они могут быть очень разными. Тут никто не спорит.
Я так вообще пока молчу - так как в это особо не вдавался. Поэтому для меня нормальный класс это самописный класс, который имеет набор методов или свойств и возвращает значения, и цель его - упростить однотипные расчеты или действия.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
03-04-2010 17:19 GMT3 часа #1216192   Split
erlik Чтобы количество пробелов между словами не имело значения, в методе Split нужно указать соответствующий параметр:

string[] mass = str.Split(new char[] {' ', ','}, StringSplitOptions.RemoveEmptyEntries);

В данном случае пустые индексы будут игнорироваться.

Кстати, обрати внимание на то, как правильно указывается безымянный (анонимный) массив.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
03-04-2010 17:27 GMT3 часа #1216205   Split
singapur22
Точно. Я и забыл про эту опцию - вспоминал вспоминал как быть с множественными пробелами, да не вспомнил. Я эту опцию как то использовал - но только один раз - для того чтобы пустые строки в массив не писались.
насчет анонимного массива знаю - кстати в lua ведь тоже есть что то подобное - например анонимные (безымянные)функции.

добавлено спустя 2 минут

Кстати тут есть еще один недочет - знаки препинания исчезают. Что не гуд.

Сообщение было успешно отредактировано erlik (03-04-2010 17:27 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

03-04-2010 17:35 GMT3 часа #1216215   Split
singapur22
Цитата
это будет ответом на твой вопрос про абстрактные классы

Концепция та же что и в C++, боюсь я только одного - при переносе некоторых "домашних" проектов на C# возникнут грабли в некоторых функциональных / синтаксических аспектах, в каждый из которых придется долго и нудно вникать. Слава богу их немного - по сути пока есть только один абстрактный (C++) класс отвечающий за некий порт передачи информации с ПК, который потом наследуется собственными классами для работы с COM / LPT / USB портами, последние оформляются в dll библиотеку и по необходимости стыкуются с главным приложением (этакие плагины). Удобно для соединения внешних устр-в с разными интерфейсами к одному приложению.


singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
03-04-2010 17:53 GMT3 часа #1216217   Split
erlik Ну, в C# тоже есть анонимные методы (аналог функций в lua), я про них писал ранее. Только, если в lua, функция является типом переменной, то в C# метод является методом и ничего более. Единственный способ использования анонимных методов, это назначать их делегатам. Но, есть и один плюс в отличиях анонимных выражений от lua. Это лямбда-выражения. Лямбда-выражения, это анонимная функция, которая содержит выражения и операторы и может использоваться для создания делегатов или типов дерева выражений. Пожалуй они являются наиболее сложными конструкторскими решениями. В настоящий момент пытаюсь его изучить. Но даётся пониманию довольно тяжело.

добавлено спустя 6 минут

Cos Вот ссылка на мануал перехода на C#, для пользователей C++:

_http://msdn.microsoft.com/ru-ru/library/yyaad03b%28v=VS.90%29.aspx

Надеюсь она тебе поможет.

Сообщение было успешно отредактировано singapur22 (03-04-2010 17:53 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
06-04-2010 02:14 GMT3 часа #1218679   Split
singapur22
Как тебе такой код: (нужно подключить System.Linq)
Код:
string s = "Подсчитаем сколько в этом предложении букафф а";
       var coll = from c in s.ToCharArray()
                 where (c == 'а')
                 select c;
        int cn = coll.Count();
   
или в одну строку var cn = s.ToCharArray().Where(c => c == 'а').Count();


не похоже на Си шарп? Однако с версии 3.5 и в нем стали использоваться операторы запросов LINQ .
Однако работает такой код вроде медленнее, чем цикл for .
Кстати вот тебе и лямбда выражения c => c == 'а'

Код:
//выберем числа меньше 5 и отсортируем их в порядке убывания
        int[] m = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        IEnumerable<int> mass2 = m.OrderByDescending(z => z).SkipWhile(z => z >= 5);

        foreach (int x in mass2)
        {
            Console.WriteLine(x);
        }

        //находим слова с заданными последовательностями букв
        string[] msv = {"stalker", "STALKER", "superstalker", "metro", "gta", "call of duty", "metall gear solid", "megastalker", "stalkeromania"};
       
var res = from n in msv.Distinct()
                  where n.Contains("stalker")
                  select n;

       // или вот коротко
        var res2 = msv.Distinct().Where(c => c.Contains("stalker")).Select(c => c);

        foreach (string x in res2)
        {
            Console.WriteLine(x);
        }

Сообщение было успешно отредактировано erlik (06-04-2010 02:14 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

06-04-2010 02:01 GMT3 часа #1218903   Split
erlik
Цитата
не похоже на Си шарп? Однако с версии 3.5 и в нем стали использоваться операторы запросов LINQ .

И вправду не сразу распознаешь, форменный SQL какой-то.

singapur22
Цитата
_http://msdn.microsoft.com/ru-ru/library/yyaad03b%28v=VS.90%29.aspx
Надеюсь она тебе поможет.

Слона то я не приметил, спасибо, полезнейшая брошюрка.


singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
06-04-2010 19:46 GMT3 часа #1219351   Split
Cos
Цитата
И вправду не сразу распознаешь, форменный SQL какой-то.


Абсолютно в точку!!! Цитата из справки по Expression<TDelegate>:

Цитата
... Возможность использовать выражения как структуры данных включает для интерфейсов API получение кода пользователя в формате, который может быть проверен, преобразован и обработан особым образом. Например, реализация доступа к данным LINQ to SQL использует это средство для переводы деревьев выражения в инструкции Transact-SQL, которые могут быть оценены по базы данных. ...


Ещё какието (LINQ to ...) видел. А где, чёта не нашёл.

добавлено спустя 3 минут

erlik Я в курсе. Пришлось столкнуться при подробном изучении делегатов.

Сообщение было успешно отредактировано singapur22 (06-04-2010 19:46 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
06-04-2010 20:36 GMT3 часа #1219420   Split
singapur22
var удобная штука - можно тип переменной (особенно если это что то вроде IEnumerable<int> ) не определять заранее. Компилятор сам сделает. Запись короче выходит.
Я сейчас весь синтаксис этого linq ковыряю. Для работы с базами данных - наверняка незаменимая вещь.

кстати про анонимные методы написано что это раритет времен 2.0 - а вот лямбда выражения рулят.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
06-04-2010 22:26 GMT3 часа #1219518   Split
erlik
Цитата
кстати про анонимные методы написано что это раритет времен 2.0 - а вот лямбда выражения рулят.

Так то оно так. Только не нужно также забывать про одну особенность:

Цитата
Анонимные методы позволяют отказаться от использования списка параметров, а это значит, что анонимный метод может быть преобразован в делегаты с различными подписями. Это невозможно в ситуации с лямбда-выражениями.


Возможно в будущем данный недостаток исправят, и от анонимных методов можно будет отказаться полностью. А может уже реализовали в Framework 4.0. Не знаю. Мануал по четвёртой версии ещё пишется, и большая часть компонентов находится пока без полного описания.

добавлено спустя 3 минут

Кстати. Интересная особенность у компонента Random. Выясняется, что рандом в Framework является классом, а не методом. Конечно данная особенность значительно расширяет его возможности. Но его использование становится немного туговатым. Както не привычно

Сообщение было успешно отредактировано singapur22 (06-04-2010 22:26 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
07-04-2010 18:24 GMT3 часа #1220108   Split
erlik Кхм. Тут такое дело. При реализации идентификаторов объектов в своём проекте выяснилось достаточно много понятий из Сталкера. Например наше всеми любимое id объектов. Оказалось, что id это ничто иное, как индексы массива (я использовал класс List<T>), в который заносятся объекты для дальнейшего их использования. В сущности оно и понятно. Так оно и предполагалось. Но! Пожалуй ни для кого не секрет, что при удалении одного из объектов из массива (из таблицы List<T> в том числе) объекты находящиеся после удаляемого объекта смещаются к объектам находящимся перед удаляемым объектом. Соответственно, их индексы (id) меняются. Что не позволяет использовать длительное сохранение id во внешней переменной, для идентификации объектов. Это раз. Второе. XTreem на официальном форуме, мне както втирал, что id онлайн и оффлайн объектов могут различаться. В то время я это никак не мог понять. Оказалось, что онлайн и оффлайн объекты находятся в разных массивах, разных классов. Поэтому методы для них различны. И если объекты в оффлайн таблице сидят на всём протяжении существования объекта, то в онлайн таблице объекты периодически удаляются и загружаются по новой, что может привести к изменению их онлайн id. Именно по этому введён отдельный идентификатор sid, который имеет постоянное значение на всём протяжении существования объекта.
Вот както так.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Psychologist
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 1808
Откуда: Челябинск
Занятие: Стихоплётство, туризм :)
Возраст: 27

12-12-2010
07-04-2010 21:18 GMT3 часа #1220181   Split
singapur22; erlik
У меня вопрос.

Сложный ли это язык для усвоения? Могу ли я его нормально изучать с образованием шестого с половиной класса?
Просто думаю, может не lua изучать а Си шарп, да тут и люди есть хорошие, помогут если что.

Сообщение было успешно отредактировано Сталкер Монолита (07-04-2010 21:18 GMT3 часа, назад)

И все мы ждем чего-то. Работа - дом - работа ©


Форумы > Специализированные > Hard & Soft > Программирование на C# (C Sharp)

Страница 5 из 9Первая«2345678 »Последняя





???????@Mail.ru Rambler's Top100
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»