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

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1024
от 15.03.2008, 02:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 480, Экспертов: 56
В номере:Вопросов: 3, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 126503: Уважаемые эксперты, очень нужно решение данной задачки:: *** Создать приложение для вычисления значения арифметического выражения, которое может включать в себя действительные числа, а также круглые скобки и следующие операции: +, -, *, /, ^ ...
Вопрос № 126518: Уважаемые эксперты! Помогите решить задачи! 1. Написать программу, которая проверяет, находится ли введённое с клавиатуры число в массиве. Массив должен вводиться во время работы программы. 2. Написать программу, которая выводит минимальный э...
Вопрос № 126567: Уважаемые эксперты просьба помочь с заданием: необходимо рассортировать в алфавитном порядке слова записанные через пробел (происходит чтение слов из одного файла, а запись в другом). Желательно всё организовать простым и наиболее коротким методом. З...

Вопрос № 126.503
Уважаемые эксперты, очень нужно решение данной задачки::
***
Создать приложение для вычисления значения арифметического выражения, которое может включать в себя действительные числа, а также круглые скобки и следующие операции: +, -, *, /, ^ (возведение в степень). Вычисления должны производиться с учетом скобок и приоритетов используемых операций. Предусмотреть корректную обработку возможных ошибок и информирование о них пользователя.
Отправлен: 09.03.2008, 11:07
Вопрос задал: Биюн Виктор Павлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Биюн Виктор Павлович!
Обычно такие задачи решают при помощи польской инверсной записи, в которую преобразуется введённое выражение. Выглядит это так:
((1 + 2) * 4) + 3
1 2 + 4 * 3 +
Преобразование происходит по определённому алгоритму:
1. Заводим вспомогательный стек.
1. Если текущая лексема (неделимая часть выражения) - число, кладём его в результирующий стек.
2. Если текущая лексема - оператор, переписываем в результирующий стек из вспомогательного лексемы с приоритетом большим или равным приоритету текущего оператора (они вынимаются в порядке стека, и из вспомогательного стека они удаляются), а текущий оператор кладём во вспомогательный стек.
3. Если текущая лексема - открывающая скобка, кладём её во вспомогательный стек.
4. Если текущая лексема - закрывающая скобка, переписываем в результирующий стек из вспомогательного все лексемы до открывающей скобки (сами скобки просто удаляются).
Главное её удобство в том, что вычислить полученное выражение можно с помощью одного прохода по стеку по следующему алгоритму:
1. Если текущая лексема - число, переходим на следующую.
2. Если текущая лексема - оператор, берём из стека нужное количество лексем (у Вас все операторы бинарные, т.е. нужно брать по две лексемы), вычисляем значение выражения, и подставляем его вместо оператора и его операндов.
В качестве примера реализации этого подхода, могу предложить написанный мной консольный калькулятор, однако его функционал гораздо шире, чем Вам требуется (описан в приложении), и вычисление он производит не с обычным типом действительных чисел, а с классом "бесконечных" действительных чисел, хранящихся в виде строк, впрочем, переделать программу при желании несложно (Вас будет интересовать класс CCalc, в h-файле есть комментарии к его методам, а работает он по вышеописанному алгоритму, плюс для проверки выражения используется конечный автомат).
Пример попроще, с полным кодом и подробнейшим описанием можно посмотреть здесь.
Удачи!

Приложение:

---------
Эта история - не для истории, понимаешь?

Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 09.03.2008, 14:32
Оценка за ответ: 5


Вопрос № 126.518
Уважаемые эксперты! Помогите решить задачи!
1. Написать программу, которая проверяет, находится ли введённое с клавиатуры число в массиве. Массив должен вводиться во время работы программы.
2. Написать программу, которая выводит минимальный элемент введённого с клавиатуры массива целых чисел. Для доступа к элементам массива используйте указатель.
3. Написать программу, которая вычисляет среднее арифметическое элементов массива без учёта минимального и максимального элементов массива. Для доступа к элементам массива используйте указатель на указатель.
4. Написать программу, которая объединяет два упорядоченных по возрастанию массива в один, так же упорядоченный массив.
Рекомендуемый вид экрана во время работы программы приведён ниже, данные, введённые пользователем, выделены полужирным шрифтом.
Введите в одной строке элементы первого массива,
{5 целых чисел} -> 1 3 5 7 9
введите в одной строке элементы второго массива,
{5 целых чисел} -> 2 4 6 8 10
Массив - результат 1 2 3 4 5 6 7 8 9 10
5. Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам.
P.S. У меня начальный уровень знаний! Только начал изучать C.
Отправлен: 09.03.2008, 12:23
Вопрос задал: Волошин Виталий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Волошин Виталий Алексеевич!
Вариант решения четырех задач смотрите в приложении.

Приложение:

Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 13.03.2008, 07:04
Оценка за ответ: 5


Вопрос № 126.567
Уважаемые эксперты просьба помочь с заданием: необходимо рассортировать в алфавитном порядке слова записанные через пробел (происходит чтение слов из одного файла, а запись в другом). Желательно всё организовать простым и наиболее коротким методом. Заранее спасибо.
Отправлен: 09.03.2008, 20:25
Вопрос задал: Kreng (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ross
Здравствуйте, Kreng!

В приложении самый простой (но далеко не самый рациональный) метод решения задачи с использованием стандартной библиотеки шаблонов.

Приложение:

---------
Доступно только то, что видимо (c) Б. Керниган

Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 10.03.2008, 20:13


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

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

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.3 от 12.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное