Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: HAASTE C-kielen taitajille

Sivun loppuun

tkurola [16.04.2004 09:05:15]

#

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)
=)

sqwiik [16.04.2004 09:18:57]

#

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.

tkurola [16.04.2004 09:47:42]

#

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...

sqwiik [16.04.2004 12:26:02]

#

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)

hunajavohveli [16.04.2004 14:38:12]

#

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. :)

tkurola [19.04.2004 12:00:21]

#

Nyt vielä jos saisin saman noille liukuluvuille =)...

kenkku [19.04.2004 15:39:56]

#

Jotenkin kuulostaa KOULUTEHTÄVÄLTÄ..!

tkurola [01.05.2004 16:55:19]

#

Niin. Koulutehtäväpä hyvinkin mut olin ymmärtänyt ton tehtävän väärin joten uusiksi meni... =)

T.M. [01.05.2004 17:11:34]

#

VOI HUOH!
bänniä vaan tälläsille jotka pyytää ratkaisuja koulutehtäviin.

kenkku [01.05.2004 17:13:35]

#

Olen samaa mieltä. Meillä ei ole tapana ratkoa muiden puolesta koulutehtäviä!

peki [01.05.2004 17:33:29]

#

Mutta ainahan voi auttaa ja antaa vinkkejä vai mitä?

T.M. [01.05.2004 21:11:47]

#

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.

Tempfile [02.05.2004 10:04:52]

#

Keskustelun ohjeisiin voisi melkein lisätä, ettei koulutehtäviin saa suoria vastauksia kysellä, saatika antaa.

Sami [02.05.2004 12:21:57]

#

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ä.

tejeez [02.05.2004 12:24:29]

#

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. :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta