[Solved] CSI2120 Lab 2
5.0
1 customer review
Digital download
Digital download
$25.00
Message us on WhatsApp for payment or download support.
Open WhatsApp
type dog struct { name string race string female bool}
Write a method that will rename a dog which can be used as follows:
func main() { fido := dog {"Fido", "Poodle", false } fido.rename("Cocotte")}
package mainimport ( "fmt" "time" "strconv")var i intfunc makeCakeAndSend(cs chan string) { i = i + 1 cakeName := "Strawberry Cake " + strconv.Itoa(i) fmt.Println("Making a cake and sending ...", cakeName) cs <- cakeName //send a strawberry cake}func receiveCakeAndPack(cs chan string) { s := <-cs //get whatever cake is on the channel fmt.Println("Packing received cake: ", s)}func main() { cs := make(chan string) for i := 0; i<3; i++ { go makeCakeAndSend(cs) go receiveCakeAndPack(cs) //sleep for a while so that the program doesn't exit //immediately and output is clear for illustration time.Sleep(1 * 1e9) }}
package mainimport "fmt"import "math"import "math/rand"type Series struct { a, b float64}func (s Series) add(t, TP int) float64 { return s.a*math.Sin(2.0*math.Pi*float64(t)/float64(TP)) + s.b*math.Cos(2.0*math.Pi*float64(t)/float64(TP))}func fourier(c [32]Series, t, TP int) (res float64) { res = c[0].a for n := 1; n < 32; n++ { res += c[n].add(t, TP) } return}func main() { TP := 4 sz := 1 var res float64 // Enter size of fourier series fmt.Print("Size of series (1 ... 512): ") // Depending on your environment you may have to remove
in the scanf _, err := fmt.Scanf("%d
", &sz) for err != nil || sz < 1 || sz > 512 { fmt.Println("Must be positive integer (1...512).") fmt.Println("Size of series (1 ... 512): ") _, err = fmt.Scanf("%d
", &sz) } fmt.Printf("Size: %d
", sz) var c [32]Series for t := 0; t < TP; t++ { for k := 0; k < 32; k++ { c[k].a = rand.Float64() c[k].b = rand.Float64() } res += fourier(c, t, TP) fmt.Printf("%f ", res) fmt.Println() }}
sema below) to signal the use of the variable Count by the functions increment and decrement.
package mainimport ( "fmt" "time")var ( Count int = 0 nFunctions int = 2)var sema = make(chan int)func main() { ch := make(chan int) fmt.Printf("Count = %d
", Count) go increment(ch, 1000) go decrement(ch, 1000) for i := 0; i < nFunctions*1000; i++ { fmt.Printf("Waiting %d
", Count ) <-ch } fmt.Printf("Count = %d
", Count)}func increment(ch chan int, nSteps int) { for i := 0; i < nSteps; i++ { cnt := Count time.Sleep(3 * time.Millisecond) Count = cnt + 1 ch <- 1 } return}func decrement(ch chan int, nSteps int) { for i := 0; i < nSteps; i++ { cnt := Count time.Sleep(2 * time.Millisecond) Count = cnt - 1 ch <- 1 } return}