Miten tehdään ohjelma joka korottaa luvun n (reaaliluku) potenssiin m (kokonaisluku) käyttäen pelkkiä yhteenlaskutoimituksia?
Ohjelmassa täytyy olla seuraavat funktiot:
-double potenssiin(double n, int m)
-double kertaa(double a, double b)
(Ohjelma ei saa myöskään antaa virheilmoituksia mikäli sille syöttää jotain muuta kuin lukuarvoja)
=)
Perusmatematiikkaa... kysyn vain, pitääkö sen myös ymmärtää liukulukuja tyyliin
tulos = potenssiin(2, 1.1); //lasku on siis 2^1.1
vai ihan vain kokonaislukuja? Kokon.luvuilla tuo on helppoa, mutta liukulukujen kanssa pitää käyttää hieman kikka kuutosta.
Eli siis toi kantaluku n pitäis pystyy oleen myös muotoa 1.1 mutta tolle potenssille n riittää kokonaisluku eli =>
tulos = potenssiin(1.1, 2); //lasku on siis 1.1^2
Toivottavasti auttoi...
Auttoihan tuo. Liukulukupotenssi olisi ollut hieman hankalaa, mutta koska sitä ei ole niin tässä sitten (kokonaisluvuille):
/* Potenssi */ double potenssiin(double n, double x){ double tulos=1, a; for(a=0;a<x;a++) tulos = kertaa(tulos, n); return tulos; } /* Kertominen */ double kertaa(double x, double y){ double tulos=0,a; for(a=0;a<y;a++) tulos += x; return tulos; }
Ei siis tuon vaikeampi. Koeta itse pähkäillä algoritmi, joka laskee liukuluvun kertomisen :)
(testaamatonta koodia; from pohjaton hattu)
Eli tuo siis suorittaessaan kertolaskun lisää silmukalla tiettyä lukua tietyn monta kertaa (kertoimet) ja potenssissa sitten kutsuu kertomisfunktiota niin monta kertaa, mitä potenssiluku näyttää. Näin ainakin itse käsitin tuon toiminnan. En kyllä testannut minäkään. :)
Nyt vielä jos saisin saman noille liukuluvuille =)...
Jotenkin kuulostaa KOULUTEHTÄVÄLTÄ..!
Niin. Koulutehtäväpä hyvinkin mut olin ymmärtänyt ton tehtävän väärin joten uusiksi meni... =)
VOI HUOH!
bänniä vaan tälläsille jotka pyytää ratkaisuja koulutehtäviin.
Olen samaa mieltä. Meillä ei ole tapana ratkoa muiden puolesta koulutehtäviä!
Mutta ainahan voi auttaa ja antaa vinkkejä vai mitä?
Nuo vinkkien antamiset menee yleensä siihen että kysyjä saa valmiin ohjelman.
Aika pälliä muutenkin tulla kyselemään koulutehtäviin neuvoa netistä, vaikka sitä apua pitäisi saada koulustakin.
Keskustelun ohjeisiin voisi melkein lisätä, ettei koulutehtäviin saa suoria vastauksia kysellä, saatika antaa.
Ei se niin kovin paha ole jos kysyy apua koulutehtävään ihan suoralla kysymyksellä, mutta jos tekee niin kuin tkurola teki nyt, eli antaa esim. "haasteen" muille saadakseen suoran vastauksen koulutehtäväänsä.
sqwiik kirjoitti:
Auttoihan tuo. Liukulukupotenssi olisi ollut hieman hankalaa, mutta koska sitä ei ole niin tässä sitten (kokonaisluvuille):
/* Potenssi */ double potenssiin(double n, double x){ double tulos=1, a; for(a=0;a<x;a++) tulos = kertaa(tulos, n); return tulos; } /* Kertominen */ double kertaa(double x, double y){ double tulos=0,a; for(a=0;a<y;a++) tulos += x; return tulos; }Ei siis tuon vaikeampi. Koeta itse pähkäillä algoritmi, joka laskee liukuluvun kertomisen :)
(testaamatonta koodia; from pohjaton hattu)
Ainakin tuossa potenssiin -funktiossa olevat doublet a ja x vois muuttaa intiksi. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.