JirR02 3013d7ad47 Converted everything to orgmode
converted everything to orgmode and added solution to the README files
2025-03-30 23:22:57 +02:00
..
2025-03-30 23:22:57 +02:00

Task 3: Rounding

Task

Implement the following rounding function that rounds a 64-bit floating point number (type `double`) to the nearest 32-bit integer (type `int`). You may assume that the type `double` complies with the IEEE standard 754. The function is only required to work correctly if the nearest integer is in the value range of the type `int`, otherwise, the return value of the function is undefined.

Note: Usage of library rounding functions (standard or others) is not allowed.

// PRE: x is roundable to a number in the value range of type @int@
// POST: return value is the integer nearest to x, or the one further
// away from 0 if x lies right in between two integers.
int round_number(double x);

Write your solution in `rounding.h`.

Hint: In `C++`, when you convert a `float` or `double` to an `int`, the fractional part gets cut off (truncated). Think about how you can use the truncated number to solve the exercise.

Solution

#pragma once

// PRE: x is roundable to a number in the value range of type int
// POST: return value is the integer nearest to x, or the one further
//       away from 0 if x lies right in between two integers.
int round_number(double x) {
  int res;
  if (x < 0)
    res = x - 0.5;
  else
    res = x + 0.5;
  return res;
}

Made by JirR02 in Switzerland 🇨🇭