## 1 Osoittimen käyttö aliohjelmaparametrina **Tehtävä:** Tehtävänäsi on laatia funktion "muuta_lukua" prototyyppi ja funktion toteutus. Seuraavassa näet pääohjelman, joka käyttää funktiota hyväkseen: ``` #include using namespace std; // tähän funktion "muuta_lukua" prototyyppi // ja prototyypin perään funktion toteutus int main() { int luku = 2; cout << "Luku ohjelman alussa: " << luku << endl; muuta_lukua(&luku); cout << "Luku ohjelman lopussa: " << luku << endl; return 0; } ``` Pääohjelmassa alustetaan kokonaislukumuuttuja "luku", jonka osoite välitetään funktiolle "muuta_lukua". Funktion tehtävänä on kysyä esimerkkitulosteen mukaisesti korvaavaa lukua, joka sijoitetaan parametrina saadun osoitteen epäsuorasti viittamaan muuttujaan. Tarkastelemalla edellistä pääohjelmaa, sekä esimerkkitulostetta näet, kuinka tarvittava funktio on laadittava. Huomaa, että tehtävänäsi on kirjoittaa VAIN funktion prototyyppi ja tämän perään funktion toteutus. Älä siis kopioi esitettyä pääohjelmaa vastaukseesi. Example output: ``` Luku ohjelman alussa: 2 Anna korvaava luku: 4 Luku ohjelman lopussa: 4 ``` **Vastaus:** ``` #include using namespace std; // Prototype int muuta_lukua(int* luku); // Function definition int muuta_lukua(int* luku) { // int *p_luku = luku; cout << "Anna korvaava luku: "; // cin >> *p_luku; cin >> *luku; if (cin.fail()) exit(1); return *luku; } //** Pre-defined code in the assignment **// int main() { int luku = 2; cout << "Luku ohjelman alussa: " << luku << endl; muuta_lukua(&luku); cout << "Luku ohjelman lopussa: " << luku << endl; return 0; } //** ---------- ---------- ---------- **// ```