Hallo welkom terug.
In deze lezing demonstratie Ik wil een oplossing bieden voor ons weerprogramma dat
ik heb gesproken over in onze vorige uitdaging.
Dus laten we de code opstarten blokken maken een project.
ik ga een naam geven dit projectweer.
En nogmaals, slechts een herinnering dit applicatie zal
ons in staat stellen om jaarlijkse totalen en maandelijkse te krijgen gemiddelden voor neerslaghoeveelheden.
Dus helemaal bovenaan, wil je om opmerkingen te geven die u vertellen wat
het programma is.
Nogmaals, dit programma wordt het vinden van jaartotalen, jaargemiddelde
en maandgemiddelde voor meerdere jaren neerslaggegevens, in wezen 5 jaar.
Dus helemaal bovenaan, ik ga om een paar constanten te definiëren, en we zijn niet over
de definitie gegaan preprocessor-richtlijn nog in detail, maar je
bent bekend met dit, het is niet echt ingewikkeld.
Dus ik ga het opnemen en ik wil mooie kwaliteitscode schrijven.
Dus ik ga het gewoon definiëren een die maanden wordt
genoemd, kan gelijk zijn aan 12 en een constante.
U kunt ook de constante . gebruiken modifier, en ik ga er ook een definiëren
die jaren gelijk aan 5 wordt genoemd.
Dat is waar we de hoofdrol in gaan spelen.
En het eerste wat we echt willen te doen in onze hoofdfunctie
is dat we onze array willen maken die: is een tweedimensionale array en we willen
de gegevens initialiseren.
Dus we gaan initialiseren neerslaghoeveelheden,
neerslaggegevens voor 2010, 2011 en 2015 of zoiets.
En dus weten we hoe we een tweedimensionale array,
we hebben zojuist de naam van het
gegevenstype gespecificeerd en Ik denk dat ze een float moeten zijn omdat floats decimalen hebben en neerslaghoeveelheden kunnen decimaal zijn.
Dus we gaan gewoon zeggen zweven, we gaan het regen
noemen en dan gaan we specificeren dat we 5 rijen en 12 kolommen wilt hebben.
Dus we zeggen gewoon jaren wat onze constante en maanden is, en dan gaan we
het initialiseren.
We hebben het van die maat verklaard en nu willen we het initialiseren.
En je kunt het initialiseren door haakjes gewoon zo en dan kun je voor
elke rij tussen haakjes hebben.
Dit zouden we ook kunnen maken array constant als we dat
wilden, maar dat gaan we niet doen.
Nu heb ik dit al gedaan gegevens en ik wil
niet typen wat dit zou zijn.
Dit zou 10 keer 50 of 12 . zijn maal 5, dat zou 60 elementen zijn.
Ik wil geen 60 elementen typen nu omdat het tijd
gaat kosten en jij gaat gewoon om daar te zitten en in slaap te vallen.
Dus ik ga kopiëren en plak in mijn initialisatie
en initialiseer enkele gegevens.
Dit zijn slechts enkele dummy-gegevens; het is misschien niet juist.
Maar je zult zien dat we haakjes hebben voor elke rij en dus hebben we 5 rijen.
We scheiden elke rij door a komma en we hebben deze accolades
daar voor elke rij.
En dan in de gekrulde accolades, scheiden we elke
maandelijkse waarde door een komma.
Dus we scheiden rijen door komma's en we scheiden
waarden binnen rijen door komma's.
Hier is een stelletje jaarlijkse neerslaghoeveelheden.
Dus bijvoorbeeld deze eerste rij zou het jaar 2011 vertegenwoordigen en de eerste kolom
zou januari zijn.
Dus in januari 2011 hebben we heb er 4. 3 duim regen.
Hier beneden als we naar 6 zouden kijken. 7, dit zou zijn voor het jaar 2012, 13.
Voor de maand maart hebben wij had er 6. 7 centimeter regen.
Dus je kunt zien hoe dit vertegenwoordigt jaren en maanden voor regenval.
Nu we alles hebben geïnitialiseerd onze gegevens, kunnen we onze andere lokale
variabelen daadwerkelijk initialiseren of maken.
Dus we gaan gewoon creëren een jaar
en een maand, want dit zal helpen onze jaren te behouden recht en onze maanden recht.
Dus ik zeg gewoon jaar maand
ik ben ga ze op dezelfde regel maken, en ik ga ze ook maken een paar drijft subtotaal en totaal.
Subtotaal zijn jaartotalen; totaal zal de totale regenval zijn, zodat ik
het jaargemiddelde kan krijgen.
En we komen er ook wel achter hoe u maandelijkse gemiddelden kunt krijgen.
Dus het eerste wat ik moet doen doen
is dat ik een for-lus nodig heb die onze . gaat afdrukken regenval voor een bepaald jaar.
Dus eerst ga ik afdrukken op één regel.
Ik ga gewoon het jaar uitprinten, en ik ga een tabblad toevoegen...
voeg er een tabblad aan toe om het beter opgemaakt te maken.
Laten we 2 tabbladen toevoegen, we zullen zien hoe dit ziet er uit zodra ik het laat zien.
En dan ga ik regen zetten, en ik ga dat in inches zetten en ik ga een
regelinvoer toevoegen.
En nogmaals, je zou willen testen dit om te zien hoe het eruit ziet.
En dan ga ik in mijn lus.
Dus wat wil ik doen in volgorde? om de subtotalen voor
elk jaar te berekenen, geef ze weer, ik wil gaan door alle rijen, alle jaren, en dan voor
elk jaar, I ik wil alle maanden doornemen omdat ik de
maanden moet optellen.
Dus onze buitenste lus gaat beginnen af met het eerste jaar, dat is 2011,
maar het is eigenlijk 0 binnen de array omdat arrays 0 zijn geïndexeerd.
En ik ga ook initialiseren een andere lokale variabele hier binnen.
Vergeet niet dat for-loops erg flexibel zijn.
Je kunt eigenlijk andere maken variabelen in het for-statement.
Ik hoefde geen variabele te maken die buiten de for-instructie wordt
gebruikt op regel 19 of 20.
Dus hier ga ik gewoon creëren een variabele genaamd totaal of initialiseer
mijn totale variabele.
En dan ga ik door tot mijn jaar is minder dan mijn jaren,
wat constant is, en ik ga verhogen mijn tegenloopregeling variabel jaar.
Dus het jaar en de maand zijn lus controlevariabelen op regel 19.
En dit gaat vertegenwoordigen mijn buitenste lus.
Het is een tweedimensionale array, dus ik ben zal ook een binnenlus nodig hebben.
En mijn innerlijke lus gaat elke maand door te gaan.
Dus hier ga ik zeggen maand is gelijk aan 0, subtotaal voor elke maand is
ook gelijk aan 0 initialiseer het.
En ik ga door tot Ik ben klaar met al mijn maanden.
En ik ga verhogen mijn luscontrolevariabele, en dit zal mijn binnenste
lus zijn.
Dus in mijn innerlijke lus kan ik eigenlijk de subtotalen bepalen, hoef ik niets
weer te geven.
Dus alles wat ik ga doen in mijn binnenste
lus is dat ik voor elk jaar ga toevoegen aan mijn subtotaal, mijn subtotaal is mijn jaartotaal.
En hier ga ik gewoon heen om toegang te krijgen tot de array.
Mijn arraynaam wordt regen.
Dus ik kan gewoon zeggen regen sub jaar, dus dit zou in eerste instantie allemaal voor
2011 zijn omdat mijn uiterlijke lus en vervolgens voor elke maand.
En ik voeg eraan toe.
Dus ik zeg subtotaal is gelijk aan subtotaal plus regen plus de matrixwaarde.
Dus de binnenste lus gaat door alle maanden voor dat jaar maken
er een subtotaal van.
Nu wil ik de . weergeven subtotaal buiten de lus
omdat ik alleen wil weergeven het subtotaal 5 keer voor 5 jaar.
Dus hier kan ik een leuke kleine print statement dat helpt
bij het formatteren van de gegevens en ook helpt om het goed weer te geven.
Dit wordt nu de jaar en het subtotaal.
Dus we zullen waarschijnlijk willen toevoegen naar het subtotaal, zou ik zeggen een paar tabbladen, maar we zullen zien wat het lijkt
erop, dus slash t slash t.
En dan het enige andere we willen doen is
dat we willen toevoegen aan het totaal omdat we moeten heb het totaal voor alle jaren.
Dus hier kunnen we gewoon zeggen totaal plus is gelijk aan subtotaal.
En dan zie je het subtotaal wordt eigenlijk elke keer dat je naar de binnenste
lus gaat opnieuw geïnitialiseerd, dus dat hoeven we niet terug te draaien.
En hier willen we gewoon maken zeker dat de inspringing goed is.
Nogmaals, let op mijn inspringing voor elk blok, en ik heb de beugels op 27 en
29 eigenlijk niet nodig omdat het een enkele verklaring is, maar ik ga
ze daar laten.
Nu ik dat gedaan heb nadat ik de jaarlijkse regenval of de regenval voor
elk jaar uitgeprint, ik kan nu het jaargemiddelde weergeven omdat ik genoeg gegevens heb, ik
heb het totaal regenval in elke maand regenval.
Dus hier ga ik het gewoon laten zien het jaargemiddelde, dat is gewoon
het totaal gedeeld door de jaren.
Dus voeg hier nog een printstatement toe.
Nogmaals, nog een goede plek om te testen.
Dus laten we doorgaan en bouwen dit, zorg ervoor dat we
geen fouten hebben, want het is veel code.
En we hebben een niet aangegeven variabel jaar.
Wanneer u een compilerfout ziet, het is soms een verkeerde voorstelling van
wat de werkelijke fout is.
Dus in dit geval vertelde het me dat ik had een fout op regel 19, maar
de oorzaak van de fout was: de vorige verklaring die geen
puntkomma aan het einde had.
Laten we dit uitvoeren en kijken of we kan de jaarlijkse regenval zien, zien
hoe deze is opgemaakt.
Dus hier gaan we jaar 2010 regenval in inches.
Dus we voegen waarschijnlijk te veel tabbladen toe nadat we de subtotalen hebben weergegeven, is
het jaargemiddelde 39. 4.
Dus dat willen we waarschijnlijk oplossen door hier gewoon een tabblad te verwijderen.
Onthoud dat je een kunt toevoegen tab in uw uitvoer met behulp
van escape sequence slash t.
Dus dat ziet er in ieder geval goed uit.
Nu moeten we er nog een hebben lus die de
maandelijkse gemiddelden gaat weergeven.
Dus voordat ik de maandelijkse weergeef gemiddelden Ik wil
alles op één regel afdrukken.
Dus ik ga gewoon uitprinten wat informatie met behulp van printf.
Ik ga mijn . uitprinten maandelijkse gemiddelden en voeg 2-regelige
feeds toe voor een betere opmaak.
Nnd dan ga ik printen uit mijn andere informatie.
We gaan gewoon uit elkaar de maanden met een paar spaties en voeg dan een nieuwe regel
toe.
Dus we gaan hetzelfde doen wanneer we onze for-lus doorlopen.
Nu hebben we nog een for-lus nodig nu om de maandelijkse gemiddelden te krijgen.
Dus in deze for-lus, de buitenste lus gaat beginnen bij de maand.
In plaats van langs elke rij te gaan, wat? Ik
ga hier doen, ik ga elke kolom doornemen omdat Ik heb het maandgemiddelde nodig.
Dus ik ga beginnen en ik ben ga
door elke kolom die januari februari is Maart vertegenwoordigen kolommen.
En voor elke kolom ga ik ga door
alle jaren voor die kolom en dan kan ik het subtotaal gebruiken en het totaal weer variabelen.
Dus hier ga ik zeggen maand is gelijk aan 0, maand is kleiner
dan maanden en maand plus plus.
En dan is mijn innerlijke lus gaat door de jaren heen.
Dus hier ga ik gewoon heen om te zeggen voor jaar is gelijk aan 0.
En onthoud dat ik ook wil om mijn subtotaal opnieuw te initialiseren.
Dus hier ga ik zeggen subtotaal is gelijk aan
0 omdat ik bij 0 wil beginnen zodra ik mijn nieuwe jaar heb, ga door alle
jaren en verhoog dan het jaar, de sprongcontrolevariabele.
En hier binnen wil ik voer mijn subtotaal in dat net gelijk zal zijn aan mijn
array voor een jaar en maanden.
En dus is het belangrijk om begrijpen wat hier aan de hand is, is dat we veranderen zoals we
zijn identiteit via de array.
En de eerste lussen die we hebben herhaald door elke rij te doorlopen en naar elke
kolom te kijken.
In deze gaan we echt door
elke kolom en kijken naar die specifieke rij omdat we maandgemiddelden berekenen.
Dus we krijgen het subtotaal, en dan hebben we wil gewoon ons subtotaal afdrukken, gedeeld
door jaren voor die maand.
Zodat het overeenkomt met onze output op regel 37.
Dus we gaan het gewoon doen zoiets als dit, en we
gaan het doen met 4. 1 formaat, subtotaal gedeeld door jaren.
En we voegen een paar spaties toe dus die het zo goed mogelijk proberen uit
te lijnen, willen we misschien nog een spatie toevoegen.
En dan nadat we hebben afgedrukt alles eruit, we kunnen gewoon een regelinvoer toevoegen voor de
leesbaarheid, en we zijn klaar.
En dat geeft ons de maandelijkse gemiddelden omdat we toen alle subtotalen kregen we hebben het
gedeeld door de jaren.
Laten we dit nu bouwen, geen fouten en voer het uit.
En nu zien we extra output voor maandtotalen
of maandgemiddelden.
Dus hier zien we dat maandelijks gemiddelden en het formaat komt
niet echt goed overeen.
Het hangt er dus allemaal van af, want van de output van het personage.
We willen eigenlijk waarschijnlijk verminderen de ruimte, voeg daar maar één ruimte toe, laten we eens kijken of
dat beter werkt.
Als we het nu uitvoeren, kijken of het eruit ziet beter omdat
je elke maand wilt kunnen vastbinden met de gemiddelden, dat is een beetje beter.
We komen er nog steeds een beetje vanaf, want de maanden zijn 3
tekens en de gehele getallen zijn 2.
We hebben het vooral verknald tussen oktober en november omdat er maar
één plek is.
Nu kan ik dat oplossen door gewoon zo gaan.
Dus dat zou moeten maken het formaat allemaal leuk.
Maar je kunt zien hoe we gewoon zijn het afdrukken van
neerslaghoeveelheden voor jaren en maandgemiddelden.
Ik hoop dat je hiermee vertrouwd bent geraakt tweedimensionale matrices, hoe ze doorlopen, hoe
toe te wijzen arrays en hoe u toegang krijgt tot gegevens.
Dank u.