Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 9

Вычислить значение арифметического выражения.

24.03.2016, 19:57. Показов 3556. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность символов, имеющая следующий вид: p1q1p2q2p3...qnpn, где pi — цифра, а qi — знак арифметического действия из набора {+, –, *}. Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики. Гарантируется, что n ≤ 9.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2016, 19:57
Ответы с готовыми решениями:

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

Вычислить значение выражения
1. f(x,y)=12x+e^y-1; 2.f(x)=Знак системы x^2, если 0<= x <= 3; 4, если x>3 или x<0.

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

5
 Аватар для abit
868 / 527 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
24.03.2016, 23:14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
var
  s:string;
  p:array[1..9] of integer;
  q:array[1..8] of '*'..'-';
  n:byte;
  i:byte;
  o:boolean=true;
procedure roll(const i:byte);
var j:byte;
begin
   for j:=i+1 to high(p) do
   p[j]:=p[j+1];
   for j:=i to high(q) do
   q[j]:=q[j+1];
end;
 
begin
  s:='1*2-3*4+5*6-7';
  n:=(length(s)-1) div 2+1;
  for i:=0 to length(s) do
   if i mod 2 = 1 then p[i div 2+1]:=ord(s[i])-ord('0')
   else q[i div 2]:=s[i];
  writeln(s);
 
//Вырезаем умножения
  i:=1;
  while i<=n do
  begin
      o:=false;
      if q[i]='*' then
       begin
         p[i]:=p[i]*p[i+1];
         roll(i);
         o:=true;
       end;
       if o then begin dec(i); dec(n); end;
       inc(i);
  end;
 
//Операции + -
 
  i:=1;
  while i<=n do
  begin
      o:=false;
      if q[i]='+' then
       begin
         p[i]:=p[i]+p[i+1];
         roll(i);
         o:=true;
       end
       else if q[i]='-' then
       begin
         p[i]:=p[i]-p[i+1];
         roll(i);
         o:=true;
       end;
       if o then begin dec(i); dec(n); end;
       inc(i);
  end;
 
 
  writeln(p[1]);
  readln;
end.
0
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 9
27.03.2016, 12:18  [ТС]
abit, Тесты не проходит, всегда 0 показывает
0
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 9
28.03.2016, 20:38  [ТС]
Цитата Сообщение от abit Посмотреть сообщение
roll(i);
Что это?
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
28.03.2016, 20:50
Цитата Сообщение от Yakoe Посмотреть сообщение
Что это?
Процедура. В коде на 8-й строке описана
0
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 9
28.03.2016, 21:02  [ТС]
Hikari, А все, не заметил

Сам попробывал, получилась строка с + и -, как быть дальше?
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
var
  pq, p1, p2: string;
  m, n, k, l, j: integer;
begin
  writeln('Введите арифметическое выражение');
  readln(pq);
  while Pos('*', pq) > 0 do  
  begin
    p1 := '';
    k := Pos('*', pq);
    while (k > 1) and
    (pq[k - 1] in ['0'..'9']) do
    
    begin
      k := k - 1;
      p1 := pq[k] + p1
    end;
    p2 := '';
    l := Pos('*', pq);
    while (l < length(pq))
    and (pq[l + 1] in ['0'..'9']) do
    
    begin
      l := l + 1;
      p2 := p2 + pq[l]
    end;
    val(p1, n, j);
    val(p2, m, j);
    j := m * n;
    str(j, p1);
    delete(pq, k, l - k + 1);    
    insert(p1, pq, k)    
  end;
  write(pq);  
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2016, 21:02
Помогаю со студенческими работами здесь

Вычислить значение выражения
Тринадцатое пожалуйста! a=\begin{cases}0.1;\; 0.25;\; 0.32;\; 4.2;\; 10.1;\; 6.2} \end{cases} b=\begin{cases} 4.5;\; 6.1;\;...

Вычислить значение выражения
A_{j+1}=j^2(j-1)+A_{j-1},\ A_0=0,\ A_1=3,\ j=1,\,2,\,3,\,4,\,5 Подсказали, что через цикл надо.

Вычислить значение выражения
arctg(x) =x - x^3/3 + x^5/5 + x^7/7 + x^9/9...

Вычислить значение выражения
составьте пожалуйста программу с блок схемой c = {4.2; 1.2; 0.52; 4.6} S_j=\sum_{k=1}^4 \frac{1}{\left( c_k^2-2\right)+2j} ...

Вычислить значение выражения
Помогите пожалуйста 7) Вычислить: s=1+\frac{1}{a^2}+\frac{1}{a^4}+\frac{1}{a^6}+...+\frac{1}{a^{2n-2}} n и a - заданы.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru