2015年9月30日 星期三

Uva 10371 Time Zones

題目來源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=15&page=show_problem&problem=1312


題意:

題目開頭先給你時區的簡稱,Input :time  時區1  時區2

Output:將在時區1的time 換算成在時區2的time 並輸出


胡言亂語:

這題,卡在12小時制時間的換算超久QAQ

而函式的用法和#uva 860差不多XD

可以點進去看就好,先附上debug兩天...的程式碼~~~

...最後竟然是我把720打成780....


Uva 860 Entropy Text Analyzer

題目來源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=10&page=show_problem&problem=801

題意:

這題在luckycat沒有翻譯..有點難過,畢竟英文真的沒有很好。

first,他會先輸入一篇文章,你要按照公式,分別輸出他的單字總數、ET、Erel。

胡言亂語:

//記得當時我問同學題意時,它們都說:你帶公式就好啦,但我就是不懂公式的意思咩=3=

作法講起來真的蠻簡單的

首先你要會將句子中的單字擷取出來,所以會用到strtok( )這個函式,他的用法是:





這樣就可以將單字取出來了!

//但要注意str1是 char[]喔~是cstring (char string)才可以使用=)

//比較兩個cstring是否相同可以使用strcmp(str1,str2),相同回傳0,不同回傳非零數字~

取出來後就可以順便計算其出現頻率。因此就用到map了!

剛認識map時,覺得他的感覺很像hash(雜湊),你的key會對應到一個抽屜,你可以在抽屜內放數字進去。因此在這邊,我們把剛剛取出的單字p當成key,把它出現頻率放到對應的抽屜裡:


最後再將答案計算並輸出就好 ^_____^

//n表示有幾種單字,爛瘩表示總共有幾個單字。

程式碼:





2015年9月23日 星期三

UVa10221 Satellites

題目來源:https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1162

胡言亂語:

找弧長和弦長的公式找好久喔 ... 再次要在code book加上新東西了XD

這題我犯的錯誤是,忘記輸出小數點後6位,輸出小數的話用printf 比較好寫

double x;
printf("%.nlf",x);

這樣就可以輸出小數點後n位了。=)

程式碼:





Uva 478 Points in Figures: Rectangles, Circles, Triangles

題目來源:https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=419

胡言亂語:

這題原本我亂看題目,所以有重寫一次...

題目要求輸出一圖形順序,我以為先輸出完矩形、在圓形、在三角形...

因此思考了一下,要怎麼樣存圖形比較方便。分別設三個array存不一樣的圖形是笨方法。最後:

struct Point{
    double x,y;
};

struct graph{
    char ch;  //判斷是什麼圖形
    Point a,b,c;
    double radius;
}P[11];

多設的變數可以不用理他,像是圓形就只需用到Point a,b,c根本用不到,但沒關係

這樣只要從P[1]~P[i]比較是否在圖形內就好

程式碼:






Uva 191 Intersection

題目來源:https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=127

胡言亂語:

剛看到這一題的時候,就想說,可能先要判斷線段和矩形的四個邊有沒有交點,在來判斷線段是否在矩形內,但想一想,會不會更簡單啊??

突然想到,那把線段切成很多小點,判斷每個點是否在矩形內不就好了?

線段方程式:ax+by = c  ==>千萬不要用這個,因為這樣就會有三個變數
                        y  = ax+b  ==>這樣只剩兩個變數而已

因此我已x為變化基準,計算x' = x+0.5為間距的點是否在矩形內,但這樣WA了。
測了一下,發現兩個錯誤

(1)  若為垂直線則無斜率,需要另外處理
(2)  x' = x+0.1  之前間距(0.5)太大,會有漏掉的點

修改後終於AC了  ^___^

程式碼: