Website Summary Files Commits Branches @commit @diff @stats
path: root / Week09 / Exercise03.txt
blob: 4b72eb02d093cc4dd551c55934def8e4803e83de (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
42
43
44
45
46
47
48
49
50
51
52
53
Ще запазим количеството елементи, които машина произвежда в глобална константа
MACHINE_DAY_RECORDS (равна на 8 * 10000 = 80000).

От научните изследвания очакваме, че дефектите в произведените елементи
ще се срещат в "купчини". Тоест ще имаме последователност от изправни
елементи, след това последователност от дефекти и после пак последователност
от изправни елементи и так. нат. (където всяка последователност съдържа поне 2
елемента).

Това означава, че ако имаме много самостоятелни срещания на дефекти, работниците
най-вероятно ги крадат. Аналогично, ако имаме повече редици дефекти отколкото
самостоятелни дефекти, то машината ще е в неизправно състояние.


double defectPercentage(bool outputRecords[MACHINE_DAY_RECORDS]);

    Дефинираме променлива defectiveElements със стойност 0.
    Итерираме линейно през outputRecords, като за всеки един елемент сумираме
    единица към defectiveElements, когато е дефектен.

    Накрая връщаме defectiveElements делено на MACHINE_DAY_RECORDS (като
    конвертираме поне едно от двете към double).

bool isMachineBroken(bool outputRecords[MACHINE_DAY_RECORDS]);

    Дефинираме променливи sequencesOfDefects и countDefects, и двете със
    стойност 0.
    Ако първия елемент е дефектен, добавяме единица и към двете променливи.

    След това итерираме линейно през останалите елементи, като пазим
    предходната стойност в променлива prevDefect (която в началото е истина,
    ако първия елемент е дефектен и лъжа иначе).

    На всеки елемент в итерацията, ако е дефектен, добавяме единица към
    countDefects. Ако е дефектен и предходния не е бил дефектен, тогава
    добавяме единица към sequencesOfDefects.

    Накрая връщаме истина когато sequencesOfDefects е повече от половината от
    countDefects и лъжа иначе.

int main();

    Декларираме масив machineRecords с размер MACHINE_DAY_RECORDS и го попълваме
    с данни от входа.
    След това подаваме machineRecords на defectPercentage. Ако е повече от 0.0003,
    то тогава го подаваме на isMachineBroken.

    Ако резултата е истина, изкарваме съобщение че машината е счупена, иначе че се
    краде от нея.
    Ако резултата от defectPercentage е по-малък от 0.0003, тогава изкарваме че
    машината е в изправно състояние.

    Повтаряме тази процедура общо 5 пъти, за всяка машина.