Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2008, 18:49   #1
Chidory
Пользователь
 
Аватар для Chidory
 
Регистрация: 15.06.2008
Сообщений: 10
По умолчанию Delphi,преобразование строки в выражение

Написать программу, позволяющую вычислять значение выражения, содержащего
указанные ниже операции и функции. Если выражение записано неверно, то сообщить
об этом.
Операции:tg, + ,()

в общем,я что то набросала,но работает только на сложение и то с однозначными числами,помогите плиз доработать тя бы некоторые моменты,напрмер что делать со скобками


procedure TForm1.Button2Click(Sender: TObject);
var s,s1:string; k,i,u,r,d,l,t,q:integer;
begin
s:=Edit1.Text;
k:=0;
l:=0;
s1:='';
while pos('tg',s)<>0 do
Begin
insert('#',s, pos('tg',s));
Delete(s,pos('tg',s),2);
End;

for i:=1 to length(s) do begin
if s[i]='(' then k:=k+1;
if s[i]=')' then l:=l+1; end;
if k<>l then showmessage('проверь скобки') else
for i:=1 to length(s) do
if s[i]='#' //and s[i+1]= '('
then begin
q:=i+1;
for q:=1 to length(s) do
while s[q]<>')' do
begin
u:=u+1;
s1:=s1+s[q];
r:=strtoint(s1);
t:=round(sin(r)/cos(r));
insert(inttostr(t),s,pos('#',s));
delete(s,pos('#',s),u+2);
end;end;
for i:=1 to length(s) do
if s[i]='+' then begin
d:=strtoint(s[i-1])+strtoint(s[i+1]);
label3.Caption:=inttostr(d);
end;
Chidory вне форума Ответить с цитированием
Старый 14.12.2008, 19:14   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,085
По умолчанию

Почитайте про обратную польскую нотацию. Тут на форуме этот вопрос так же не раз всплывал
pu4koff вне форума Ответить с цитированием
Старый 14.12.2008, 19:25   #3
Chidory
Пользователь
 
Аватар для Chidory
 
Регистрация: 15.06.2008
Сообщений: 10
По умолчанию

подскажите плиз,где именно смотреть
Chidory вне форума Ответить с цитированием
Старый 14.12.2008, 19:30   #4
Chidory
Пользователь
 
Аватар для Chidory
 
Регистрация: 15.06.2008
Сообщений: 10
По умолчанию

не,я конечно почитала про польскую нотацию,но видимо я совсем тупая,т к ни фига не врубилась(
Chidory вне форума Ответить с цитированием
Старый 14.12.2008, 20:01   #5
Chidory
Пользователь
 
Аватар для Chidory
 
Регистрация: 15.06.2008
Сообщений: 10
По умолчанию

обьясните,плиз,реализацию на сложении в скобках,дальше, думаю,сама разберусь
Chidory вне форума Ответить с цитированием
Старый 14.12.2008, 23:14   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,085
По умолчанию

http://ru.wikipedia.org/wiki/Обратная_польская_запись
Алгоритм коротко и понятно вроде описан. В итоге должна получиться строка, в которой операции стоят после операндов. скобок уже никаких не будет. небольшая проблемка может возникнуть только при унарных минусах, но и тут всё решаемо.
pu4koff вне форума Ответить с цитированием
Старый 15.12.2008, 12:00   #7
Chidory
Пользователь
 
Аватар для Chidory
 
Регистрация: 15.06.2008
Сообщений: 10
По умолчанию

а бех стека это никак не сделать?ну не понимаю я как это делать(((
Chidory вне форума Ответить с цитированием
Старый 15.12.2008, 12:05   #8
Chidory
Пользователь
 
Аватар для Chidory
 
Регистрация: 15.06.2008
Сообщений: 10
По умолчанию

точнее я понимаю что надо сделать,но не понимаю как это реализовать в Делфи
Chidory вне форума Ответить с цитированием
Старый 15.12.2008, 14:01   #9
LamkoPRO
Новичок
Джуниор
 
Аватар для LamkoPRO
 
Регистрация: 26.11.2008
Сообщений: 1
По умолчанию

Если хотите сделать грамотно, необходим минимум знаний по теории трансляторов(в яндексе поиск "транслятор"). Вещь интересная. А так советовать... пальцем в небо. Удачи!
Чудес не бывает, но иногда случается дерьмо. Bash
LamkoPRO вне форума Ответить с цитированием
Старый 15.12.2008, 16:25   #10
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

Может быть поможет. Лекция по польской записи.
Вложения
Тип файла: zip pol_zap.zip (23.0 Кб, 26 просмотров)
MalexG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовые файлы, преобразование строки(замена слов)) lusuj Помощь студентам 1 01.12.2008 16:58
Арифметика, выражение вводится строкой [Delphi] iFool Помощь студентам 3 21.10.2008 18:51
Преобразование строки(ASM) ManU Помощь студентам 4 11.06.2008 17:20
Преобразование строки во время kayman Общие вопросы Delphi 7 02.10.2007 15:41