1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| PavelM |
18.03.2008 21:43
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Pavel Репутация: 0 |
Добрый день!
Подскажите пожайлуста как это оформить(решить задачку)? сама задача: Дана цепочка символов вида "число1+число2*число3". Вычислить числовое значение выражения и напечатать. цепочка вводится с клавиатуры (строка2+3*5), необходимо сначало определить 1-ю переменную, знак вычисления, 2-ю переменную, знак, 3-ю, и вычислить.на 2 числа вроде работает, а на 3 не хочет. заранее благодарен. |
![]() ![]() |
| Client |
18.03.2008 21:44
Сообщение
#2
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
а что пробовал? выкладывай код, поможем
|
| PavelM |
18.03.2008 21:47
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Pavel Репутация: 0 |
program raschet;
var str:string[50]; zs:string[4]; si:char; a1,a2,a3:real; i,is,p1,p2,p3:integer; begin writeln('введите строку с выражением'); readln(str); zs:='+-*/'; si:=' '; for i:=1 to 4 do if pos(zs[i],str)>0 then begin is:=pos(zs[i],str); si:=zs[i]; end; if si=' ' then writeln('неправильное выражение') else begin val(copy(str,1,is-1),a1,p1); val(copy(str,is+1,length(str)-is),a2,p2); {val(copy(str,is+1,length(str)-is),a3,p3);} end; writeln(a1); writeln(p1); writeln(a2); writeln(p2); end. |
| Client |
18.03.2008 21:54
Сообщение
#4
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Цитата Дана цепочка символов вида "число1+число2*число3" Если только сложение и умножение, то просто находишь позицию '+' и '*', переводишь в число и считаешь |
| PavelM |
18.03.2008 21:56
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Pavel Репутация: 0 |
а чтоб для всех операций, если кто нить введет не так как задумано?
|
| volvo |
18.03.2008 22:02
Сообщение
#6
|
|
Гость |
Цитата если кто нить введет не так как задумано? Он должен получить исчерпывающее сообщение о том, что можно вводить, а что нельзя... Или ты пишешь комбайн "все в одном"? Вроде бы заявлено "+" и "*", но раз ввели "минус" - то так и быть, посчитаем и его?... |
| klem4 |
18.03.2008 22:03
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата если Ну кроме операций еще много чего можно ввести, функции, скобки, константы ... Так что ты четко реши что тебе нужно реализовать и вперед. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
| Гость |
19.03.2008 5:08
Сообщение
#8
|
|
Гость |
Ок, только + и *
|
| PavelM |
19.03.2008 5:11
Сообщение
#9
|
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Pavel Репутация: 0 |
Да, + и * остальное не нужно
|
| Client |
19.03.2008 7:12
Сообщение
#10
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
uses crt;Так же можешь проверить если '+' находится после '*', то выдать сообщение об ошибке или writeln(a*b+c);но это уже как хочешь Сообщение отредактировано: Client - 19.03.2008 7:13 |
| PavelM |
19.03.2008 21:05
Сообщение
#11
|
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Pavel Репутация: 0 |
Спасибо огромное!!!
|
![]() ![]() |
|
Текстовая версия | 15.11.2025 12:59 |