Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 18.11.2012, 01:31   #1
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Калькулятор без свичей 9000

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

Где-то в этой ветке уже мелькал консольный калькулятор, я решил пойти дальше, представляю вашему вниманию "Калькулятор без свичей 9000".
Особенностью данной реализации является возможность добавления новых операций без глобальных изменений в коде, достаточно добавить оператор и делегат в коллекцию.
Код:
delegate double Calc(double val1, double val2);
private readonly Dictionary<string, Calc> act = new Dictionary<string, Calc>();
public Form1()
{
    InitializeComponent();
    act.Add("+", (val1, val2) => val1 + val2);
}
Теперь если вызвать
Код:
double result = act["+"](2, 2);
то в результате получим число 4, что бы можно было делить/умножать/вычитать нужно добавить соответствующие операторы в коллекцию
Код:
act.Add("*", (val1, val2) => val1 * val2);
act.Add("-", (val1, val2) => val1 - val2);
act.Add("/", (val1, val2) => val1 / val2);
Данный метод отлично заменяет конструкцию switch { case "+": ... }

Остальные примеры реализации в приложенном проекте, потрошите его на здоровье.
Вложения
Тип файла: zip iCalc.zip (54.3 Кб, 9 просмотров)
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 18.11.2012, 01:36   #2
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Калькулятор без свичей 9000

когда то реализовывал с помощью LEX & YACC
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AIM Version GUF RIP over 9000 Agentkrasnobai Общение и обсуждение, архив Point Blank 2 09.02.2012 13:19

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 14:07.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net