Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 15.12.2014, 20:11   #1 (permalink)
Kot_Bayun
Новичок
 
Регистрация: 15.12.2014
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Задание по программированию в Pascal. Строки

Проблема с написанием программы. Помогите, прошу, иначе лабы сдать не смогу и вылечу из ВУЗаolet:" class="inlineimg" />

Задание:
Строка – это правильное арифметическое выражение, содержащее только натуральные числа и знаки арифметических операций между ними (+, -, *, /). Подсчитать результат, выполняя арифметические операции в порядке их приоритета.

Входные данные:
5*3-9/3

Выходные данные:
12
Kot_Bayun вне форума   Ответить с цитированием

Старый 15.12.2014, 20:11
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ранее созданные топики могут содержать нужные ответы

Задание: распечатать массивы в две строки, один под другим
Pascal. Скопировать все строки текстового файла
Строки, Pascal. Нужна помощь
Pascal помогите решить задание
Pascal ABC, записи, нужен вывод отсортированной строки
Pascal, строки

Старый 15.12.2014, 22:14   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Kot_Bayun Посмотреть сообщение
Проблема с написанием программы. Помогите, прошу, иначе лабы сдать не смогу и вылечу из ВУЗа
Да ладно, живите:
Код:
Var
 Q:Array[1..100] of Word;
 R:Array[1..100] of Real;
 T:Array[1..100] of Char;
 S,P:String;
 i,j,Code,N:Word;

Function Sign(W:Char):boolean;
begin
 Sign:=(W='*') or (W='/') or (W='+') or (W='-');
end;

Begin
 Writeln('Enter the string:');
 Readln(S);
 N:=0;
 i:=0;
 Repeat
  P:='';
  Repeat
   Inc(i);
   If Not Sign(S[i]) then P:=P+S[i];
  Until Sign(S[i]) or (i=Length(S));
  Inc(N);
  Val(P,Q[N],Code);
  if i<Length(S) then T[N]:=S[i];
 Until i=Length(S);

 for i:=1 to N do R[i]:=Q[i];

 Repeat
  i:=0;
  Repeat
   Inc(i);
  Until (T[i]='*') or (T[i]='/') or (i=N-1);
  if (T[i]='*') or (T[i]='/') then
   begin
    if T[i]='*' then R[i]:=R[i]*R[i+1] else R[i]:=R[i]/R[i+1];
    for j:=i+1 to N-1 do R[j]:=R[j+1];
    for j:=i to N-2 do T[j]:=T[j+1];
    Dec(N);
   end;
 Until i>N-1;

 Repeat
  i:=0;
  Repeat
   Inc(i);
  Until (T[i]='+') or (T[i]='-') or (i>=N-1);
  if (T[i]='+') or (T[i]='-') then
   begin
    if T[i]='+' then R[i]:=R[i]+R[i+1] else R[i]:=R[i]-R[i+1];
    for j:=i+1 to N-1 do R[j]:=R[j+1];
    for j:=i to N-2 do T[j]:=T[j+1];
    Dec(N);
   end;
 Until i>N-1;

 Writeln(R[1]:0:5);

 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:16.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.