Website Summary Files Commits Branches @commit @diff @stats
path: root / Week09 / Exercise02.txt
blob: 68e0604db650b40b37647b30b3114997e28cac73 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Ще запазим броя автобусни линии в глобална константа LINES и
максималния брой спирки в глобална константа MAX_STOPS.

Не ни е дадена връзка между посока на пътуване на автобусите.
Ще допуснем, че те не са значими за нашето решение.


int maxSeatsTaken(int gettingOn[MAX_STOPS], int gettingOff[MAX_STOPS]);

    Линейно итерираме през gettingOn и gettingOff едновременно (един цикъл с един индекс).
    Започвайки от първата спирка (на индекс 0), събираме броя хора, които са се качили и
    изваждаме броя които са слезли.

    Разликата добавяме в int променлива totalSeats, която се инициализира с 0.
    Аналогично пазим променлива maxSeats (също инициализирана на 0). На всяка итерация,
    след като добавим към totalSeats, проверяваме дали е повече от maxSeats.
    Ако е - записваме стойността в maxSeats.

    Накрая връщаме maxSeats.

unsigned int seatsToBusSize(int seats);

    Дефинираме променлива busSize със стойност 14.
    С цикъл, докато busSize е по-малко от входните seats,
    добавяме 6 към busSize.

    Когато стигнем нужната бройка, цикъла спира и връщаме busSize.

int main();

    Декларираме две матрици, gettingOn и gettingOff, с размери LINES на MAX_STOPS.
    От входа получаваме, за всяка линия, първо броя спирки, след това алтерниращо
    колко хора се качват и колко хора слизат.
    Попълваме съответните стойности в двете матрици. Ако броя спирки е по-малко от
    максимума (17), тогава попълваме останалите клетки с нули.

    Итерираме през всички линии.
    За всяка линия, извикваме maxSeatsTaken, като подаваме съответните "подмасиви"
    от gettingOn и gettingOff на индекс текущата линия.
    Резултата го подаваме на seatsToBusSize и от него изкарваме размера на автобуса
    на екрана.