Pari(ehkä tyhmää) kysymystä tuli mieleen lukiessani tuosta C++-opasta kohdasta 3 - Ehdot, silmukat ja poikkeukset (kyseessä potenssilasku):
-Minkä takia tulos määritellään luvuksi 1?
-Missä kohdassa tarkalleen ottaen määritellään, että tuolla int i:llä kerrotaan tuo kantaluku (eikö tuo tulos *= kanta tarkoita samaa kuin tulos = tulos * kanta)?
#include <iostream> int main() { double kanta; int eksponentti; std::cout << "Anna kantaluku ja kokonaiseksponentti." << std::endl; std::cin >> kanta >> eksponentti; // Lasketaan negatiivinen potenssi käänteisluvun avulla. // n**(-e) = (1/n)**e, missä ** on kertolasku if (eksponentti < 0) { eksponentti = -eksponentti; kanta = 1 / kanta; } double tulos = 1; for (int i = 0; i < eksponentti; ++i) { tulos *= kanta; } std::cout << "Potenssilaskun tulos on " << tulos << std::endl; }
Koodissa lasketaan potenssilasku toistamalla silmukassa kertolaskua, kuten varmaan itsekin laskisit paperilla. Alkuarvo on 1, koska x⁰ on 1 (paitsi 0⁰, jota ei ole määritelty). Missään kohdassa ei ole tarkoitus kertoa mitään i:llä, vaan tietenkin kerrotaan aina kantaluvulla.
Ymmärrätkö paremmin tämän koodin?
double tulos = 1; for (int i = 0; i < eksponentti; ++i) { std::cout << kanta << " potenssiin " << i << " on " << tulos << std::endl; tulos *= kanta; } std::cout << kanta << " potenssiin " << eksponentti << " on " << tulos << std::endl;
Nyt ohjelman toiminta voisi olla vaikka seuraava:
Anna kantaluku ja kokonaiseksponentti. 2 4 2 potenssiin 0 on 1 2 potenssiin 1 on 2 2 potenssiin 2 on 4 2 potenssiin 3 on 8 2 potenssiin 4 on 16
Kiitos vastauksesta, nyt alan ymmärtää hiukan paremmin..! Matematiikka sinänsä ei ole vieras käsite, mutta nuo koodit sekoittivat ajatukset pahasti kun yritin järkeillä niitä (enkä ole voinut jatkaa opasta eteenpäin ennenkuin tuo asia selkeni).
Aihe on jo aika vanha, joten et voi enää vastata siihen.