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

uva 327 - Evaluating Simple C Expressions

   這個題目的意思是要計算一些c語言表達(dá)式的值。這些表達(dá)式有+-還有++,--操作符與a-z這些變量組合而成。a-z的權(quán)值是1-26。
比如,表達(dá)式 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 閱讀(1114) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告數(shù)據(jù)結(jié)構(gòu)

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學(xué)

網(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>
            欧美一二三区在线观看| 一本色道久久综合亚洲精品不| 亚洲免费一在线| 久久综合网络一区二区| 久久精品国产免费观看| 欧美亚洲日本网站| 羞羞漫画18久久大片| 亚洲欧美日韩人成在线播放| 亚洲在线成人| 午夜久久电影网| 欧美专区一区二区三区| 久久国产视频网站| 免费美女久久99| 夜夜嗨一区二区三区| 亚洲性av在线| 久久综合给合久久狠狠色| 欧美日韩另类在线| 国产一区二区激情| 亚洲乱码一区二区| 久久av在线| 91久久亚洲| 一本不卡影院| 久久这里有精品15一区二区三区 | 一区二区三区视频在线看| 日韩一级精品视频在线观看| 一区二区欧美国产| 久久国产直播| 欧美性淫爽ww久久久久无| 一区二区在线观看视频| 亚洲视频在线看| 欧美高清一区| 欧美亚洲视频| 欧美日韩不卡合集视频| 国产日韩在线一区二区三区| 91久久久久久| 久久国产福利国产秒拍| 久久一区中文字幕| 国产精品v一区二区三区| 欧美va亚洲va国产综合| 欧美男人的天堂| 国产精品一区二区三区四区 | 欧美日韩视频在线观看一区二区三区| 欧美体内she精视频在线观看| 国产精品mv在线观看| 狠狠综合久久av一区二区小说| 亚洲精品国产视频| 久久成人免费网| 久久久久久一区二区| 极品少妇一区二区三区| 中文国产亚洲喷潮| 欧美一区二区三区四区在线| 久久久国产精彩视频美女艺术照福利| 亚洲国产日韩一区| 欧美一级在线视频| 欧美mv日韩mv国产网站| 欧美日韩一区二区在线播放| 国产精品性做久久久久久| 亚洲第一黄网| 久久精品观看| 亚洲香蕉成视频在线观看| 欧美精品九九| 亚洲国产婷婷香蕉久久久久久99| 午夜精品福利在线| 亚洲精品美女久久久久| 久久国产免费| 国产在线一区二区三区四区| 亚洲视频视频在线| 久久成人免费日本黄色| 亚洲美女av黄| 久久精品视频网| 亚洲校园激情| 国产精品美女久久久久久2018| 欧美在线黄色| 欧美午夜电影网| 亚洲激情黄色| 欧美成va人片在线观看| 欧美综合激情网| 国产亚洲欧洲一区高清在线观看| 在线亚洲+欧美+日本专区| 欧美激情在线播放| 老司机精品导航| 91久久视频| 亚洲国产精品久久久久秋霞不卡 | 欧美午夜电影一区| 99国产精品久久| 亚洲欧洲另类| 欧美精品91| 9色porny自拍视频一区二区| 亚洲黄色在线观看| 欧美久久成人| 亚洲影音先锋| 亚洲国产另类精品专区| 欧美中文字幕在线视频| 国产一区深夜福利| 久久综合给合久久狠狠狠97色69| 久久久久国产一区二区三区| 伊人蜜桃色噜噜激情综合| 欧美大片在线观看| 欧美精品亚洲二区| 亚洲欧美中文在线视频| 欧美一级视频免费在线观看| 国内精品视频在线播放| 亚洲东热激情| 国产精品久久久久aaaa九色| 99视频精品| 日韩一级二级三级| 国产精品福利在线| 久久亚洲私人国产精品va| 免费日本视频一区| 午夜国产精品视频免费体验区| 亚洲精品人人| 久久精品国产77777蜜臀| 欧美一区二区三区免费在线看| 在线播放中文字幕一区| 亚洲精品久久久久久久久久久| 国产精品国产三级国产a| 久久久综合网站| 欧美国产91| 久久精品亚洲一区二区三区浴池| 久久久综合精品| 正在播放日韩| 久久国产日韩| 午夜久久影院| 欧美国产精品久久| 久久成人综合视频| 欧美日韩国产va另类| 亚洲免费在线电影| 蜜月aⅴ免费一区二区三区| 香蕉久久夜色精品国产| 免费观看久久久4p| 久久国产精品久久w女人spa| 欧美国产日韩二区| 猛男gaygay欧美视频| 国产精品国产三级国产普通话99| 免费久久精品视频| 国产亚洲第一区| 亚洲精品国产欧美| 亚洲激情影院| 久久免费视频一区| 欧美日韩在线视频一区| 99re8这里有精品热视频免费| 国产一区二区三区直播精品电影| 亚洲另类自拍| 91久久精品国产91性色tv| 欧美中在线观看| 欧美在线播放一区二区| 欧美日韩在线观看视频| 亚洲激情国产| 亚洲理伦在线| 欧美成人免费全部| 欧美伊久线香蕉线新在线| 欧美日韩日日夜夜| 亚洲精品欧洲| 亚洲三级国产| 亚洲香蕉视频| 欧美中文字幕在线播放| 国产精品久久999| 一区二区三区四区五区在线| 一区二区不卡在线视频 午夜欧美不卡在 | 久久精品亚洲国产奇米99| 亚洲欧洲综合另类| 亚洲天堂第二页| 国产精品久久久久天堂| 亚洲精品中文字| 在线视频精品一区| 欧美午夜寂寞影院| 亚洲一区www| 久久福利电影| 亚洲国产成人tv| 美国三级日本三级久久99| 欧美搞黄网站| 欧美大胆成人| 亚洲字幕在线观看| 国产精品福利在线观看| 这里只有精品视频在线| 欧美一级久久久| 国语精品中文字幕| 美女黄网久久| 日韩视频免费观看| 性色av一区二区三区在线观看| 国产精品影音先锋| 久久久久久久一区二区| 亚洲高清视频一区| 亚洲午夜高清视频| 国产亚洲欧美日韩在线一区| 久久精品国产亚洲高清剧情介绍| 香蕉成人啪国产精品视频综合网| 国产日本亚洲高清| 美日韩精品视频| 在线综合视频| 欧美99在线视频观看| 亚洲午夜精品一区二区| 国产一区二区福利| 亚洲国产精品久久久久久女王| 久久gogo国模啪啪人体图| 91久久国产综合久久91精品网站| 欧美精品黄色| 久久久av毛片精品| av成人黄色| 久久综合色一综合色88|