Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 1 / 1
Регистрация: 14.11.2021
Сообщений: 7

Какой алгоритм должен быть: вычисляю значение из строки со скобками

14.11.2021, 21:56. Показов 524. Ответов 2

Студворк — интернет-сервис помощи студентам
Работает если выражение без скобок.
Дайте мысль по алгоритму

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function culc(s: string) : integer;
var ch: string;
    i, n, n1, code: integer;
    flag1, flag2: boolean; // сигнал к изменению числа
    otv: integer; // записывать ответ
begin
for i := 1 to length(s) + 1 do   // последний виток цикла обработка последнего числа
begin
  if ((s[i] >= '0') and (s[i] <= '9')) then
    ch := ch + s[i]
  else
  begin
    val(ch, n, code);
    ch := '';
            // действие зависит от флага
    if flag1 then
    begin
      n := n * n1;
      flag1 := false;
    end;
    if flag2 then
    begin
      n := n * (-1);
      flag2 := false;
    end;
            // условия изменения флага
    if s[i] = '*' then
    begin
      flag1 := true;
      n1 := n; // сохранить число для операции умножения
    end
    else
    begin
      if  s[i] = '-' then
        flag2 := true;
      otv := otv + n;
    end;
  end;
end;
result := otv;
end;
 
var s: string;
begin
 
  s := '5*3+(90-10*(5-9))';
  write(culc(s));
  readln
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2021, 21:56
Ответы с готовыми решениями:

Какой алгоритм должен быть у формулы?
Здравствуйте! Пробую решать задачи по основам программирования и алгоритмизации по учебнику. На первой картинке задача, на второй моё...

подскажите, какой алгоритм действий должен быть, если
подскажите, какой алгоритм действий должен быть, если задана матрица линейного преобразования в базисе е1,е2, е3, причем они не указаны, и...

Какой должен быть алгоритм данного простейшего AJAX скрипта ?
Добрый день! Не знал в каком именно подфоруме создать топик, поскольку, в принципе, мой вопрос затрагивает, как PHP, так и JavaScript...

2
Заблокирован
15.11.2021, 13:37
Pascal
1
2
3
4
5
6
7
8
9
ПокаЕстьСкобки
begin
 '5*3+(90-10*(5-9))'
 нашли (5-9)->посчитали/заменили culc( '5-9');
 получили '5*3+(90-10*-4)'
 нашли (90-10*-4)->посчитали/заменили culc('90-10*-4');
 получили  '5*3+130' 
end;
culc( '5*3+130' );
0
2 / 1 / 1
Регистрация: 14.11.2021
Сообщений: 7
19.11.2021, 19:16  [ТС]
Готово:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
function culc(s: string): integer;
 
var n, n1, i, code, otv: integer;
    s1,ch,newstr: string;
    flag1, flag2, skobkaflag, skobkaend: boolean;
 
begin
  s := s + ' ';
  ch := '';
  flag1 := false;
  flag2 := false;
  skobkaflag :=false;
  skobkaend := false;
  otv := 0;
  newstr := '';
  for i := 1 to length(s) do  //подача строки
    begin                     //сначала проверить скобки, чтобы пустить запись строки в newstr
      if s[i]=')' then
      begin
        skobkaflag := false;
        skobkaend := true;
      end
      else
      if skobkaflag = true then
       newstr := newstr + s[i]
      else if ((s[i] >= '0') and (s[i] <= '9')) then
        ch := ch + s[i]
      else if s[i]='(' then
        skobkaflag := true
      else
        begin
          val(ch, n, code);
          ch := '';
          if skobkaend = true then    //если скобка зарылась, то работаем с содержимым
          begin
             skobkaend := false;
             n := culc(newstr);
          end;
          // действие зависит от флага
          if flag1 then
          begin
            n := n * n1;
            flag1 := false;
          end;
          if flag2 then
          begin
            n := n * (-1);
            flag2 := false;
          end;
          // условия изменения флага
          if s[i] = '*' then
          begin
            flag1 := true;
            n1 := n; // сохранить число для операции умножения
          end
          else
          begin
            if  s[i] = '-' then
              flag2 := true;
            otv := otv + n;
          end;
        end;
     end;
     culc := otv;
end;
 
var s: string;
begin
  s:= '5+(10-5)*3+(2*(2+3))';
  writeln(culc(s));
  readln
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2021, 19:16
Помогаю со студенческими работами здесь

Какой должен быть ТИЦ, чтобы быть на 1-2 странице поиска по распространенным ключевым словам
Google приводит на мой сайт примерно в 10 раз больше посетителей, чем Яндекс. Нарушаются все правила, согласно которым Яндекс контролирует...

Как определять какой метод должен быть статическим, а какой нет?
Quer::add_line_to_vec: недопустимый вызов нестатической функции-члена

Какой должен быть игровой системник?
Здравствуйте подскажите !!! Хочу взять Хороший игровой Системник что должно быть внутри?

Какой должен быть каталог ссылок
Взялся на днях... крутить интернет магазин (авто запчасти.) Посидел подумал, кое-что подправил в контенте..., установил каталог ссылок...

Какой формат должен быть у .htaccess?
Здравствуйте. С .htaccess я плотно ещё не соприкасался, поэтому возникли некоторые проблемы. Их я уже решил, но всё равно - остались...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru