堅持與固執
轉貼自 http://www.ithome.com.tw/itadm/article.php?c=51601
|
沒有人是毅力驚人的鐵漢,在面對堅持這件事的時候,難免有些彈性,有點妥協,再加上一點點惰性。心胸要能放得開,有些時候退一步讓人與人之間的介面軟化,讓事情可以順利進行,才不會為了堅持卻反而變成了固執。 |
|
小伙子,你知道什麼是堅持,什麼是固執嗎?」一個業界的前輩突然問我。我常常被別人說是很固執,沒有人說我堅持,其實我也沒想過這兩者的差別,感覺上成功的人都會說自己有堅持,失敗的人都會被別人說他很固執。不過我做了一個比較頑皮的回答:「老人家看小朋友做事情,都會認為是固執;但是小朋友會自己覺得是堅持。」 畢竟,只要不聽我們勸告的人,通常就會被冠上固執的帽子。老一輩的人常常講堅持:堅持與客戶之間的關係,堅持品質,堅持良好信用……前輩說,事情沒有那麼複雜,他認為「堅持的人知道自己在做什麼,固執的人則是情緒在左右他做什麼」。 要能聽人家的勸告,並且把其中的道理納入到自己的決策,這件事情並不容易。身為工程師,先天就存在著相當強烈的固執成分,因為我們習慣跟電腦溝通,不習慣跟人溝通;習慣明確的邏輯,不習慣人跟人之間複雜的關係。但是事業經營說穿了就是人,不管是領導者還是小工程師,難免都會有一種「想要自己卯起來幹」的衝動,但是做法上只要參入了情緒的成分,就算是固執了。 情緒的產生,有很多原因,我們沒辦法要求所有人在溝通的過程中保持客觀冷靜,導致溝通之後,可能大家仍是各做各的沒有交集。 我們都會說自己知道自己在做什麼,但是在別人看來,我們是有點難以控制或者不好溝通的。如果結果是正面的,能得到的嘉獎不多,通常成果也不會被上級所接受。反之,如果是負面的,那就更不用說了。可是我們明明知道自己在做什麼,為什麼不被人接受,而且還會被說是固執呢? 我想問題是出在於我們對「知道自己在做什麼」的定義不同所導致。每個人在組織裡面,都有被賦予的職責,站在這個職責上做應該做的事情,是第一要務。按照這個方式來推論,就會演變成公司裡面的人害怕擔責任,所以事情都推來推去,不然就是前人說怎麼做就怎麼做,都不會去創新,這樣公司怎麼辦?彼得杜拉克說,只要有事情是任何人都做不好的,那這件任務或者執掌就必須要被重新定義。在自己分內仍然有相當多的創意可以發揮,如果我們真的以為被限制在職責這個框架裡面,接下來的所做所為就難免變成固執了。 「所以說,固執的人,眼睛只會直直看著前面;堅持的人,心在看前面,仍然可以眼觀四面。」一個學長這樣子評論底下的工程師。 當我們越做越窄的時候,當我們發現可以選擇的方案越來越少,或者所有事情都只有單一方向與必然結果的時候,我們就犯了固執的毛病。固執並沒有不好,凡是成功的人必然固執,差異應該在於格局的大小,還有重點的定義,當我們顧全大局,集中力量堅持於重點的時候,才有可能把原本狹隘的固執轉換為成就事業的堅持。 什麼是大局?從公司的角度來看,就是拿到訂單。我聽說有些公司為了做好手機,派了一組人將目標市場走透透,到處去測試訊號的靈敏度,這種接近變態的固執,算是堅持。也有知名的企業,雖然有機會上門,但是這個機會的風險太大,遠超過公司所能負荷,基於堅持原則而放棄,結果倖免於在金融風暴中被拖垮的命運。當然我們也常常聽說,為了要滿足客戶的需求,廠商想破腦袋改善製程,提升技術,甚至服務到家的種種變態的固執,這些都是堅持。 可是如果我們把格局縮小,只看到利益而沒有注意到風險,演變成不聽旁人的規勸,只想固執小利,結果反而深受其害。 任何企業的資源都有限,想要在競爭中脫穎而出,就需要將資源放在重點上。但是大多數的企業都面臨同樣的困擾:機會太多,興趣廣泛,所以力量難以集中。要將事情做得好,並不一定只能把資源釘死在幾個重點上,重要的是「段落」的處理。每件事情做到一個完整的段落,再轉移進行另外一件事情,就可以用有限的資源照顧到大多數的重點。所以,重點定義的多寡並不會影響企業的發展,主要的問題在於資源的「投入」與「轉移」動作是否收乾淨,這裡面就需要堅持,把案子收尾收好才能轉移。缺乏堅持,即使重點定義正確,但收尾沒收好,就等於同時追好幾隻兔子,最後抓不到半隻。 看的遠的人,往往被別人所誤解,所以被別人講是固執不見得是壞事,被別人誤解也不見得不會成功。心裡面必須放得開,想清楚自己目前執意走這條路有沒有意義?有沒有賭氣?是否急著想要得到什麼利益?有沒有先把自己分內該做的事情做好? 堅持的代價常常都會是寂寞與痛苦,但是如果立意良善,而且對大家都有好處的話,結果仍會是雙贏互惠的。 我們都不是毅力驚人的鐵漢,在面對堅持這件事的時候,難免有些彈性,有點妥協,再加上一點點惰性。心胸要能放得開,有些時候退一步讓人與人之間的介面軟化,讓事情可以順利進行,才不會為了堅持卻反而變成了固執。 作者簡介: 吳俊瑩-iThome電腦報技術主筆 交大電子工程系、臺大電機研究所、政大科技班畢業,身兼IT/電子技術顧問和某小型電子公司研發處長。 |
93技藝競賽Q3-聯立方程式
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test3.txt")
Dim d() = Split(fileContents, ",")
Dim a1 = Val(d(0)), b1 = Val(d(1)), c1 = Val(d(2)), a2 = Val(d(3)), b2 = Val(d(4)), c2 = Val(d(5))
'a1*X + b1*Y + c1 = 0
'a2*X + b2*Y + c2 = 0
Dim n = a2 / a1
a1 = a1 * n
b1 = b1 * n
c1 = c1 * n
a1 = a1 - a2
b1 = b1 - b2
c1 = c1 - c2
Dim k = -1 * c1
Dim y = k / b1
b2 = b2 * y
n = (b2 + c2) * -1
Dim x = n / a2
Dim STR1 = "X = " & x & ", Y = " & y
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result3.txt", STR1, False)
End
End Sub
End Class
解得出數學題,成就感是不同的 !
誰叫我國中數學就開始學不好,
XX老師的問題??
學習筆記一下:
正負反轉的方式很多
例:
a1 = 3 a1 = a1 * -1 '將a1 = 3乘上 -1 就等於 -3 a1 = -3 a1 = 0 - a1 '用 0 減去 a1 = -3 就等於 3
二進位數相乘

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test1.txt")
Dim d() = Split(fileContents, " x ")
Dim n1 = d(0), n2 = d(1)
Dim Len = n1.Length * 2
Dim str1 = Space(Len) & n1 & vbNewLine & Space(Len) & n2 & vbNewLine & "--------------------" & vbNewLine
For i As Integer = n1.Length To 1 Step -1
If Mid(n2, i, 1) = "0" Then
str1 = str1 & Space(len) & StrDup(n1.Length, "0") & vbNewLine
Else
str1 = str1 & Space(len) & n1 & vbNewLine
End If
len = len - 1
Next
Dim x = c10to2(c2to10(n1) * c2to10(n2))
str1 = str1 & "--------------------" & vbNewLine & Space(len) & x
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result1.txt", str1, False)
End
End Sub
Function c2to10(ByVal x As String)
Dim c = 0
Dim n = x.ToString
For i As Integer = n.Length To 1 Step -1
If Mid(n, i, 1) = "1" Then c = c + (2 ^ (n.Length - i))
Next
Return c
End Function
Function c10to2(ByVal y As String)
Dim x = Val(y)
Dim str1 = ""
Do Until x = 1 Or x = 0
str1 = IIf(x Mod 2 = 0, "0" & str1, "1" & str1)
x = x \ 2
Loop
str1 = IIf(x = 0, "0" & str1, "1" & str1)
Return str1
End Function
End Class
上課
半夜
Problem7:進位判斷(13%)
加法的運算是把 2 個整數靠右對齊,然後由右至左,一位一位相加。如果相加的結果大
於等於 10 就有進位(carry)發生。請寫個程式來判斷兩個正整數相加時,產生了幾次進位的
情況。
輸入說明:
第一行的數字,表示有幾組測試資料,第二行開始的每一行即為一筆測試資料。每一行
輸入的資料有兩個正整數,以一個空格分開,每個整數的長度均小於 100 位數。
輸出說明:
對每一筆測試資料,輸出相加後有幾次進位的次數。
輸入範例:
2
123 456
555 555
輸出範例:
0
3
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test7.txt")
Dim row() = Split(fileContents, vbNewLine)
Dim str1 = ""
For i As Integer = 1 To Val(row(0))
Dim d() = Split(row(i), " ")
Dim a(100)
Dim b(100)
Dim at = d(0)
Dim bt = d(1)
Dim c = 0
For k As Integer = 0 To 100
a(k) = 0
b(k) = 0
Next
For j As Integer = at.Length To 1 Step -1
a(j - 1) = Val(Mid(at, at.Length - j + 1, 1))
Next
For j As Integer = bt.Length To 1 Step -1
b(j - 1) = Val(Mid(bt, bt.Length - j + 1, 1))
Next
For j As Integer = 0 To 100
If a(j) + b(j) >= 10 Then
a(j + 1) = a(j + 1) + 1
c = c + 1
End If
Next
str1 = str1 & c & vbNewLine
Next
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result7.txt", str1, False)
End
End Sub
End Class
Problem5:字串處理(10%)
Problem5:字串處理(10%)
給一個字串,請寫一個程式,計算此字串中,英文字元有幾個?輸入說明:輸入檔第一行表示有幾組測試資料,第二行開始的每一行即為一筆測試資料,每行最多有 1000 個字元。輸出說明:對每一筆測試資料,輸出字串中英文字元的個數。輸入範例:2abc123def456133adfag3428a2fwqgq2輸出範例:611
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test5.txt")
Dim row() = Split(fileContents, vbNewLine)
Dim str1 = ""
For i As Integer = 1 To Val(row(0))
If row(i) = "" Then Exit For
Dim c = 0
Dim a = row(i)
For j As Integer = 1 To a.Length
If Asc(Mid(a, j, 1)) >= 97 And Asc(Mid(a, j, 1)) <= 122 Then
c = c 1
ElseIf Asc(Mid(a, j, 1)) >= 65 And Asc(Mid(a, j, 1)) <= 90 Then
c = c 1
End If
Next
str1 = str1 & c & vbNewLine
Next
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result5.txt", str1, False)
End
End Sub
End Class
題目沒說明字串裡的英文字大小寫,為了以防萬一,就多了一個判斷 大寫也算進去
話說半夜練習程式安靜許多
我都不想睡了
我都不想睡了

Problem6:判斷是否為 11 的倍數(14%)
給一個正整數 n,請寫一個程式,判斷 n 是否為 11 的倍數?
輸入說明:第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料。每筆測試資料為一個正整數,數字的位數,最高有可能到 1000 位。輸出說明:對每一筆測試資料,輸出是否為 11 的倍數。是的話請輸出 1,反之則輸出 0。輸入範例:224841983960121輸出範例:01
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test6.txt")
Dim row() = Split(fileContents, vbNewLine)
Dim result = ""
For j As Integer = 1 To Val(row(0))
Dim str = row(j)
Dim a = 0
For i As Integer = 1 To str.Length
If (i 1) Mod 2 = 0 Then
a = a Val(Mid(str, i, 1))
Else
a = a - Val(Mid(str, i, 1))
End If
Next
Dim str1 = ""
If a = 0 Or a = 11 Then
str1 = "1" '是11的倍數
Else
str1 = "0"
End If
result = result & str1 & vbNewLine
Next
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result6.txt", result, False)
End
End Sub
End Class
這題考慮到的問題是 最高有可能到 1000 位
是個天大的數字阿
所以並不能方式直接判斷 數字 MOD 11 = 0
當然
要是這樣出題還需要考嗎
解決方法是
a = 奇數位數的數字相加
b = 偶數位數的數字相加
假若a - b = 0 或者 11 就是11的倍數
Problem2:數字分解(11%)
Problem2:數字分解(11%)
給一個偶數 n,請你將 n 分解成兩個質數的和,也就是說,這兩個質數相加的和必須等於 n。輸入說明:第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料,每筆測試資料為一個數字,數字的範圍為[4, 10000]間的偶數。輸出說明:對輸入的每筆測試資料,分別輸出 2 個質數,用一個空白做為區隔,請由小到大排列。輸入範例:212100輸出範例:5 73 97
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test2.txt")
Dim row() = Split(fileContents, vbNewLine)
Dim str1 = ""
For i As Integer = 0 To Val(row(0))
If row(i) = "" Then Exit For
Dim k = Val(row(i))
For j As Integer = k - 1 To 1 Step -1
If f(k - j) = True And f(k - (k - j)) = True Then '條件:兩個都是質數
str1 = str1 & k - j & " " & k - (k - j) & vbNewLine
Exit For
End If
Next
Next
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result2.txt", str1, False)
End
End Sub
Function f(ByVal n) '質數判斷
Dim c = 0
Dim a = False
For i As Integer = 1 To n
If n Mod i = 0 Then c = c 1
Next
If c = 2 Then a = True
Return a
End Function
End Class
Problem1:數字刪除(12%)
Problem1:數字刪除(12%)
給 n 個數字,請你在這 n 個數字中,找出所有重覆出現的數字,並把它刪除。最後計算刪除後剩餘的數字個數。輸入說明:第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料,每行不會超過100 個數字,每個數字之間用一個空白做為區隔,數字的範圍為[0, 10000]間的整數。輸出說明:對輸入的每筆測試資料,分別輸出刪除完後剩下的數字個數。輸入範例:21 2 3 4 5 6 7 8 9 2 12 4 6 8 10輸出範例:75
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test1.txt")
Dim row() = Split(fileContents, vbNewLine)
Dim str1 = ""
For i As Integer = 1 To Val(row(0))
Dim aList = New ArrayList
If row(i) = "" Then Exit For
Dim d() = Split(row(i), " ")
For j As Integer = 0 To d.Length - 1
If alist.Contains(d(j)) = False Then '若不存在則加入
alist.Add(d(j))
Else '否則從aList中刪除
aList.Remove(d(j))
End If
Next
str1 = str1 & alist.Count & vbNewLine
Next
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result1.txt", str1, False)
End
End Sub
End Class