Institute of Computer Science
  1. Courses
  2. 2024/25 spring
  3. Programming in C++ (MTAT.03.158)
ET
Log in

Programming in C++ 2024/25 spring

  • Home
  • Labs
    • Submission of solutions
  • Examination times
  • Guides
  • References

Programming in C ++

Lab 6: The preprocessor, testing - Homework

Important! Please submit the solution as a single text file containing answers and program code. Use a common text format (docx,pdf,etc.). Tasks are submitted via the form on the module's website. Solutions will not be accepted via email. If you have any questions, please contact the internship supervisor. There are 14 days to solve the task.

Deadline 12.5.2024 23:59:59

Task 1 - Constants (2 point)

Change this program so that PI is defied as a constant using the preprocessor:

#include <stdio.h>

int main()
{
    float radius, pi, area;
    pi = 3.14159;
    radius = 12;
    area = pi * radius * radius;

    printf("Area = %f", area);

    return 0;
}

Explain what is the difference compared to making the variable pi a const (short explanation enough).

Task 2 - Macros (3 point)

Write a program which calculates the minimum or the maximum of two numbers, similar to what we did in lab 1. The program should accept three command line paramters, two float numbers and a string. If the string is min, the minimum of the numbers should be printed, for max the maxium, else and error message should be printed. Do this by using a macro which prints either the number or the error message. Notice that the macro can do the print directly. The wording implied that a value should be returned. This is possible, but not as straighforward as printing directly.

Task 3 - Equivalence classes and boundary value analysis (3 point)

We are writing an application for ordering pizza online. One of the values is the number of pizzas of one type the customer wants to order. We have decided to accept integer values from 1 to 99 as valid input here. The input comes from a web form, where the value is entered in a text field, therefore it can be anything. For this situation, suggest a separation of the input into equivalence classes. Your separation should be useful for the problem. Then, for each equivalence class, give the values you suggest to use for testing, using boundary value analysis.

Task 4 - Using doctest (2 point)

Write a short program which contains a function accepting a string as input and returning the input as an integer if it is a number from 1 to 99, else throws an exception of type string saying "invalid input". Then add tests for all values you have found as test values in the previous exercise. Check for an exception if the input is invalid.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment