青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

uva 327 - Evaluating Simple C Expressions

   這個題目的意思是要計算一些c語言表達式的值。這些表達式有+-還有++,--操作符與a-z這些變量組合而成。a-z的權值是1-26。
比如,表達式 c+f--+--a,得出值是9,其它變量的值也需要計算出來。   
   這個題目感覺比較麻煩,剛開始一點思路也沒有,還寫了個錯誤的方法,浪費了時間。
   后面我的思路是 (+,-) (--,++)(變量)(--,++),這個匹配式子的意思是先處理二元操作符,然后處理前置,再處理變量,
再處理后置,如果發(fā)現(xiàn)沒有后置操作符,則把讀取的數(shù)據(jù)重新寫回數(shù)據(jù)流里面,下次再處理。

   代碼如下: 
  1 #include <stdio.h> 
  2 #include <string.h>
  3 #include <sstream>
  4 #include <algorithm>
  5 using namespace std;
  6 struct INFO
  7 {
  8     char ch;
  9     int nValue;
 10     char chAdd;
 11     bool operator < (const INFO& info) const
 12     {
 13         return ch < info.ch;
 14     }
 15 };
 16 
 17 INFO infos[200];
 18 char szLine[200];
 19 
 20 bool GetNextChar(stringstream& ss, char& ch)
 21 {
 22     while (ss >> ch)
 23     {
 24         if (ch != ' ');
 25         {
 26             return true;
 27         }
 28     }
 29     return false;
 30 }
 31 
 32 int main()
 33 {
 34     while (gets(szLine))
 35     {
 36         printf("Expression: %s\n", szLine);
 37         memset(infos, 0, sizeof(infos));
 38         stringstream ss(szLine);
 39         char ch;
 40         int nNum = 0;
 41         int nValue = 0;
 42         char chOper;
 43         bool bOk = true;
 44         bool bFirst = true;
 45         while (1)
 46         {
 47             if (bFirst)
 48             {
 49                 chOper = '+';
 50                 bFirst = false;
 51             }
 52             else
 53             {
 54                 bOk = GetNextChar(ss, ch);
 55                 if (!bOk) break;
 56                 chOper = ch;
 57             }
 58 
 59             bOk = GetNextChar(ss, ch);
 60             if (!bOk) break;
 61 
 62             if (ch == '-')//前置--
 63             {
 64                 bOk = GetNextChar(ss, ch);
 65                 if (!bOk) break;//-
 66                 bOk = GetNextChar(ss, ch);
 67                 if (!bOk) break;//讀取字母
 68 
 69                 infos[nNum].ch = ch;
 70                 infos[nNum].nValue = ch - 'a';
 71 
 72                 if (chOper == '+')
 73                 {
 74                     nValue += infos[nNum].nValue;
 75                 }
 76                 else
 77                 {
 78                     nValue -= infos[nNum].nValue;
 79                 }
 80                 ++nNum;
 81             }
 82             else if (ch == '+')//前置++
 83             {
 84                 bOk = GetNextChar(ss, ch);
 85                 if (!bOk) break;//+
 86                 bOk = GetNextChar(ss, ch);
 87                 if (!bOk) break;//讀取字母
 88 
 89                 infos[nNum].ch = ch;
 90                 infos[nNum].nValue = ch - 'a' + 2;
 91 
 92                 if (chOper == '+')
 93                 {
 94                     nValue += infos[nNum].nValue;
 95                 }
 96                 else
 97                 {
 98                     nValue -= infos[nNum].nValue;
 99                 }
100                 ++nNum;
101             }
102             else
103             {
104                 infos[nNum].ch = ch;
105                 infos[nNum].nValue = ch - 'a' + 1;
106 
107                 if (chOper == '+')
108                 {
109                     nValue += infos[nNum].nValue;
110                 }
111                 else
112                 {
113                     nValue -= infos[nNum].nValue;
114                 }
115 
116                 //讀取后置操作符
117                 char chOne;
118                 char chTwo;
119                 bOk = GetNextChar(ss, chOne);
120                 if (!bOk)
121                 {
122                     ++nNum;
123                     break;
124                 }
125                 bOk = GetNextChar(ss, chTwo);
126                 if (!bOk)
127                 {
128                     ++nNum;
129                     break;
130                 }
131 
132                 if (chOne == chTwo)
133                 {
134                     if (chOne == '+')
135                     {
136                         infos[nNum].chAdd = '+';
137                     }
138                     else
139                     {
140                         infos[nNum].chAdd = '-';
141                     }
142                 }
143                 else
144                 {
145                     ss.putback(chTwo);
146                     ss.putback(chOne);
147                 }
148                 ++nNum;
149             }
150         }
151 
152         printf("    value = %d\n", nValue);
153         sort(infos, infos + nNum);
154         for (int i = 0; i < nNum; ++i)
155         {
156             if (infos[i].chAdd == '+')
157             {
158                 infos[i].nValue++;
159             }
160             else if (infos[i].chAdd == '-')
161             {
162                 infos[i].nValue--;
163             }
164             printf("    %c = %d\n", infos[i].ch, infos[i].nValue);
165         }
166     }
167 
168     return 0;
169 }
170 

posted on 2012-07-10 12:05 yx 閱讀(1118) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告數(shù)據(jù)結構

<2011年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

導航

統(tǒng)計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網(wǎng)友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美日韩综合一区| 久久国产精品一区二区| 国产精品美女午夜av| 欧美久久久久免费| 欧美国产激情二区三区| 欧美国产免费| 免费久久99精品国产自在现线| 国产乱码精品一区二区三区忘忧草| 亚洲一区二区精品视频| 免费久久99精品国产| 亚洲先锋成人| 亚洲国产精品悠悠久久琪琪| 在线观看一区视频| 国产一区自拍视频| 玉米视频成人免费看| 伊人成人在线| 亚洲久色影视| 性欧美激情精品| 欧美福利在线| 亚洲免费综合| 老司机午夜精品视频在线观看| 宅男噜噜噜66一区二区66| 欧美亚洲视频在线观看| 欧美高清视频一区二区| 99精品视频网| 欧美www视频在线观看| 国产欧美精品一区| 亚洲美女尤物影院| 久久gogo国模裸体人体| 亚洲国产精品高清久久久| 亚洲小说春色综合另类电影| 欧美r片在线| 黄色成人av| 久久国产欧美精品| 中国女人久久久| 欧美精品一区二区久久婷婷| 激情av一区| 久久国产精品电影| 亚洲午夜精品视频| 欧美日韩国产欧| 亚洲美女网站| 欧美成人精品高清在线播放| 欧美一站二站| 国产欧美日韩三级| 午夜精品一区二区三区在线| 日韩天堂在线观看| 欧美理论在线播放| 亚洲精品乱码久久久久久蜜桃麻豆 | 美女国产精品| 国产欧美日韩一区二区三区在线观看| 亚洲精品中文字幕有码专区| 女人香蕉久久**毛片精品| 欧美专区亚洲专区| 国产亚洲成av人片在线观看桃| 午夜亚洲一区| 亚洲欧美国产77777| 国产精品中文在线| 久久av一区二区三区| 午夜欧美大片免费观看| 国产精品一级二级三级| 欧美在线视频a| 午夜宅男久久久| 国内精品免费在线观看| 另类综合日韩欧美亚洲| 久久久精品tv| 亚洲欧洲精品一区二区三区| 亚洲人成亚洲人成在线观看图片| 欧美激情在线狂野欧美精品| 一本色道综合亚洲| 亚洲小说欧美另类婷婷| 国产日韩欧美日韩大片| 另类综合日韩欧美亚洲| 欧美激情成人在线| 亚洲欧美精品在线观看| 香蕉久久夜色精品国产| 精品91视频| 亚洲精品国产精品国自产观看浪潮| 中文国产一区| 男女激情视频一区| 欧美福利视频在线| 亚洲一区精品视频| 久久精品卡一| 亚洲美女淫视频| 亚洲一区二区av电影| 激情综合激情| 亚洲日本一区二区三区| 国产区二精品视| 亚洲国产精品久久久久秋霞影院| 国产精品qvod| 欧美大片免费看| 国产精品视频xxx| 亚洲国产高清在线| 国产欧美日韩在线播放| 亚洲国产精品一区在线观看不卡| 国产精品社区| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲人成网站影音先锋播放| 日韩一级网站| 在线观看亚洲精品| 在线综合欧美| 亚洲欧洲另类国产综合| 亚洲欧美偷拍卡通变态| 亚洲免费观看| 久久精品卡一| 午夜精品免费视频| 欧美激情亚洲精品| 免费亚洲一区二区| 国产精品一卡二卡| 亚洲精选91| 亚洲欧洲一区二区三区在线观看| 午夜宅男久久久| 亚洲免费伊人电影在线观看av| 免费欧美在线视频| 蜜臀久久99精品久久久画质超高清| 国产精品久久久久7777婷婷| 亚洲国产日韩欧美在线动漫| 好吊视频一区二区三区四区| 亚洲综合日韩在线| 亚洲欧美日韩精品在线| 欧美日韩在线综合| 亚洲国产一区二区三区高清| 伊人男人综合视频网| 欧美一区二区| 久久精品欧美日韩| 国产日韩欧美在线看| 亚洲在线播放| 欧美综合国产| 国产亚洲人成a一在线v站| 亚洲欧美中文日韩v在线观看| 亚洲综合精品自拍| 国产精品三区www17con| 亚洲欧美成人在线| 欧美一区二区视频在线观看| 国产精品亚洲综合| 亚洲免费在线观看| 国产精品国产三级国产a| 亚洲一区二区高清| 欧美日韩免费观看一区二区三区 | 一区二区免费在线播放| 91久久午夜| 欧美高清视频免费观看| 亚洲高清色综合| 亚洲免费电影在线| 欧美日韩在线播| 在线视频免费在线观看一区二区| 亚洲一区二区在线免费观看视频| 欧美日韩在线观看一区二区| 一本色道久久加勒比精品| 亚洲在线成人| 国产日本欧美视频| 久久免费视频在线| 日韩视频永久免费| 午夜精品免费在线| 狠狠干成人综合网| 欧美国产日韩精品免费观看| 亚洲美女诱惑| 久久激情视频免费观看| 亚洲高清网站| 欧美日韩一区二区免费在线观看 | 免费久久99精品国产| 亚洲人成毛片在线播放女女| 欧美日韩国产丝袜另类| 亚洲欧美日韩在线一区| 乱中年女人伦av一区二区| 亚洲精品一区二区三区婷婷月 | 欧美mv日韩mv国产网站| 99精品99| 国产日韩欧美a| 欧美成人a∨高清免费观看| 一卡二卡3卡四卡高清精品视频| 久久精品亚洲一区二区| 日韩一区二区高清| 国产一区二区激情| 欧美人与禽猛交乱配视频| 欧美在线亚洲| 一本久久综合| 欧美激情按摩在线| 欧美在线资源| 中文网丁香综合网| 亚洲韩国青草视频| 国产精品一香蕉国产线看观看| 免费久久99精品国产| 亚洲综合精品四区| 日韩一区二区免费高清| 女主播福利一区| 久久精品日产第一区二区三区| 亚洲最新色图| 亚洲日本va午夜在线电影| 国产又爽又黄的激情精品视频| 欧美日韩精品免费| 欧美+日本+国产+在线a∨观看| 欧美在线高清| 亚洲欧美日韩视频二区| 夜夜躁日日躁狠狠久久88av| 欧美成人视屏| 久久午夜视频| 久久久欧美精品| 久久久久久久综合狠狠综合| 亚洲欧美欧美一区二区三区| 亚洲欧美日韩国产一区二区|