顯示具有 Kotlin 高中程式練習題 標籤的文章。 顯示所有文章
顯示具有 Kotlin 高中程式練習題 標籤的文章。 顯示所有文章

2019年5月23日 星期四

Kotlin 高中程式練習題 a009: 解碼器

Kotlin 高中程式練習題  a009: 解碼器

 在密碼學裡面有一種很簡單的加密方式,就是把明碼的每個字元加上某一個整數K而得到密碼的字元(明碼及密碼字元一定都在ASCII碼中可列印的範圍內)。例如若K=2,那麼apple經過加密後就變成crrng了。解密則是反過來做。這個問題是給你一個密碼字串,請你依照上述的解密方式輸出明碼。
至於在本任務中K到底是多少,請自行參照Sample Input及Sample Output推出來吧!相當簡單的。
K=7

範例輸入
1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu5
1PIT'pz'h'{yhklthyr'vm'{ol'Pu{lyuh{pvuhs'I|zpulzz'Thjopul'Jvywvyh{pvu5
範例輸出
*CDC is the trademark of the Control Data Corporation.
*IBM is a trademark of the International Business Machine Corporation.


var s= "1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu51PIT'pz'h'{yhklthyr'vm'{ol'Pu{lyuh{pvuhs'I|zpulzz'Thjopul'Jvywvyh{pvu5"
var s1= "1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu5"
var s2= "1PIT'pz'h'{yhklthyr'vm'{ol'Pu{lyuh{pvuhs'I|zpulzz'Thjopul'Jvywvyh{pvu5"
var i=0
var c=0
var c1=0
fun main() {
for (i in 0..(s.length-1))
    print(s.toCharArray()[i])
 
    println("") 
    println(s1)
    println(s2)
 
    println("") 
    for (c in s1) {
        c1=c.toInt()-7
    print( c1.toChar())
}
 
    println("") 
    for (c in s2) {
        c1=c.toInt()-7
    print( c1.toChar())
}
     
}

輸出畫面

1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu51PIT'pz'h'{yhklthyr'vm'{ol'Pu{lyuh{pvuhs'I|zpulzz'Thjopul'Jvywvyh{pvu5 1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu5 1PIT'pz'h'{yhklthyr'vm'{ol'Pu{lyuh{pvuhs'I|zpulzz'Thjopul'Jvywvyh{pvu5 *CDC is the trademark of the Control Data Corporation. *IBM is a trademark of the International Business Machine Corporation.

Kotlin 高中程式練習題 a006: 一元二次方程式

Kotlin 高中程式練習題 a006: 一元二次方程式


求一元二次方程式 ax2+bx+c=0 的根
輸入說明
輸入三個整數 a, b, c

輸出說明
Two different roots x1=?? , x2=??
Two same roots x=??
No real root a+bi , a-bi

var a: Double =0.0
var b: Double =0.0
var c: Double =0.0

fun main(args: Array<String>) {
    println("ax^2 + bx + c = 0, where a, b and c are real numbers and a ≠ 0")
    print("input a  b  c number =")
    val (a1,b1,c1) = readLine()!!.split(' ')
    a=a1.toDouble()
    b=b1.toDouble()
    c=c1.toDouble()

    val root1: Double
    val root2: Double
    val output: String

    val determinant = b * b - 4.0 * a * c

    // condition for real and different roots
    if (determinant > 0) {
        root1 = (-b + Math.sqrt(determinant)) / (2 * a)
        root2 = (-b - Math.sqrt(determinant)) / (2 * a)

        output = "root1 = %.2f and root2 = %.2f".format(root1, root2)
    }
    // Condition for real and equal roots
    else if (determinant == 0.0) {
        root2 = -b / (2 * a)
        root1 = root2

        output = "root1 = root2 = %.2f;".format(root1)
    }
    // If roots are not real
    else {
        val realPart = -b / (2 * a)
        val imaginaryPart = Math.sqrt(-determinant) / (2 * a)

        output = "root1 = %.2f+%.2fi and root2 = %.2f-%.2fi".format(realPart, imaginaryPart, realPart, imaginaryPart)
    }

    println(output)
}

輸出畫面
ax^2 + bx + c = 0, where a, b and c are real numbers and a ? 0
input a  b  c number =1 3 10
root1 = -1.50+2.78i and root2 = -1.50-2.78i


ax^2 + bx + c = 0, where a, b and c are real numbers and a ? 0
input a  b  c number =1 -3 -10
root1 = 5.00 and root2 = -2.00

ax^2 + bx + c = 0, where a, b and c are real numbers and a ? 0
input a  b  c number =1 -4 4
root1 = root2 = 2.00;


Kotlin 高中程式練習題 a005: Eva 的回家作業

Kotlin 高中程式練習題 a005: Eva 的回家作業

/*
已知數列的前四項,填出第五項。➔判斷第一項與第二項的關係,
再判斷第二項及第三項的關係,最後判斷第三項及第四向的關係
➔迴圈(☆解題關鍵)

已經知道這些數列只可能是等差或等比數列 ➔後項減前項
若保持一定值(公差)則為等差數列,不保持一定值則為等比數列
➔ 判斷後項除前項(公比)➔if/else(☆解題關鍵)
*/

var a1: Double =0.0
var a2: Double =0.0
var a3: Double =0.0
var a4: Double =0.0
var a5 : Double =0.0

fun main(args: Array<String>) {
    val (a11,a12,a13,a14) = readLine()!!.split(' ')
    a1=a11.toDouble()
    a2=a12.toDouble()
    a3=a13.toDouble()
    a4=a14.toDouble()
 
    if ( (a2-a1) == (a3-a2)  && (a3-a2) == (a4-a3) )
        {
            a5 = (a4+(a4-a3))
            print("a1 a2 a3 a4 a5 = $a1 $a2 $a3 $a4 $a5")
        } 
    else  if ( (a2/a1) == (a3/a2) && (a3/a2)== (a4/a3) )
        {
            a5= a1* Math.pow( (a4/a3),4.0)
            print("a1 a2 a3 a4 a5 = $a1 $a2 $a3 $a4 $a5")
        }
    else
        println("the a5 = NaN")
}


輸出畫面
1 2 4 8
a1 a2 a3 a4 a5 = 1.0 2.0 4.0 8.0 16.0

16 8 4 2
a1 a2 a3 a4 a5 = 16.0 8.0 4.0 2.0 1.0

1 2 3 4
a1 a2 a3 a4 a5 = 1.0 2.0 3.0 4.0 5.0

10 8 6 4
a1 a2 a3 a4 a5 = 10.0 8.0 6.0 4.0 2.0

1 3 5 9
the a5 = NaN

2019年5月22日 星期三

Kotlin 高中程式練習題 a004: 文文的求婚

Kotlin 高中程式練習題  a004: 文文的求婚

    文文為即將出國的珊珊送行,由於珊珊不喜歡別人給文文的那個綽號,意思就是嘲笑文文不夠 聰明,但珊珊沒把握那個綽號是不是事實,所以珊珊決定考驗文文,於是告訴文文說,如果你能在 我回國之前回答我生日那年是不是閏年,則等她回國後就答應他的求婚。文文抓抓腦袋想不出來, 於是決定讓最擅長做運算的電腦來幫忙。
輸入說明
年份
輸出說明
閏年 或 平年

西元年被4整除且不被100整除,或被400整除者即為閏年


var leap = false
var year = 1900
fun main(args: Array<String>) {
    year = readLine()!!.toInt()
   
    if (year % 4 == 0) {
        if (year % 100 == 0) {
            // year is divisible by 400, hence the year is a leap year
            leap = year % 400 == 0
        } else
            leap = true
    } else
        leap = false

    println(if (leap) "$year is a leap year." else "$year is not a leap year.")
}

輸入資料  Stdin Input.....
1900 
1904

Stdin Inputs...


輸出畫面
1900 is not a leap year.

1904 is a leap year.















Kotlin 高中程式練習題 a003: 兩光法師占卜術

Kotlin 高中程式練習題 a003: 兩光法師占卜術

兩光法師時常替人占卜,由於他算得又快有便宜,因此生意源源不絕,時常大排長龍,他想算 得更快一點,因此找了你這位電腦高手幫他用電腦來加快算命的速度。
  他的占卜規則很簡單,規則是這樣的,輸入一個日期,然後依照下面的公式:
M=月
D=日 
S=(M*2+D)%3
得到 S 的值,再依照 S 的值從 0 到 2 分別給與 普通、吉、大吉 等三種不同的運勢


fun main(args: Array<String>) {
    var t=1
    println("Each set of input has two integers, separated by space")
    println("first is Month 1..12 , second is Day 1..31 , the end, enter 3 blanks")
    
    do {
        val (a , b) = readLine()!!.split(' ')
        
        if (parseInt(a) == null)
            {
                t=0
                println("........")
            }    
        else if (parseInt(b) == null)
            {
                t=0
                println("........")
            }    
        else if (a.toInt() !in 1..12)
            {
                t=0
                println("Month 1..12")
            }
        else if (b.toInt() !in 1..31)
            {
                t=0
                println("Day 1..31")
            }
        else    
            {
                val a1=a.toInt()
                val b1=b.toInt()
                val sum=(a1*2+b1)%3
                println("S=(M*2+D)%3= $sum")
                if (sum==0)
                    println("Normal fortune")
                else if (sum==1)
                    println("Luck Fortune")
                else    
                    println("Good luck Fortune")
            }    
    } while (t==1)
}    

fun parseInt(str: String): Int? {
    return str.toIntOrNull()
}


輸出畫面
Each set of input has two integers, separated by space
first is Month 1..12 , second is Day 1..31 , the end, enter 3 blanks
2 3
S=(M*2+D)%3= 1
Luck Fortune
1 1
S=(M*2+D)%3= 0
Normal fortune
12 4
S=(M*2+D)%3= 1
Luck Fortune

Kotlin 高中程式練習題 a002: 簡易加法 請寫一個程式,讀入兩個數字,並求出它們的和。

Kotlin 高中程式練習題 a002: 簡易加法 

請寫一個程式,讀入兩個數字,並求出它們的和。
輸入說明
每一組輸入有兩個整數,絕對值皆小於 106
輸出說明
對於每組輸入,輸出該兩整數的和。


fun main(args: Array<String>) {
    var t=1
    println("Each set of input has two integers, separated by space")
    println("the end, enter 3 blanks")
   
    do {
        val (a , b) = readLine()!!.split(' ')
        if (parseInt(a) == null)
            {
                t=0
                println("........")
            }   
        else if (parseInt(b) == null)
            {
                t=0
                println("........")
            }   
        else
            {
                val a1=a.toInt()
                val b1=b.toInt()
                val sum=a1+b1
                println("The sum of $a1 & $b1 = $sum")
            }   
    } while (t==1)
}   

fun parseInt(str: String): Int? {
    return str.toIntOrNull()
}


輸出畫面
Each set of input has two integers, separated by space
the end, enter 3 blanks 結束按空白三次
12 34
The sum of 12 & 34 = 46
34 67
The sum of 34 & 67 = 101
 
   ........

2019年5月21日 星期二

Kotlin 高中程式練習題 a001: 哈囉

Kotlin 高中程式練習題 a001: 哈囉

學習所有程式語言的第一個練習題 
請寫一個程式,可以讀入指定的字串,並且輸出指定的字串。

使用 online Kotlin https://www.jdoodle.com/compile-kotlin-online

範例輸入

world
C++
mary


範例輸出
hello, world
hello, C++
hello, mary

fun main(args: Array<String>) {
    var line : String?
    do {
        line = readLine()
        if (line == null)
            break
        println("Hello , $line")
    } while (true)
}   

輸出結果
Hello , world
Hello  , C++
Hello , mary




MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構

MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構 這張圖片展示了一個 結合 MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構 (主要透過 Node-RED 進行資料整合)。 系統包含三個核心部分,其運作功能說明如下: 1. ESP32 終端設備(硬體控制層...