Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строки. Вычисление выражений 
:(
    Опции темы
Metalex
Дата 10.3.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Всем привет!
Помогите с задачкой на C#, пожалуйста!
Разработать анализатор: рядок, который вводится, интерпретируется программой, которая исполняет простейшие арифметические операции (/ * - +).  Например, при введении рядка «2  плюс  5» или «2 + 5», программа должна вернуть «7».
Огромное спасибо!!


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Fortnox
Дата 10.3.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Metalex, ряд именно из 2 операндов и оператора? Или например, 2 плюс 3 минус 1?
PM MAIL   Вверх
Metalex
Дата 10.3.2010, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Хм... даж не знаю. Думаю из двух, но если будет и больше, думаю это не помешает.  smile 


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Fortnox
Дата 11.3.2010, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Metalex, нашел такой вариант: http://roman.shapiro.su/en/codeSamples/calculator

Можно где-нибудь добавить замену словесных операндов:
Код

        private static string Format(string input)
        {
            input = input.Replace("плюс", "+");
            input = input.Replace("минус", "-");
            input = input.Replace("разделить", "/");
            input = input.Replace("умножить", "*");
            input = input.Trim(); // убираем пробелы
            return input;
        }


и потом полученную строку передать методу Calculate экземпляра класса Calculator.

Это сообщение отредактировал(а) Fortnox - 11.3.2010, 00:56
PM MAIL   Вверх
Metalex
Дата 15.3.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Чёт у меня ничего не получается.......


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Metalex
Дата 15.3.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Помогите, пожалуйста, разобратся, в чем дело!! Работает только "минус" и "-"... Все остальное считается неправильно..
Код

private void button1_Click(object sender, EventArgs e)
        {
            string input = textBox1.Text;
            const char cspace = ' ';

            // створюємо масив розділових символів 
            // і ініціалізуємо його двома елементами 
            char[] delimiters = {cspace};
            string h1="плюс", h2="+", h3="минус", h4="-", h5="разделить", h6="/", h7="умножить", h8="*";
            // виділяємо підстроки на основі роздільників 
            // і зберігаємо результат 
            string output="";
            foreach (string substring in input.Split(delimiters))
            {
                if ((substring == h1) || (substring == h2))
                {
                 //   input = input.Replace("плюс", "+");
                    output = Convert.ToString(Convert.ToInt16(input[0]) +
                        Convert.ToInt16(input[input.Length - 1]));
                }
                if ((substring == h3) || (substring == h4))
                {
                 //   input = input.Replace("минус", "-");
                    output = Convert.ToString(Convert.ToInt16(input[0]) -
                        Convert.ToInt16(input[input.Length - 1]));
                }
                if ((substring == h5) || (substring == h6))
                {
                 //   input = input.Replace("разделить", "/");
                    output = Convert.ToString(Convert.ToInt16(input[0]) /
                        Convert.ToInt16(input[input.Length - 1]));
                }
                if ((substring == h7) || (substring == h8))
                {
                 //   input = input.Replace("умножить", "*");
                    output = Convert.ToString(Convert.ToInt16(input[0]) *
                        Convert.ToInt16(input[input.Length - 1]));
                }
            } 
            textBox2.Text = output;
            input = input.Trim(); // убираем пробелы
        }



--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0856 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.