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

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>
            国产欧美精品在线播放| 久久不射电影网| 久久久久久久久久久成人| 亚洲一区综合| 欧美一级理论片| 久久精品中文字幕一区| 麻豆av福利av久久av| 欧美电影免费观看网站| 亚洲欧洲日本国产| 中文国产一区| 欧美在线视频观看免费网站| 美女脱光内衣内裤视频久久影院| 欧美激情第二页| 国产精品欧美日韩一区二区| 国产亚洲高清视频| 亚洲毛片av| 欧美诱惑福利视频| 亚洲国产精品久久久久秋霞影院 | 国产精自产拍久久久久久蜜 | 亚洲国产日韩欧美在线图片| 亚洲美女av电影| 亚洲欧美日韩另类| 麻豆精品在线视频| 中国女人久久久| 美女视频黄免费的久久| 国产精品乱子久久久久| 亚洲电影免费观看高清完整版在线| 在线视频欧美日韩| 欧美国产乱视频| 午夜精品久久久久久久男人的天堂 | 久久综合久色欧美综合狠狠| 欧美全黄视频| 在线成人性视频| 香蕉尹人综合在线观看| 欧美黄色一区| 久久成人国产精品| 国产精品色婷婷| 中日韩高清电影网| 亚洲国产成人精品女人久久久| 亚洲一区精品视频| 欧美日韩国产一区二区三区地区| 在线观看91精品国产麻豆| 99精品热6080yy久久| 久久天天躁狠狠躁夜夜av| 欧美11—12娇小xxxx| 国产精品欧美久久久久无广告| 亚洲国产日韩在线一区模特| 久久国产88| 亚洲综合色婷婷| 欧美性jizz18性欧美| 夜夜嗨av一区二区三区| 亚洲电影免费观看高清完整版在线| 久久er精品视频| 国产一区视频在线看| 欧美在线视频一区二区| 亚洲亚洲精品在线观看 | 亚洲激情国产精品| 欧美丰满高潮xxxx喷水动漫| 久久九九99| 一区二区三区我不卡| 看欧美日韩国产| 久久米奇亚洲| 亚洲国产小视频| 亚洲国产高清一区二区三区| 老牛影视一区二区三区| 亚洲国产精品一区二区三区| 欧美aa在线视频| 欧美国产一区二区三区激情无套| 亚洲人成网站777色婷婷| 亚洲国产第一页| 欧美午夜精品久久久久久人妖| 亚洲欧美日本精品| 午夜日本精品| 伊人婷婷久久| 91久久视频| 国产精品xnxxcom| 久久久噜噜噜久久狠狠50岁| 久久全球大尺度高清视频| 亚洲人人精品| 亚洲视频网站在线观看| 国产亚洲精品一区二区| 欧美福利在线| 欧美私人网站| 久久久久一区二区| 欧美经典一区二区三区| 午夜精品久久久久久久99黑人| 欧美一级视频免费在线观看| 亚洲三级电影全部在线观看高清| 亚洲美女在线看| 国产一区欧美| 亚洲黄一区二区三区| 国产精品人人爽人人做我的可爱| 久久综合狠狠| 欧美三级日本三级少妇99| 久久久99国产精品免费| 欧美剧在线免费观看网站| 欧美一级日韩一级| 老色批av在线精品| 亚洲欧美制服另类日韩| 久久天天躁狠狠躁夜夜爽蜜月| 99热精品在线| 欧美va亚洲va国产综合| 午夜精品www| 卡通动漫国产精品| 亚洲欧美综合另类中字| 快播亚洲色图| 久久国产主播| 欧美日韩成人一区二区三区| 久久久亚洲成人| 欧美四级在线观看| 亚洲国产经典视频| 狠狠色香婷婷久久亚洲精品| 亚洲精品一区二区三区四区高清 | 国产精品网站在线| 亚洲片在线资源| 极品av少妇一区二区| 亚洲女人小视频在线观看| 日韩视频一区二区三区在线播放免费观看 | 欧美成人黄色小视频| 国产免费成人在线视频| 在线看一区二区| 亚洲网址在线| 一区二区三区四区精品| 欧美成人一区二区三区| 美国十次成人| 国产综合精品一区| 午夜久久影院| 欧美中文在线观看国产| 国产精品v欧美精品v日韩| 亚洲精品久久久久中文字幕欢迎你 | 久久久久久网址| 久久精品最新地址| 国产日韩欧美在线视频观看| 亚洲国产精品嫩草影院| 久久在线免费| 麻豆精品网站| 在线成人性视频| 久久午夜视频| 免费在线成人av| 在线看日韩av| 欧美成人免费全部| 欧美激情亚洲激情| 亚洲免费av网站| 欧美视频日韩| 亚洲欧美成人在线| 久久久久久久性| 在线播放豆国产99亚洲| 久久免费精品视频| 欧美激情国产日韩| 一本一本久久| 国产精品入口麻豆原神| 欧美亚洲一区三区| 嫩草影视亚洲| 一本色道久久88综合亚洲精品ⅰ| 欧美午夜剧场| 久久成人精品| 亚洲黄色免费| 欧美激情免费在线| 亚洲私人影院在线观看| 欧美视频精品在线| 欧美一区二区成人| 噜噜爱69成人精品| 亚洲精品一区在线观看| 欧美日韩亚洲国产一区| 亚洲在线播放| 你懂的国产精品永久在线| 日韩亚洲欧美在线观看| 欧美午夜电影网| 久久精品中文字幕一区| 亚洲精品日日夜夜| 久久久久久69| 一区二区三区四区精品| 国产综合网站| 欧美日韩高清区| 久久精品一区二区三区四区| 91久久精品一区二区三区| 欧美一区二区精品在线| 亚洲激情电影中文字幕| 国产九区一区在线| 欧美精品 日韩| 欧美一区二视频| 亚洲精品影视在线观看| 久久影音先锋| 欧美伊人久久久久久午夜久久久久| 亚洲国产另类久久精品| 国产伦精品一区二区三区| 欧美成人69| 久久黄色小说| 亚洲欧美影音先锋| 99re6这里只有精品| 欧美搞黄网站| 久久全球大尺度高清视频| 99精品视频免费观看| 亚洲第一在线综合在线| 国产精品一卡| 国产精品高精视频免费| 欧美激情一二区| 女同一区二区| 久久嫩草精品久久久精品一| 亚洲男人av电影|