Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 6

Найти значение выражения, записанного в строке

05.12.2019, 17:24. Показов 2334. Ответов 9

Студворк — интернет-сервис помощи студентам
Постановка задачи:
"Дана строка, в которой записано арифметическое выражение из целых чисел и знаков суммы и произведения. Найти значение этого выражения. Пример: вход 123+12*22*01+5*10, выход 437."
Пожалуйста ответ в стиле turbo pascal, если можно, то с комментариями или объяснением что к чему.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2019, 17:24
Ответы с готовыми решениями:

Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной форме
Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной форме. В выражении используются только...

Вычислить значение арифметического выражения в строке
Нужна помощь:Дан массив строк, в которых записаны арифметические выражения. Арифметическое выражение вводится в виде строки вида А ор В,...

Строки. Подсчитать результат выражения, записанного в строке
Задание 1 Строка – это правильное арифметическое выражение, содержащее только натуральные числа и знаки арифметических операций между...

9
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
05.12.2019, 19:29
Вычислить значение арифметического выражения в строке
0
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 6
05.12.2019, 21:39  [ТС]
PascalABS.NET выдает ошибку в программе из темы, что вы скинули. Строка 50. Нет перегруженной подпрограммы с такими типами параметров.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
06.12.2019, 05:47
nikitasA1NT, вот так гораздо проще:
Pascal
1
2
3
4
{$reference System.Data.dll}
begin
  WriteLn((New System.Data.DataTable()).Compute(ReadString,''));
end.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
06.12.2019, 08:52
Цитата Сообщение от nikitasA1NT Посмотреть сообщение
выдает ошибку
Исправьте в описании переменных
Pascal
1
 a, b, r: string[10];//первое, второе числа и результат
на
Pascal
1
 a, b, r: string;//первое, второе числа и результат
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 4
09.12.2019, 17:49
nikitasA1NT, Можешь рассказать как этот код работает?

Pascal
1
2
3
4
{$reference System.Data.dll}
begin
  WriteLn((New System.Data.DataTable()).Compute(ReadString,''));
end.
0
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 6
11.12.2019, 16:37  [ТС]
Цитата Сообщение от Youmine Посмотреть сообщение
Можешь рассказать как этот код работает?
Понятия не имею

Добавлено через 5 минут
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Вычислить значение арифметического выражения в строке
Это не совсем то, что мне нужно. Там в консоли вводить можно только с ОДНИМ действием. Мне же нужно, чтобы действий в строке было несколько

Добавлено через 59 секунд
Цитата Сообщение от JuriiMW Посмотреть сообщение
nikitasA1NT, вот так гораздо проще:
PascalВыделить код
1
2
3
4
{$reference System.Data.dll}
begin
  WriteLn((New System.Data.DataTable()).Compute(ReadStr ing,''));
end.
Такой код препод не примет)
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
11.12.2019, 16:45
nikitasA1NT, не правда ваша!
Там можно вводить хоть 1+2+3+4+5,
хоть 25.35*5+12*(125-254).
Результат будет выведен!!!

Добавлено через 3 минуты
Цитата Сообщение от nikitasA1NT Посмотреть сообщение
Такой код препод не примет)
Ну, дык, вопрос нужно формулировать с полной информацией!
А то у нас тут не у всех хрустальные шары… Ну и не у всех, у кого они в наличии, они в состоянии „ясно“… У кого-то они в состоянии „мутно“.

Добавлено через 1 минуту
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
begin
  var s := ReadLnString('Введите выражение:');
 
  var nums := New List<integer>;
  var op := New List<char>;
  var n := 0;
  foreach var c in s do
    case c of
      #48..#57 : n := n * 10 + StrToInt(c);
      '+', '-', '*' : begin nums.Add(n); n := 0; op.Add(c); end;
    else
      WriteLn('Встречен неожиданный символ «', c, '» в позиции ', Pos(c, s), '.', NewLine,
      'Работа прекращена.');
      Halt;
    end;
  if n > 0 then nums.Add(n);
 
  var opIndex := 0;
  repeat
    if op[opIndex] = '*' then
      begin
        nums[opIndex] := nums[opIndex] * nums[opIndex + 1];
        nums.RemoveAt(opIndex + 1);
        op.RemoveAt(opIndex);
      end
    else
      opIndex += 1;
  until opIndex = op.Count;
 
  repeat
    case op[0] of
      '+' : nums[0] := nums[0] + nums[1];
      '-' : nums[0] := nums[0] - nums[1];
    end;
    nums.RemoveAt(1);
    op.RemoveAt(0);
  until op.Count = 0;
 
  $'{s} = {nums[0]}'.Print;
end.
1
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 6
11.12.2019, 18:01  [ТС]
Цитата Сообщение от JuriiMW Посмотреть сообщение
не правда ваша!
Там можно вводить хоть 1+2+3+4+5,
хоть 25.35*5+12*(125-254).
Результат будет выведен!!!
Вот результат работы программы из темы, что скидывали выше:
Кликните здесь для просмотра всего текста
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
12.12.2019, 10:11
Цитата Сообщение от JuriiMW Посмотреть сообщение
nikitasA1NT, не правда ваша!
он про программу Пупорева по ссылке из пост #2
Цитата Сообщение от nikitasA1NT Посмотреть сообщение
Это не совсем то, что мне нужно. Там в консоли вводить можно только с ОДНИМ действием.
точно там же так и написано
Арифметическое выражение вводится в виде строки вида А ор В, где А и В-целые числа, а ор-знак арифметической операции:+,-,*,/
Программа написана для выражений типа 12*23 без пробелов, первый знак + или - игнорируется
можно вводить -25*3 или +32-69
nikitasA1NT, бери код JuriiMW из пост #8

вот только боюсь, что и этот код не понравится твоему преподавателю...
если ты не сможешь в неё разобраться и объяснить, конечно.

Добавлено через 2 минуты
Цитата Сообщение от JuriiMW Посмотреть сообщение
'+', '-', '*' :
минус можно выкинуть. у ТС в задании нет вычитания, только сумма и произведение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2019, 10:11
Помогаю со студенческими работами здесь

Вычислить значение выражения, записанного строкой.
Задана строка S, содержащая цифры и знаки «+» и «-». Вычислить значение данного выражения. За ранее спасибо!!!

Вывести значение выражения, записанного в виде строки
Помогите пожалуйста решить задачу.. &quot;Дана строка, изображающая арифметическое выражение вида &quot;цифра +,- цифра +,- ... +,-...

Вычислить значение выражения, записанного в постфиксной форме
Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной форме. Выражение вводится с клавиатуры...

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

Функция вычисляющая значение выражения, записанного в постфиксной форме в текстовом файле
Описать функцию value (postfix), которая вычисляет как целое число значение выражения (без переменных), записанного в постфиксной форме в...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru