21

Re: Інтерпретатор арифметичних виразів заданого формату*

Попробую пояснити...Необхідно коли користувач введе наприклад (4+3)*(5+6) сприйняло це як вираз та здійснило обчислення. Вираз може бути і в іншій формі, але потрібно щоб застосовувалися 4 операції + - * /...Поможіть чим можите..

22 Востаннє редагувалося LeoDevel (16.01.2013 20:01:46)

Re: Інтерпретатор арифметичних виразів заданого формату*

#include "stdafx.h"
#include "conio.h"

   #DEFINE MAXOP   '20'  
   #DEFINE NUMBER '0'  
   #DEFINE TOOBIG '9' 

   INT TUPE;
    CHAR S[MAXOP];
    DOUBLE OP2,ATOF(),POP(),PUSH();

    WHILE ((TUPE=GETOP(S,MAXOP)) !=EOF);
      SWITCH(TUPE) /(
      CASE NUMBER:
           PUSH(ATOF(S));
           BREAK;
      CASE '+':
           PUSH(POP()+POP());
           BREAK;
      CASE '*':
           PUSH(POP()*POP());
           BREAK;
      CASE '-':
           OP2=POP();
           PUSH(POP()-OP2);
           BREAK;
      CASE '/':
           OP2=POP();
           IF (OP2 != 0.0)
   PUSH(POP()/OP2);
           ELSE
              PRINTF("ZERO DIVISOR POPPED\N");
           BREAK;
      CASE '=':
           PRINTF("\T%F\N",PUSH(POP()));
           BREAK;
      CASE 'C':
           CLEAR();
           BREAK;
      CASE TOOBIG:
           PRINTF("%.20S ... IS TOO LONG\N",S)
           BREAK;
   
   #DEFINE MAXVAL 100 /* MAXIMUM DEPTH OF VAL STACK */

   INT SP = 0;        /* STACK POINTER */
   DOUBLE VAL[MAXVAL]; /*VALUE STACK */
   DOUBLE PUSH(F)    /* PUSH F ONTO VALUE STACK */
   DOUBLE F;

    IF (SP < MAXVAL)
            RETURN(VAL[SP++] =F);
    ELSE    /(
            PRINTF("ERROR: STACK FULL\N");
            CLEAR();
            RETURN(0);
   
   DOUBLE POP()   /* POP TOP VALUE FROM STEACK */

    IF (SP > 0)
            RETURN(VAL[--SP]);
    ELSE    /(
            PRINTF("ERROR: STACK EMPTY\N");
            CLEAR();
            RETURN(0);
  

   CLEAR()       /* CLEAR STACK */
  
     SP=0;
 
     
 getch();
return 0;
}

23

Re: Інтерпретатор арифметичних виразів заданого формату*

Задопомогою нашого форумчанена найшов такий алгоритм, поможіть розібратися що тут неправильно..

24

Re: Інтерпретатор арифметичних виразів заданого формату*

LeoDevel написав:

Задопомогою нашого форумчанена найшов такий алгоритм, поможіть розібратися що тут неправильно..

Неправильно що всі букви великі. Сішечка чутлива до регістру.

25

Re: Інтерпретатор арифметичних виразів заданого формату*

Да ступив..

26

Re: Інтерпретатор арифметичних виразів заданого формату*

LeoDevel написав:

Вираз може бути і в іншій формі, але потрібно щоб застосовувалися 4 операції + - * /

Я недарма згадав про зворотній польский варіант. Парсити його набагато простіше, ніж звичайний формат, оскільки відпадає така проблемна річ, як дужки і пріоритети, які вони ламають собою. Крім того, екзотика, своєрідна "новизна" для курсової, imho:). Суть алгоритму легко зрозуміти по тих статтях, що я вказав кількома постами раніше.

Я колись зворотній польський реалізував на Пітоні. Перевести на C++ - справа техніки, алгоритм бо ж коректний і простий.
Можу скинути вам скрипта з коментарями.

27

Re: Інтерпретатор арифметичних виразів заданого формату*

Bartash написав:
LeoDevel написав:

Вираз може бути і в іншій формі, але потрібно щоб застосовувалися 4 операції + - * /

Я недарма згадав про зворотній польский варіант. Парсити його набагато простіше, ніж звичайний формат, оскільки відпадає така проблемна річ, як дужки і пріоритети, які вони ламають собою. Крім того, екзотика, своєрідна "новизна" для курсової, imho:). Суть алгоритму легко зрозуміти по тих статтях, що я вказав кількома постами раніше.

Я колись зворотній польський реалізував на Пітоні. Перевести на C++ - справа техніки, алгоритм бо ж коректний і простий.
Можу скинути вам скрипта з коментарями.

Скиньте...буду вдячний...

28

Re: Інтерпретатор арифметичних виразів заданого формату*

Bartash написав:
LeoDevel написав:

Вираз може бути і в іншій формі, але потрібно щоб застосовувалися 4 операції + - * /

Я недарма згадав про зворотній польский варіант. Парсити його набагато простіше, ніж звичайний формат, оскільки відпадає така проблемна річ, як дужки і пріоритети, які вони ламають собою. Крім того, екзотика, своєрідна "новизна" для курсової, imho:). Суть алгоритму легко зрозуміти по тих статтях, що я вказав кількома постами раніше.

Я колись зворотній польський реалізував на Пітоні. Перевести на C++ - справа техніки, алгоритм бо ж коректний і простий.
Можу скинути вам скрипта з коментарями.

На обменнике выдает что файл удален ...

Re: Інтерпретатор арифметичних виразів заданого формату*

LeoDevel написав:

На обменнике выдает что файл удален ...

Офтоп, але чого це ви на рус мові заговорили ?

30

Re: Інтерпретатор арифметичних виразів заданого формату*

LeoDevel написав:

На обменнике выдает что файл удален ...

У приваті новий лінк. Маєте час скачати до завтра.

З.І: на повідомлення у приваті ліпше відповідати також у приваті. Проблема посилання на файлобмінник не стосується теми, але проблем передачі файлів.

З.З.І: Хоча у Правилах не вказано обов'язковість спілкування українською, внутрішній етикет Форуму це передбачає де-факто. Тому пропоную вам підтримувати гармонію спілкування на Форумі: мова спілкування має бути одна.