Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Taulukon Dynaaminen Varaaminen | Dynaaminen Muistinvaraus
C++-Osoittimet ja Viittaukset
Osio 4. Luku 3
single

single

bookTaulukon 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

main.cpp

copy
12345678910
#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(&currentTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Note
Huomio

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.

Tehtävä

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.

  1. Alusta muuttujat sum arvoon 0, minTemp taulukon ensimmäiseen alkioon ja maxTemp taulukon ensimmäiseen alkioon.
  2. Käy taulukko temps läpi for-silmukalla, jossa indeksi i kulkee välillä 0–hours.
  3. Jokaiselle alkiolle temps[i] lisää sen arvo muuttujaan sum.
  4. Jos temps[i] on pienempi kuin minTemp, aseta temps[i] muuttujaan minTemp.
  5. Jos temps[i] on suurempi kuin maxTemp, aseta temps[i] muuttujaan maxTemp.
  6. Laske keskilämpötila jakamalla sum arvolla hours ja tallenna se muuttujaan average.
  7. Tulosta minTemp, maxTemp ja average konsoliin.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt