Sometimes the conditions may be very complex, so they can require a long bool expression or a sequence of conditions. Let's take a look at a few examples.
Write a program that checks whether a point {x, y} is placed onto any of the sides of a rectangle {x1, y1} – {x2, y2}. The input data is read from the console and consists of 6 lines: the decimal numbers x1, y1, x2, y2, x and y (as it is guaranteed that x1 < x2 and y1 < y2). Print "Border" (if the point lies on any of the sides) or "Inside / Outside" (in the opposite case).
Input | Output | Input | Output |
---|---|---|---|
2 -3 12 3 12 -1 |
Border | 2 -3 12 3 8 -1 |
Inside / Outside |
The point lies on any of the sides of the rectangle if:
- x coincides with x1 or x2 and at the same time y is between y1 and y2 or
- y coincides with y1 or y2 and at the same time x is between x1 and x2.
The previous evaluation might be simplified in the following way:
The second way with the additional Boolean (bool) variables is longer, but much more understandable than the first one, isn't it? We recommend when you write Boolean conditions to make them easy to read and understand, instead of making them short. Use additional variables with meaningful names, if needed. The names of the bool variables have to hint what the value that is kept inside them represents.
What remains is to finish writing the code to print “Inside / Outside”, if the point is not onto any of the sides of the rectangle.
After you finish writing the solution, you can test it here: https://judge.softuni.org/Contests/Practice/Index/508#5.
A fruit shop during week days sells in the following prices:
Fruit | Price |
---|---|
banana apple orange grapefruit kiwi pineapple grapes |
2.50 1.20 0.85 1.45 2.70 5.50 3.85 |
During the weekend days the prices are higher:
Fruit | Price |
---|---|
banana apple orange grapefruit kiwi pineapple grapes |
2.70 1.25 0.90 1.60 3.00 5.60 4.20 |
Write a program that reads from the console a fruit (banana / apple / …), a day of the week (Monday / Tuesday / …) and a quantity (a decimal number) and calculates the price according to the prices from the tables above. The result has to be printed rounded up to 2 digits after the decimal point. Print “error” if it is an invalid day of the week or an invalid name of a fruit.
Input | Output | Input | Output |
---|---|---|---|
orange Sunday 3 |
2.70 | kiwi Monday 2.5 |
6.75 |
Input | Output | Input | Output |
---|---|---|---|
grapes Saturday 0.5 |
2.10 | tomato Monday 0.5 |
error |
Watch the video to learn how to solve the "Fruit Store" problem: https://youtu.be/6vZZzil9xBU.
Test your solution here: https://judge.softuni.org/Contests/Practice/Index/508#6.
A company is giving the following commissions to its traders according to the city, in which they are working and the volume of sales s:
City | 0 <= s <= 500 | 500 < s <= 1000 | 1000 < s <= 10000 | s > 10000 |
---|---|---|---|---|
Sofia Varna Plovdiv |
5% 4.5% 5.5% |
7% 7.5% 8% |
8% 10% 12% |
12% 13% 14.5% |
Write a program that reads the name of a city (string) and the volume of sales (decimal number) and calculates the rate of the commission fee. The result has to be shown rounded up to 2 digits after the decimal point. When there is an invalid city or volume of sales (a negative number), print "error".
Input | Output | Input | Output | Input | Output |
---|---|---|---|---|---|
Sofia 1500 |
120.00 | Plovdiv 499.99 |
27.50 | Paris -50 |
error |
Watch the video about the "Trade Fees" problem and its solution: https://youtu.be/QqKBLJ4JzJ0.
When reading the input, we could convert the city into small letters (with the function .ToLower()
). Initially we set the commission fee to -1
. It will be changed if the city and the price range are found in the table of commissions.
To calculate the commission according to the city and volume of sales, we need a few nested if
statements, as in the sample code below:
Test your solution here: https://judge.softuni.org/Contests/Practice/Index/508#7.