Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 08:25   #1
Петр-99
 
Регистрация: 17.12.2010
Сообщений: 3
По умолчанию одномерный массив

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

А) выполнить действия по порядку;
Б)действия +,-,*,/ выполняются соответствию приоритету этих операций;
В) в записи может присутствовать одна пара или даже несколько пар круглых скобок, что меняет порядок выполнения операций.
Петр-99 вне форума Ответить с цитированием
Старый 17.12.2010, 13:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Даж не знаю что посоветовать... Задача не из легких, посмотри сюда, может поймешь смысл:http://www.programmersforum.ru/showthread.php?t=37560
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.12.2010, 21:04   #3
Петр-99
 
Регистрация: 17.12.2010
Сообщений: 3
По умолчанию

помоги дружище очень надо)))
Петр-99 вне форума Ответить с цитированием
Старый 17.12.2010, 21:06   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
function Calculate(SMyExpression: string; digits: Byte): string;
var
   z: Char;
   ipos: Integer;

   function StrToReal(chaine: string): Real;
   var
     r: Real;
     Pos: Integer;
   begin
     Val(chaine, r, Pos);
     if Pos > 0 then Val(Copy(chaine, 1, Pos - 1), r, Pos);
     Result := r;
   end;

   function RealToStr(inreal: Extended; digits: Byte): string;
   var
     S: string;
   begin
     Str(inreal:0 : 0, S);
     realToStr := S;   
   end;   

   procedure NextChar;   
   var  
     s: string;   
   begin
     if ipos > Length(SMyExpression) then  
     begin  
       z := #9;   
       Exit;
     end  
     else
     begin
       s := Copy(SMyExpression, ipos, 1);
       z := s[1];   
       Inc(ipos);   
     end;   
     if z = ' ' then nextchar;
   end;   

   function Expression: Real;
   var
     w: Real;

     function Factor: Real;
     var  
       ws: string;
     begin
       Nextchar;   
       if z in ['0'..'9'] then
       begin  
         ws := '';
         repeat  
           ws := ws + z;
           nextchar   
         until not (z in ['0'..'9', '.']);
         Factor := StrToReal(ws);
       end  
       else if z = '(' then  
       begin
         Factor := Expression;
         nextchar   
       end
       else if z = '+' then Factor := +Factor   
       else if Z = '-' then Factor := -Factor;   
     end;
    
     function Term: Real;
     var  
       W: Real;
     begin
       W := Factor;
       while Z in ['*', '/'] do  
         if z = '*' then w := w * Factor
       else
         w := w / Factor;
       Term := w;   
     end;
   begin  
     w := term;
     while z in ['+', '-'] do
       if z = '+' then w := w + term
     else  
       w := w - term;
     Expression := w;
   end;
begin
   ipos   := 1;
   Result := RealToStr(Expression, digits);
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 17.12.2010, 21:19   #5
Петр-99
 
Регистрация: 17.12.2010
Сообщений: 3
По умолчанию

спасибо,а ты сможешь полностью скинуть прогу с отчетом и сколька это будет стоит
Петр-99 вне форума Ответить с цитированием
Старый 17.12.2010, 21:23   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Стучи в аську/skype обсудим!
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 19.12.2010, 18:39   #7
Петр-99
 
Регистрация: 17.12.2010
Сообщений: 3
По умолчанию

кто может это сделать,и скинуть на мыло,
выручайте пацаны очень надо,а то на зачет не пустят

ну что либо никто не знает как это делать.....очень надо plees

help.... help...help,,,,

Последний раз редактировалось Stilet; 19.12.2010 в 20:16.
Петр-99 вне форума Ответить с цитированием
Старый 19.12.2010, 20:04   #8
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Петр-99 Посмотреть сообщение
ну что либо никто не знает как это делать.....очень надо plees
тебе же предложили помощь , что ты ему не написал ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 19.12.2010, 20:08   #9
Петр-99
 
Регистрация: 17.12.2010
Сообщений: 3
По умолчанию

function Calculate(SMyExpression: string; digits: Byte): string;
var
z: Char;
ipos: Integer;

function StrToReal(chaine: string): Real;
var
r: Real;
Pos: Integer;
begin
Val(chaine, r, Pos);
if Pos > 0 then Val(Copy(chaine, 1, Pos - 1), r, Pos);
Result := r;
end;

function RealToStr(inreal: Extended; digits: Byte): string;
var
S: string;
begin
Str(inreal:0 : 0, S);
realToStr := S;
end;

procedure NextChar;
var
s: string;
begin
if ipos > Length(SMyExpression) then
begin
z := #9;
Exit;
end
else
begin
s := Copy(SMyExpression, ipos, 1);
z := s[1];
Inc(ipos);
end;
if z = ' ' then nextchar;
end;

function Expression: Real;
var
w: Real;

function Factor: Real;
var
ws: string;
begin
Nextchar;
if z in ['0'..'9'] then
begin
ws := '';
repeat
ws := ws + z;
nextchar
until not (z in ['0'..'9', '.']);
Factor := StrToReal(ws);
end
else if z = '(' then
begin
Factor := Expression;
nextchar
end
else if z = '+' then Factor := +Factor
else if Z = '-' then Factor := -Factor;
end;

function Term: Real;
var
W: Real;
begin
W := Factor;
while Z in ['*', '/'] do
if z = '*' then w := w * Factor
else
w := w / Factor;
Term := w;
end;
begin
w := term;
while z in ['+', '-'] do
if z = '+' then w := w + term
else
w := w - term;
Expression := w;
end;
begin
ipos := 1;
Result := RealToStr(Expression, digits);
end;
а проверить вы можете
Петр-99 вне форума Ответить с цитированием
Старый 19.12.2010, 20:21   #10
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

А ты сам проверить не можешь ??? Или уже лень взять и запустить этот код на компе ?

Тот код , который ты выложил не будет работать , ты вообще связывался с тем , кто тебе обещал помочь ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---

Последний раз редактировалось andrewpalkin; 19.12.2010 в 20:23.
andrewpalkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив blok20 Помощь студентам 3 02.02.2010 21:50
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
Одномерный массив. medic357 Общие вопросы C/C++ 1 23.03.2009 19:39