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 пъти, за всяка машина.
|