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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2013, 18:56   #1
Тамерлан Абилов
Пользователь
 
Регистрация: 03.03.2013
Сообщений: 70
По умолчанию калькулятор

Код:
var s,f,buf:string; m1,m2:byte;         
i,z,k1,k2:integer; sum:real=0;           x1,x2:real;
Begin
readln(s); z:=1;
repeat
m2:=pos(')',s);    m1:=0;
for i:=m2 downto 1 do            \\ находим самую близкую '('   от текущего m2
if s[i]='(' then begin m1:=i;  break; end;
 if m1<>0 then
  f:=copy(s,m1+1,m2-m1-1) else     \\ и тут вычисляем то что в скобках
  f:=s;
   if f[1]='-' then begin  delete(f,1,1); z:=-1;   end; \\проблема с первыми циферками  в моем случае  например.  -15+15
  val(f,x1,k1); sum:=sum+x1*z;                     
   repeat                        \\ процесс суммирование
     val(copy(f,k1+1,length(f)-k1),x2,k2);
      if f[k1]='+' then sum:=sum+x2;
        if f[k1]='-' then  sum:=sum-x2;
        if f[k1]='/' then sum:=sum/x2;
      if f[k1]='*' then  sum:=sum*x2;
      delete(f,1,k1);    k1:=k2;
    until k2=0;
 delete(s,m1,m2-m1+1);    \\удаляем  строку со скобками и вставляем туда готовую сумму.
  if m1<>0 then begin str(sum,buf); insert(buf,s,m1); sum:=0; end;
until m1=0;
 writeln('sum ',sum:0:4);
end.
подскажите этот алгоритм понятливый вообще?училка одобрить или каша?
Тамерлан Абилов вне форума Ответить с цитированием
Старый 04.09.2013, 19:44   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

а к этой каше училка давала условие?...
p.s. вангую что не одобрит...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 04.09.2013, 19:55   #3
Тамерлан Абилов
Пользователь
 
Регистрация: 03.03.2013
Сообщений: 70
По умолчанию

нет просто сказала что приоритет скобки.и сколько захочу столько и ввожу)а так не учитываю тут числа дробные при делении их я не считаю это норм)
да я тоже чувствую так(но как по другому норм может быть не понимаю)
Тамерлан Абилов вне форума Ответить с цитированием
Старый 04.09.2013, 22:01   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А тут случаем не нисходящий рекурсивный анализ?
Тоесть Вы пишите процедурку, железно работающую с числами без скобок..
Далее ищете скобки и прикручиваете к ним эту процедурку..
Poma][a вне форума Ответить с цитированием
Старый 04.09.2013, 22:41   #5
Тамерлан Абилов
Пользователь
 
Регистрация: 03.03.2013
Сообщений: 70
По умолчанию

понятия не имею что такое нисходящий рекурс анализ к сожалению)
но в каком та смысле да процедура с числами.а потом уже скобки и прикручиваю)
Тамерлан Абилов вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
калькулятор :-( Свежий Паскаль, Turbo Pascal, PascalABC.NET 1 11.05.2011 21:27
Калькулятор SPQR10000 Помощь студентам 11 25.02.2010 22:01
Калькулятор Иринка26 Помощь студентам 11 19.02.2010 17:05
Калькулятор на C++ stox11 Помощь студентам 2 09.02.2010 07:31
Калькулятор. Bilargo Общие вопросы Delphi 5 17.09.2009 17:33