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

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>
            欧美激情1区2区| 国产精品一二一区| 亚洲人成在线播放| 久久久一区二区| 久久综合给合久久狠狠狠97色69| 欧美一级在线视频| 欧美一区二区三区在线免费观看| 亚洲一二三区精品| 夜夜嗨一区二区三区| 久久综合伊人77777麻豆| 欧美理论在线| 国产精品国产自产拍高清av王其| 国产精品一区视频网站| 国产一区成人| 亚洲精品男同| 小黄鸭精品aⅴ导航网站入口| 久久精彩视频| 亚洲激情偷拍| 亚洲免费小视频| 久久精品国产亚洲一区二区三区| 久久综合色影院| 欧美系列精品| 亚洲成人资源| 香蕉久久一区二区不卡无毒影院 | 久久午夜精品| 欧美激情日韩| 国产亚洲精品一区二555| 亚洲人成毛片在线播放| 欧美亚洲一区在线| 亚洲国产视频直播| 久久成人国产| 国产精品青草久久久久福利99| 激情综合视频| 欧美一区日韩一区| 欧美精选一区| 日韩一级在线| 麻豆精品在线视频| 国产精品男女猛烈高潮激情| 亚洲国产经典视频| 久久成人亚洲| 亚洲天堂av高清| 欧美日韩国产天堂| 亚洲第一精品影视| 久久久福利视频| 亚洲综合大片69999| 欧美日韩激情网| 亚洲国产成人久久| 久久人人爽人人| 亚洲欧美日韩一区在线观看| 欧美午夜在线| 亚洲专区一区二区三区| 亚洲激情黄色| 噜噜噜噜噜久久久久久91 | 亚洲精品视频免费| 蜜臀av国产精品久久久久| 欧美亚洲一区| 久久精品国产欧美亚洲人人爽| 久久精品国产亚洲一区二区| 久久久精品性| 国产精品xxxxx| 久久免费黄色| 亚洲免费高清视频| 久久免费国产精品1| 91久久国产综合久久| 欧美日韩美女| 久久国产视频网| 国产一区二区精品久久91| 欧美日韩另类一区| 欧美激情成人在线| 伊人久久大香线| 久久久久综合| 久久国产精品99国产| 精品不卡在线| 亚洲国产精品毛片| 久久亚洲高清| 国产精品wwwwww| 亚洲免费黄色| 欧美一区1区三区3区公司| 91久久久精品| 99国产精品| 中文av字幕一区| 免费观看成人| 亚洲国产一区二区a毛片| 欧美成人高清| 久久久久久久久久久一区| 久久久欧美一区二区| 亚洲欧美日韩在线播放| 久久精品国产综合| 在线观看日韩av电影| 欧美午夜久久| 国产精品丝袜xxxxxxx| 亚洲福利一区| 久久久国产精品一区二区三区| 亚洲性线免费观看视频成熟| 免费不卡中文字幕视频| 在线中文字幕一区| 日韩亚洲欧美精品| 亚洲视频国产视频| 亚洲国产欧美日韩| 亚洲素人一区二区| 亚洲一区二区三区高清不卡| 91久久精品国产91性色tv| 国内成+人亚洲| 亚洲女人小视频在线观看| 久久www成人_看片免费不卡| 欧美伦理a级免费电影| 国产精品久久久久久久9999| 欧美精品免费在线| 欧美激情一区二区三区不卡| 欧美三区在线视频| 亚洲伊人观看| 免费人成精品欧美精品| 性欧美xxxx大乳国产app| 久久精品欧美| 欧美高清在线播放| 亚洲欧洲日产国码二区| 久久精品国产综合| 久久成人一区| 蜜臀av在线播放一区二区三区| 欧美激情亚洲国产| 国产精品国产三级国产a| 国产日本亚洲高清| 一区二区福利| 亚洲图片欧美一区| 欧美va天堂| 亚洲高清久久久| 欧美88av| 欧美极品在线视频| 日韩午夜在线| 亚洲激情另类| 久久一区中文字幕| 另类天堂视频在线观看| 国产精品chinese| 在线电影一区| 久久综合影视| 亚洲在线视频一区| 久久九九热免费视频| 一区二区三区在线不卡| 亚洲午夜久久久| 欧美噜噜久久久xxx| 韩国精品一区二区三区| 久久人人看视频| 久久九九全国免费精品观看| 午夜精品久久久久久99热| 亚洲桃色在线一区| 一区二区三区av| 国产视频一区三区| 亚洲精品一区久久久久久| 国模私拍一区二区三区| 久久aⅴ乱码一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 国产一区二区三区直播精品电影| 美女999久久久精品视频| 欧美日韩免费观看一区=区三区| 欧美亚洲三区| 欧美日韩国产首页在线观看| 久久这里有精品15一区二区三区| 欧美日韩在线影院| 亚洲精品一线二线三线无人区| 91久久精品www人人做人人爽| 欧美三级在线| 99在线观看免费视频精品观看| 国产精品一页| 亚洲砖区区免费| 久久久久久久久岛国免费| 亚洲国产日韩一区| 中文在线一区| 亚洲欧美日本国产专区一区| 国产精品黄色在线观看| 亚洲欧洲日本专区| 亚洲国产精品一区| 欧美体内she精视频| 亚洲免费观看高清在线观看| 欧美一区精品| 午夜精品免费视频| 国产美女扒开尿口久久久| 欧美在线free| 久久国产福利国产秒拍| 日韩视频专区| 亚洲欧美一区在线| 欧美成人午夜激情视频| 欧美在线看片a免费观看| 一区二区视频免费完整版观看| 久久久久天天天天| 久久av在线| 亚洲美女精品久久| 国产精品日产欧美久久久久| 亚洲国产精品成人综合色在线婷婷| 国产网站欧美日韩免费精品在线观看| 久久国产精品电影| 亚洲日本va在线观看| 午夜精品久久久久久久| 国产欧美成人| 欧美亚州在线观看| 99精品国产在热久久婷婷| 老司机一区二区三区| 日韩网站在线看片你懂的| 久久综合999| 午夜免费在线观看精品视频| 亚洲精品日产精品乱码不卡|