Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Задание по программированию в Pascal. Строки (http://www.tehnari.ru/f43/t100100/)

Kot_Bayun 15.12.2014 20:11

Задание по программированию в Pascal. Строки
 
Проблема с написанием программы. Помогите, прошу, иначе лабы сдать не смогу и вылечу из ВУЗа:polet:

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

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

Выходные данные:
12

Vladimir_S 15.12.2014 22:14

Цитата:

Сообщение от Kot_Bayun (Сообщение 1088468)
Проблема с написанием программы. Помогите, прошу, иначе лабы сдать не смогу и вылечу из ВУЗа

Да ладно, живите:
Код:

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.



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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.