Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Oleg I. Khovayko                     2:5020/400     12 Feb 2002  21:16:49
 To : Pavel Markov
 Subject : Re: Текстовое выражение вычислить
 -------------------------------------------------------------------------------- 
 
 >   Пример: 2-(3+5-(3-(3+3)-2)) }
 
 Да, то же самое решение, но чуть-чуть
 оптимизированное. По-моему, довольно 
 занятно получилось:
 
 #include <stdio.h>
 
 char expr[] = "2-(3+5-(3-(3+3)-2))";
 
 void rm_brackets(char *p1, char *p2) {
  char swap   = '+' ^ '-';
  char x      = 0;
  char c;
 
  while(1) 
    switch(c = *p1++) {
      case '(' : 
      case ')' : 
                 x ^= swap; continue;
      case '+' :
      case '-' :
                 c ^= x;
      default  : *p2++ = c; continue; 
      case 0   : *p2 = 0  ; return; 
    } 
  
 }
 
 int calc_expr(char *p) {
   int sum = atoi(p);
   char c;
   
   while(1)
    switch(c = *p++) {
      case '+' : sum += atoi(p); continue;
      case '-' : sum -= atoi(p); continue;
      case 0   : return sum; 
      default  : continue; 
    }
 }
 main() {
 
   char workbuf[200];
 
   rm_brackets(expr, workbuf);
 
   printf("Translated: [%s]->[%s]; sum=%d\n", 
     expr, workbuf, calc_expr(workbuf));
 
 }
 -- 
 #include <best/regards.hpp>
 Oleg I. KHOVAYKO  
 (301)435-5885 || WEB: http://olegh.spedia.net
 --- ifmail v.2.15dev5
  * Origin: National Center for Biotechnology Information (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Текстовое выражение вычислить   Pavel Markov   12 Feb 2002 15:38:43 
 Re: Текстовое выражение вычислить   Max Vikulov   12 Feb 2002 20:40:49 
 Re: Текстовое выражение вычислить   Oleg I. Khovayko   12 Feb 2002 19:31:36 
 Re: Текстовое выражение вычислить   Oleg I. Khovayko   12 Feb 2002 21:00:24 
 Re: Текстовое выражение вычислить   Oleg I. Khovayko   12 Feb 2002 21:16:49 
 Re: Текстовое выражение вычислить   Pavel Markov   20 Feb 2002 18:43:07 
Архивное /ru.algorithms/11522687c3ebe.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional