0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 3
|
||||||
1 | ||||||
Вычислить пример, введенный в виде строки27.10.2015, 11:42. Показов 7639. Ответов 6
Метки нет (Все метки)
В общем, задача такая:
"Посчитать математическое выражение, которое задано текстовым рядом. Выражение может содержать целые положительные значения, бинарные операции со знаками сложения (+) и вычитания (-). Если пример невозможно посчитать, сообщить об ошибке." Если в предыдущих задачах, что нам давали, я мог понять алгоритм, а проблемы были с написанием, то в этой задаче сразу проблемы с составлением алгоритма. Вот пока все, что я смог написать:
1) Функция FalseSym отвечает за ошибку (правда не совсем понимаю, как учесть комбинации ++ и --); 2) Общий алгоритм приблизительно такой: IsDigit отвечает за то, число в строке или нет. Дальше TakeNumber должна взять число с заданной позиции, и скопировать его в новую строку, а Sum добавлять к счетчику и давать новую позицию. Только вот не понимаю, как заставить работать. Кто может, помогите разобраться. P.S. Честно признаюсь, в программировании я еще тупой. Очень.
0
|
27.10.2015, 11:42 | |
Ответы с готовыми решениями:
6
Вычислить пример введённый с клавиатуры Записать арифметический пример в виде строки в лист Пользователь в инпуте пишет пример на сложение, например, 5+2. Внизу в виде картинок с этими цифрами вывести пример Вывести введенный в поле ввода текст в виде картинки |
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 2
|
||||||||||||||||
27.10.2015, 13:09 | 2 | |||||||||||||||
Можно было бы сделать вот так, если бы входные данные были бы гарантированно корректными, а поток ввода оканчивался бы символом EOT (END OF TRANSMISSION 0x04).
0
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 3
|
|
27.10.2015, 14:33 [ТС] | 3 |
survived, Проблема в том, что мы с потоками не работаем. :/
По поводу текста, если не сложно, сделайте пояснение: В цикле с 30ой строки получается так: если i = 0 или i-тый символ + или -, то к сумме прибавляется... что?
0
|
252 / 128 / 54
Регистрация: 04.05.2013
Сообщений: 346
|
||||||
27.10.2015, 14:49 | 4 | |||||
Когда-то писал калькулятор с помощью книги Хортона "Visual C++. Полный курс". Кажись глава 6.
0
|
27.10.2015, 16:56 | 5 |
Grazio, варианта 2:
1) у вас нормальное задание на нормальный калькулятор. В выражении допустимы скобки. Тогда гуглите алгоритмы, их море, мне больше всего нравится двухстековая сортировочная станция Дейкстры. 2) у вас халтурное задание, из операций только + и - и скобок нет. Тогда просто считайте все числа в массив, учитывая знаки, и выдайте сумму массива.
0
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 2
|
||||||||||||||||
27.10.2015, 20:06 | 6 | |||||||||||||||
Какие потоки? Здеcь нет потоков.
Нужно понимать, как организованы массивы в плюсах. Когда вы, допустим, объявляете массив char'ов из 10 элементов, компьютер выделяет из оперативной памяти специально для вас 10 подряд идущих байт, а сама переменная с массивом есть указатель на первый его элемент. Когда вы запрашиваете из массива элемент с индексом 8, компилятор сдвигает указатель на 8 единиц и возвращает то, что лежит в этой ячейке памяти.
Таким образом, если мы создадим новую переменную типа char* и присвоим её значение к (buf + 8), это будет тот же массив buf, но без первых восьми элементов, т.е. мы отсекли от массива buf первые 8 элементов
0
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 3
|
||||||
28.10.2015, 00:39 [ТС] | 7 | |||||
В общем сегодня (не без помощи препода, за что спасибо ему) довел до ума программу, теперь она работает. Оставляю здесь алгоритм, мало ли, кому-нибудь пригодится. Тему можно закрывать. Спасибо всем, кто здесь отписался!
0
|
28.10.2015, 00:39 | |
28.10.2015, 00:39 | |
Помогаю со студенческими работами здесь
7
Вычислить выражение заданное в виде строки Как вычислить формулу, записанную в виде строки? Вычислить арифметическое выражение заданное в виде строки Вычислить значение выражения, заданного в виде строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |