#include <iostream.h> long asd = 0; long nelio = 0; long kuutio = 0; long nelio_ali(long asd) { nelio = asd^2; return nelio; } long kuutio_ali(long asd) { kuutio = asd^3; return kuutio; } void main() { cout << "Anna kokonaisluku.\n"; cin >> asd; nelio = nelio_ali(asd); kuutio = kuutio_ali(asd); cout << "Lukusi nelio on " << nelio << " ja kuutio on " << kuutio; }
Voisiko joku hieman avustaa yllä olevan koodin kanssa? Mitä varten pääohjelman kutsumat ja tulostamat luvut tulostuvat väärin?
Kiitos jo etukäteen.
Dareon kirjoitti:
nelio = asd^2;
C++:ssa ^ -merkki on bittioperaattori. Jonkin luvun korottaminen potenssiin pitää tehdä kertolaskulla. Esimerkiksi:
nelio = asd*asd;
.
Kokonaislukujen potenssilaskuille voit vaikkapa tehdä oman ihan yleisen funktion (kahdella parametrilla), se ei ole kovin vaikeaa. Liukuluvuille taas on hyvä käyttää matematiikkakirjaston pow-funktiota.
Pseudokoodina yksinkertainen potenssiinkorotusfunktio toimisi vaikkapa näin:
funktio potenssi(luku, eksponentti): vastaus = 1 suorita [eksponentti] kertaa: vastaus = vastaus * luku palauta vastaus
Aihe on jo aika vanha, joten et voi enää vastata siihen.