JirR02 fec3fd845f Exercise 11 & Bonus 2
Added Exercise 11 & Bonus 2 to Repo
Added Signature to Exercise 10
2025-05-19 11:34:47 +02:00
..
2025-05-19 11:34:47 +02:00

Task 2: [Exam 2022.08 (ITET/MATH/PHYS/RW)] max difference

Task Description

Given the iterators to a vector composed of integers between 0 and 2147483647 (included), return the highest absolute difference between two neighbouring elements. You can assume that the given range always includes at least two elements.

Note: The vector is propagated with values that are provided at the beginning of the execution. The input accepts a sequence of numbers terminated with -1.

Function

Implement the function largest_difference in functions.h according to its pre- and postconditions.

Rules:

  • The functions must satisfy their respective postconditions.
  • You are not allowed to change the function signatures.
  • You are not allowed to use additional libraries.

Hints:

  • You do not need to check the pre- and postconditions (no asserts necessary).
  • The program must compile in order for the autograder to work.
  • We recommend strongly to submit partial solutions as soon they are successful.

Solution

#pragma once

#include <vector>
using iterator = std::vector<int>::const_iterator;

// PRE:   iterator pair [begin,end) specifies a valid range
//        within a vector (begin is included, end is not) containing numbers
//        in [0, 2147483647]. The range in the vector comprises at least two
//        elements.
// POST:  returns the largest absolute difference between two neighbouring
// numbers in the vector.
//
// Example:
//  * [1, 5, 2, 5, 7, 6] ~~> 4
//  * [2, 9, 1] ~~> 8
int largest_difference(iterator begin, iterator end) {
  int max_dif = 0;
  end = --end;
  while (begin != end) {
    int val1 = *begin;
    int val2 = *++begin;
    if (std::abs(val2 - val1) > max_dif)
      max_dif = std::abs(val2 - val1);
  }
  return max_dif;
}

Made by JirR02 in Switzerland 🇨🇭