Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Асмик Александровна
Статус: Академик
Рейтинг: 8321
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 2100
∙ повысить рейтинг »
Andrew Kovalchuk
Статус: Профессионал
Рейтинг: 755
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:213
Дата выхода:29.06.2011, 00:30
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:156 / 62
Вопросов / ответов:2 / 4

Вопрос № 183701: Здравствуйте! У меня возникли сложности с таким вопросом: Доработать программу: создать меню с командами Reverse, About, Exit. При выборе команды About открывается окно с информацией о разработчике. При выборе команды Reverse открывается диалог...


Вопрос № 183703: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: создать стек, который можно будет заполнять символами юникода. Функции push, pop реализовать самим. Программа есть, но опять же не доработанная. Стек заполняется первым с...

Вопрос № 183701:

Здравствуйте! У меня возникли сложности с таким вопросом:
Доработать программу: создать меню с командами Reverse, About, Exit.
При выборе команды About открывается окно с информацией о разработчике. При выборе команды Reverse открывается диалоговое окно, содержащее:
∙ поле ввода типа TextBox с меткой Input;
∙ группу из двух переключателей (Upper case, Reverse) типа CheckBox;
∙ кнопку OK типа Button.
Обеспечить возможность ввода фразы и выбора режима: перевод в верхний регистр и/или изменение порядка следования символов на обратный в зависимости от состояния переключателей. Результат преобразования выводится в исходное поле ввода.

Не знаю как работать с командой Reverse, и соответственно сделать переключатели и основную работу программы(перевод в верхний регистр и/или изменение порядка следования символов на обратный в зависимости от состояния переключателей).
Заранее большое спасибо!

Отправлен: 23.06.2011, 00:42
Вопрос задал: Yulesik (2-й класс)
Всего ответов: 2
Страница вопроса »


Отвечает PsySex (Профессионал) :
Здравствуйте, Yulesik!
К ответу прилагаю архив с готовым проектом.
Не забудьте отредактировать форму About. Прикрепленный файл: загрузить »

-----
Bom Shankar!

Ответ отправил: PsySex (Профессионал)
Ответ отправлен: 23.06.2011, 09:58
Номер ответа: 267817
Россия, Орёл

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267817 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Micren (Профессор) :
    Здравствуйте, Yulesik!
    Вот архив проекта:http://rfpro.ru/upload/6036
    Visual Studio 2010. Приложение WPF.
    Не забудьте в свойствах приложения отредактировать строковые параметры для окна About(ProgramString, CopyrightString).


    Пример работы:






    Ответ отправил: Micren (Профессор)
    Ответ отправлен: 23.06.2011, 18:49
    Номер ответа: 267824
    Украина, Краматорск

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267824 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Вопрос № 183703:

    Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
    создать стек, который можно будет заполнять символами юникода. Функции push, pop реализовать самим.
    Программа есть, но опять же не доработанная. Стек заполняется первым символом полностью. И всегда пишется что стек пустой.
    Очень рассчитываю на вашу помощь. Заранее спасибо.

    Отправлен: 23.06.2011, 15:50
    Вопрос задал: Yulesik (2-й класс)
    Всего ответов: 2
    Страница вопроса »


    Отвечает PsySex (Профессионал) :
    Здравствуйте, Yulesik!
    Исправил недочеты.
    Поскольку по заданию, пункт 1 предусматривает ввод элемента, то я сделал ввод только 1 символа, если же Все таки нужно, чтоб вводилась строка, а из нее помещались в стек все символы -напишите переделаю.

    Приложение:

    -----
    Bom Shankar!

    Ответ отправил: PsySex (Профессионал)
    Ответ отправлен: 23.06.2011, 16:59
    Номер ответа: 267822
    Россия, Орёл

    Оценка ответа: 5

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267822 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Micren (Профессор) :
    Здравствуйте, Yulesik!
    Программа. Тестировал в MS VS 2010.
    Код :
    using System;
    using System.Collections;
    
    namespace _183703
    {
        static class Program
        {
            // Варианты выбора пользователя
            private enum MenuChoice
            {
                Add,
                Show,
                Remove,
                Quit
            }
    
            // Наш стек
            private static readonly Stack<char> MyStack = new Stack<char>();
    
            static void Main(string[] args)
            {
                // Выбор пользователя
                MenuChoice choice;
                // Пока не выход
                while ((choice = Menu()) != MenuChoice.Quit)
                {
                    try
                    {
                        // Обработка действий меню
                        switch (choice)
                        {
                            case MenuChoice.Add:
                                TestAdd();
                                break;
                            case MenuChoice.Show:
                                TestShow();
                                break;
                            case MenuChoice.Remove:
                                TestRemove();
                                break;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.Beep();
                        Console.WriteLine(e.Message);
                        Console.ReadKey();
                    }
                }
            }
    
            // Удаление элемента
            private static void TestRemove()
            {
                Console.WriteLine(@"Удаление элемента: '{0}'", MyStack.Pop());
                Console.ReadKey();
            }
    
            // Показ стека
            private static void TestShow()
            {
                Console.WriteLine("Содержимое стека:");
                foreach (var ch in MyStack)
                {
                    Console.WriteLine(ch);
                }
                Console.ReadKey();
            }
    
            // Добавление элементов
            private static void TestAdd()
            {
                Console.Write("Введите символ или строку:");
                string str = Console.ReadLine();
                if (string.IsNullOrEmpty(str))
                {
                    Console.WriteLine("Нечего добавлять.");
                }
                else
                {
                    foreach (var ch in str)
                    {
                        MyStack.Push(ch);
                    }
    
                }
            }
    
            // Меню выбора пользователя
            private static MenuChoice Menu()
            {
                Console.Clear();
                while (true)
                {
                    Console.Write("1 - Добавление элемента\n2 - Просмотр стека\n3 - Удаление элемента\n0 - Выход\nВаш выбор:");
                    ConsoleKeyInfo info = Console.ReadKey();
                    Console.Clear();
                    switch (info.KeyChar)
                    {
                        case '0':
                            return MenuChoice.Quit;
                        case '1':
                            return MenuChoice.Add;
                        case '2':
                            return MenuChoice.Show;
                        case '3':
                            return MenuChoice.Remove;
                        default:
                            Console.Beep();
                            Console.WriteLine("Неверный ввод!\n");
                            break;
                    }
                }
            }
        }
    
        // Класс исключение. Генерируется при попытке извлечения из пустого стека
        public class StackEmptyException : Exception
        {
            public StackEmptyException()
                : base("Стек пуст!!!")
            {
    
            }
        }
    
        // Обобщенный стек
        public class Stack<T> : IEnumerable
        {
            // Начальная емкость
            private const int InitCapacity = 4;
            // Множитель для увеличения емкости
            private const int Multiplier = 2;
            // Количество элементов
            private int _count = 0;
            // Данные
            private T[] _data = null;
    
            // Конструктор
            public Stack()
            {
                Resize(InitCapacity);
            }
    
            // Заталкивает в стек
            public void Push(T value)
            {
                // Если стек заполнен
                if (_count == _data.Length)
                {
                    // Вычисляем новую длину
                    int newLength;
                    try
                    {
                        newLength = _data.Length * Multiplier;
                    }
                    catch (Exception)
                    {
                        newLength = int.MaxValue;
                    }
                    // Исменяем емкость
                    Resize(newLength);
                }
                // Добавление элемента
                _data[_count++] = value;
            }
    
            // Выталкивает из стека
            public T Pop()
            {
                // Если пуст
                if (_count == 0)
                {
                    throw new StackEmptyException();
                }
    
                T value = _data[--_count];
                _data[_count] = default(T);
                return value;
            }
    
            // Количество элементов
            public int Count
            {
                get
                {
                    return _count;
                }
            }
    
            // Если пуст
            public bool Empty
            {
                get
                {
                    return _count == 0;
                }
            }
    
            // Емкость
            public int Capacity
            {
                get
                {
                    return _data.Length;
                }
            }
    
            // Изменение размера
            protected void Resize(int newsize)
            {
                try
                {
                    if (_data != null)
                    {
                        Array.Resize<T>(ref _data, newsize);
                    }
                    else
                    {
                        _data = new T[newsize];
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            public IEnumerator GetEnumerator()
            {
                int index = _count;
                while (index-- > 0)
                {
                    yield return _data[index];
                }
            }
        }
    }
    

    Ответ отправил: Micren (Профессор)
    Ответ отправлен: 23.06.2011, 23:48
    Номер ответа: 267825
    Украина, Краматорск

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267825 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное