Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

Консольный калькулятор   Найти похожие ветки 

 
Masher   (2007-11-05 07:44) [0]

Здравствуйте, подскажите, плз, как сделать консольный калькулятор в Delphi? Интересует реализация простых арифметических операций, примера найти не удалось, а у самой сложности.


 
Юрий Зотов ©   (2007-11-05 07:48) [1]

Вариант 1.
Найти готовый строчный калькулятор, в Сети их полно.

Вариант 2.
Изучить теорию синтаксического анализа и написать самостоятельно. Задавая здесь конкретные вопросы, а не вопросы типа "как написать программу".


 
Anatoly Podgoretsky ©   (2007-11-05 08:42) [2]

> Юрий Зотов  (05.11.2007 07:48:01)  [1]

Ты помнишь чем вариант два кончился :-)


 
Kolan ©   (2007-11-05 10:59) [3]

> Вариант 2.


А че обязательно решать 2+2 на калькуляторе?

Вариант:
2
<Ввод>
+
<Ввод>
2
<Ввод>
=
<Ввод>

Ведь на порядок проще реализовать&#133


 
Zeqfreed ©   (2007-11-05 11:00) [4]

> Юрий Зотов ©   (05.11.07 07:48) [1]

Может там гораздо проще все? Без синтаксического анализа.


 
Anatoly Podgoretsky ©   (2007-11-05 11:19) [5]

А пусть сначала озвучит учебное задание и ТЗ


 
Юрий Зотов ©   (2007-11-05 11:44) [6]

> Anatoly Podgoretsky ©   (05.11.07 08:42) [2]

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


 
Efir   (2007-11-05 12:51) [7]

В нете на эту тему тонны информации. Поищи информацию на тему обратной польской записи и если разберёшся, то задачка будет решена за
> день и без глюков
.


 
Однокамушкин   (2007-11-05 12:59) [8]


> Efir   (05.11.07 12:51) [7]
>
> Поищи информацию на тему обратной польской записи

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


 
korneley ©   (2007-11-05 13:08) [9]


>на фига тут польская запись
>...
>  сложить два числа легче, чем заботиться об их размещении
> в стеке
А как учесть приоритет операций? Не говоря уж о скобках.


 
Однокамушкин   (2007-11-05 13:19) [10]


> korneley ©   (05.11.07 13:08) [9]
> А как учесть приоритет операций? Не говоря уж о скобках.

Дык их что при непосредственном вычислении, что при переводе в постфиксную запись по любому приходится учитывать... Это вот если пользователя заставить сразу вводить всё в постфиксной записи, тогда да, всё просто, но я бы на месте преподавателя такой калькулятор бы не принял


 
Юрий Зотов ©   (2007-11-05 13:48) [11]

> korneley ©   (05.11.07 13:08) [9]

> А как учесть приоритет операций? Не говоря уж о скобках.

Если БНФ расписаны грамотно, то приоритет и скобки учитываются автоматически.


 
TUser ©   (2007-11-05 16:04) [12]

Для простого калькулятора нужно только уметь переводить в обратную польскую. В полном объеме все эти грамматики и формы не требуются. Пишется за три часа.


 
Masher   (2007-11-06 03:15) [13]

Так всё-таки, что мне использовать? ОПЗ?


 
Германн ©   (2007-11-06 03:31) [14]


> Masher   (06.11.07 03:15) [13]
>
> Так всё-таки, что мне использовать? ОПЗ?
>

Кстати ОПЗ в любом случае полезно освоить.
А по сабжу, ответь сначала на
> Anatoly Podgoretsky ©   (05.11.07 11:19) [5]


 
Masher   (2007-11-06 09:23) [15]

Задание вот:
" Написать программу в Delphi «консольный калькулятор».
• «Калькулятор», должен вычислять основные арифметические операции.
• Операнды и операции вводятся в одной строке.
• Выход из «Калькулятора», по команде "exit".
• Для получения оценки «хорошо»:
o добавить в «калькулятор» тригонометрические функции (sin, cos);
o «калькулятор» должен корректно обрабатывать ошибки (н-р: ввод символов вместо цифр, лишние пробелы).
• Для получения оценки «отлично»:
o Выражение, которое необходимо вычислить, вводится в качестве параметра(ов) командной строки."
Мне совет дельный дайте, плз, как подступиться.


 
Ins ©   (2007-11-06 15:01) [16]


> Юрий Зотов ©
> Изучить теорию синтаксического анализа и написать самостоятельно.


На Королевстве была статья на эту тему, можно начать с нее:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=10


 
Сергей М. ©   (2007-11-06 15:04) [17]


> как подступиться.


Со стороны какой оценки ?)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.055 c
15-1193675346
ББС
2007-10-29 19:29
2007.12.02
Би-би-си: Боитесь ли вы усиления России? Письма со всего мира


15-1194017562
TUser
2007-11-02 18:32
2007.12.02
Посоветйте принтер


2-1194439289
novill
2007-11-07 15:41
2007.12.02
Как задать цвет выводимых символов в консольном приложении?


2-1194362965
Новичок
2007-11-06 18:29
2007.12.02
Передача данных из Парадокса в Интербейз


8-1170238744
Alek_1
2007-01-31 13:19
2007.12.02
делаем видео происходящего на экране





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский