Hi there! Today is the day 2 challenge. The goal is to compute the total cost of a meal given the meal price, tip percent and tax percent. Usually when I go to a restaurant in Brazil I only care about the first two, as taxes are already included in the meal price. Again: this is pretty basic, but as I am used to other languages syntax this simple tutorial from HackerRank is being quite useful to keep me training everyday and learn Go, so it is awesome! Now, let’s see my solution:

package main

import (
 "fmt"
 "math"
)

// Round to nearest integer
func Round(f float64) uint32 {
 up := math.Floor(f)
 down := math.Ceil(f)
 if math.Abs(f-up) < math.Abs(f-down) {
  return uint32(up)
 }
 return uint32(down)
}

func main() {
 mealCost := 0.0
 tipPercent := 0.0
 taxPercent := 0.0

  // Read variables in sequence
  // and separated by new lines
  //I have never tried this in C,
  //but I think it probably works
 fmt.Scanf("%v\n%v\n%v\n", &mealCost,
     &tipPercent, &taxPercent)

  // Answer is the total cost rounded
  // to the nearest dollar
 totalCost := Round(mealCost *
    (1.0 + (tipPercent+taxPercent)/100.0))
 fmt.Printf("The total meal cost
    is %v dollars.\n", totalCost)
}

Today I didn’t find a round function in the math package. I don’t know if Google is going to implement it, but I had this custom implementation to get the meal cost to the nearest dollar. I forgot about Scanf and tried Scanln first with the same arguments, but of course it didn’t work and that’s why my solution uses Scanf.

That’s all for day 2. Thanks for reading!