single
Taulukon Dynaaminen Varaaminen
Pyyhkäise näyttääksesi valikon
Ennen kuin tarkastelemme, miksi dynaaminen varaaminen on tarpeellista, kerrataan nopeasti staattisten ja dynaamisten taulukoiden ominaisuudet:
Staattinen taulukko
- Kiinteä koko: kun taulukko on määritelty, sen koko on kiinteä eikä sitä voi muuttaa ohjelman suorituksen aikana;
- Muistin varaus käännösaikana: staattisen taulukon tarvitsema muisti varataan käännösaikana.
Dynaamiset taulukot
- Muokattavissa oleva koko: dynaamiset taulukot mahdollistavat koon muuttamisen ohjelman suorituksen aikana, tarjoten joustavuutta ohjelman vaatimusten muuttuessa;
- Muistin varaus ajonaikaisesti: muisti dynaamisille taulukoille varataan ohjelman suorituksen aikana.
Staattisen lähestymistavan rajoitukset
Tarkastellaan ohjelmaa, joka pyytää käyttäjää syöttämään suoritusarvosanat jokaiselta päivältä joka on kulunut tässä kuussa.
Valitettavasti tätä ei voida toteuttaa staattisella taulukolla:
main.cpp
12345678910#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(¤tTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Tämä aiheuttaa käännösvirheen, koska day_passed ei ole vakioarvo vaan se riippuu kuukauden nykyisen päivän ajonaikaisesta arvosta.
Sen sijaan, että käyttäisimme staattista taulukkoa, meidän täytyy käyttää dynaamisesti varattua taulukkoa.
Pyyhkäise aloittaaksesi koodauksen
Kuvittele työskenteleväsi meteorologina, jonka tehtävänä on analysoida lämpötilalukemia päivän aikana.
Tulet käyttämään osoittimia ja funktioita, jotka käsittelevät dynaamisesti varattuja taulukoita.
- Alusta muuttujat
sumarvoon 0,minTemptaulukon ensimmäiseen alkioon jamaxTemptaulukon ensimmäiseen alkioon. - Käy taulukko
tempsläpifor-silmukalla, jossa indeksiikulkee välillä 0–hours. - Jokaiselle alkiolle
temps[i]lisää sen arvo muuttujaansum. - Jos
temps[i]on pienempi kuinminTemp, asetatemps[i]muuttujaanminTemp. - Jos
temps[i]on suurempi kuinmaxTemp, asetatemps[i]muuttujaanmaxTemp. - Laske keskilämpötila jakamalla
sumarvollahoursja tallenna se muuttujaanaverage. - Tulosta
minTemp,maxTempjaaveragekonsoliin.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme