/*
Coding Exercise #1

Consider the following declarations:

    var i int = 3
    var f float64 = 3.2

Write a Go program that converts i to float64 and f to int.

Print out the type and the value of the variables created after conversion.


package main

import "fmt"

func main() {
	var i int = 3
	var f float64 = 3.2

	fmt.Printf("Type of i is %T and f is %T\n", i, f)

	i1 := float64(i)
	f1 := int(f)
	fmt.Printf("Type of i1 is %T and value is %f\n", i1, i1)
	fmt.Printf("Type of f1 is %T and value is %d\n", f1, f1)
}
*/

/*
Coding Exercise #2

Consider the following declarations:

    var i = 3
    var f = 3.2
    var s1, s2 = "3.14", "5"

Write a Go program that converts:

1. i to string (int to string)

2. s2 to int (string to int)

3. f to string (float64 to string)

4. s1 to float64  (string to float64)

5. Print the value and the type for each variable created after conversion.

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var i = 3
	var f = 3.2
	var s1, s2 = "3.14", "5"

	// 1. int to string
	s := strconv.Itoa(i)
	fmt.Printf("s Type is %T, s value is %q\n", s, s)

	// 2. string to int
	is, err := strconv.Atoi(s2)
	if err == nil {
		fmt.Printf("i type is %T, i value is %v\n", is, is)
	} else {
		fmt.Println("Can not convert string to int.")
	}

	// 3. float64 to string
	ss1 := fmt.Sprintf("%f", f)
	fmt.Printf("ss1's type: %T, ss1's value: %s\n", ss1, ss1)

	// 4. string to float64
	f1, err1 := strconv.ParseFloat(s1, 64)
	if err1 == nil {
		fmt.Printf("f1's type: %T, f1's value: %v\n", f1, f1)
	} else {
		fmt.Println("Cannot convert string to float64.")
	}

}
*/

/*
Coding Exercise #3

There are some errors in the following Go program. Try to identify the errors, change the code and run the program without errors.

    package main

    import "fmt"

    func main() {
        x, y := 4, 5.1

        z := x * y
        fmt.Println(z)

        a := 5
        b := 6.2 * a
        fmt.Println(b)

    }

package main

import "fmt"

func main() {
	x, y := 4, 5.1

	z := float64(x) * y
	fmt.Println(z)

	a := 5
	b := 6.2 * float64(a)
	fmt.Println(b)

}
*/

/*
Coding Exercise #4

Create a Go program that computes how long does it take for the Sunlight to reach the Earth if we know that the distance from the Sun to Earth is 149.6 million km and the speed of light  is 299,792,458 m / s

The formula used is: time = distance / speed

package main

import "fmt"

func main() {
	d := 149600000 * 1000
	s := 299792458
	fmt.Printf("Speed of light is %d\n", s)
	fmt.Printf("Distance from Sun to Earth is %d\n", d)
	t := d / s
	fmt.Printf("Sunlight reaches Earth in %v seconds\n", t)
}
*/

/*

Coding Exercise #5

Write the correct logical operator (&&, || , !) inside the expression so that result1 will be false and result2 will be true.

Program source code: https://play.golang.org/p/74SCleChC20

    package main

    import "fmt"

    func main() {
        x, y := 0.1, 5
        var z float64

        // Write the correct logical operator (&&, || , !)
        // inside the expression so that result1 will be false and result2 will be true.

        result1 := x < z         int(x) != int(z)
        fmt.Println(result1)

        result2 := y == 1 * 5        int(z) == 0
        fmt.Println(result2)

    }
*/
    package main
     
    import "fmt"
     
    func main() {
        x, y := 0.1, 5
        var z float64
     
        // Write the correct logical operator (&&, || , !) 
        // inside the expression so that result1 will be false and result2 will be true.
     
        result1 := x < z     ||    int(x) != int(z)
        fmt.Println(result1)
        
        result2 := y == 1 * 5   ||     int(z) == 0
        fmt.Println(result2)
        
    }