Achteraf blijkt het verwerken van de afzonderlijke metingen niet zo nuttig als verwacht: er zit gewoon te veel ruis in de gegevens.
In plaats daarvan neem je de som over een venster dat over drie opeenvolgende metingen loopt. Laat ons opnieuw dezelfde metingen als voorbeeld nemen:
199 A
200 A B
208 A B C
210 B C D
200 E C D
207 E F D
240 E F G
269 F G H
260 G H
263 H
Begin met het vergelijken van de sommen over het eerste en het tweede venster dat over drie opeenvolgende metingen loopt. De metingen in het eerste venster zijn gemarkeerd met A
(199
, 200
, 208
); hun som is \(199 + 200 + 208 = 607\). Het tweede venster is gemarkeerd met B
(200
, 208
, 210
); de som is \(618\). De som van de metingen in het tweede venster is groter dan de som van de metingen in het eerste venster, die deze eerste vergelijking levert een toename op.
Jouw opdracht is nu om te tellen hoeveel keer dat de som van de metingen in het venster van drie opeenvolgende metingen toeneemt ten opzichte van de vorige som. Je moet dus A
met B
vergelijken, daarna moet je B
met C
vergelijken, dan C
met D
, enzoverder. Stop wanneer er niet meer genoeg metingen zijn om nog een nieuwe som van drie metingen te maken.
In bovenstaand voorbeeld zijn dit de sommen binnen elk venster van drie opeenvolgende metingen:
A: 607 (NVT - geen voorgaande som)
B: 618 (toename)
C: 618 (geen verandering)
D: 617 (afname)
E: 647 (toename)
F: 716 (toename)
G: 769 (toename)
H: 792 (toename)
In dit voorbeeld zijn er 5
sommen die groter zijn dan de vorige som.
Bepaal de som over een venster dat over drie opeenvolgende metingen loopt. Hoeveel van die sommen zijn groter dan de vorige som?. Bepaal dit op de volgende manier:
sonar
waaraan de padnaam (char*
) moet doorgegeven worden van een tekstbestand met het rapport van een sonar. Elke regel van het rapport bevat een meting van de diepte van de zeebodem. De functie moet het aantal sommen (int
) teruggeven dat groter is dan de vorige som binnen een venster dat over drie opeenvolgende metingen loopt.In deze interactieve sessie gaan we ervan uit dat de tekstbestanden sweep01.txt
1 en sweep02.txt
2 zich in de huidige directory bevinden.
> sonar("sweep01.txt")
5
> sonar("sweep02.txt")
1737
Jordan Ranson (@jordanranson3) animeerde zijn oplossing.