Yhtälön toisto

Tarkoituksena olisi siis tehdä ohjelma, joka tekee seuraavaa:

se kysyy ensin luvun ja jos siihen laitetaan vaikka "8", niin se laskee kahdeksan kertaa halutun laskun.
tässä tapauksessa:

2*2 = 4 (1)
2*4 = 8 (2)
2*8 = 16 (3)

jne. eli tuplaa aina tuon halutun luvun niin monta kertaa kuin tuohon alussa kysyttyyn kohtaan on laitettu. olen vielä kohtuu aloittelija c :ssa, joten tälläistä pitää kysellä. kyseessä ei ole mikään kouluhomma, ne on jo tehty aikoja sitten :)

kiitos jo etukäteen
8677
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

Et tarkemmin mainitse mikä tuossa tuottaa vaikeuksia. Oletan että osaat kysyä käyttäjältä tuon luvun ja tehdä perussilmukan (for, while tai do..while). Toistuvien tapahtumien käsittelyyn kaikissa ohjelmointikielissä käytetään funktioita.

http://www.nic.funet.fi/c opas/funktiot.html

Teet siis oman funktion, tässä tapauksessa nimeltään vaikkapa int tuplaa(int tuplattava), joka kertoo sille lähetetyn parametrin kahdella ja palauttaa (return) kertolaskun tuloksen. Sitten kutsut tuota funktiota käyttäjän antaman luvun osoittaman kertaa, parametrina (=tuplattava) ensin 2 ja seuraavissa aina edellisen funktiokutsun tulos.

Tulostuksen voit laittaa sinne funktioon niin välituloksetkin näkyvät tai vaihtoehtoisesti sitten kun koko silmukka on suoritettu jolloin näkyy vain lopputulos.

Kyllä se siitä.

Äänestä

Jää epäselväksi, pitääkö välitulokset näyttää vai vaan lopputulos. Voisit vähän tarkemmin kertoa, mitä ohjelmasi pitäisi tehdä. Esim. mitä tietoja sen täytyy pistää talteen tai näyttää ruudulla. No, arvelen, että vain tulos kiinnostaa. Silloin:

-laskun toistamista sanotaan kertolaskuksi
*-laskun toistamista sanotaan potenssiksi

Jälkimmäinen on pow-funktio C :ssa. Ei tarvitse erikseen kirjoittaa ohjelmaa, jos valmis toteutus on jo olemassa. Tosin isoilla luvuilla laskettaessa voi tapahtua ylivuoto.

Äänestä
  • lopputulos pelkästään, ei välivaiheita. voisiko tuosta heittää jotain esimerkkikoodia? :)

    Äänestä

  • sneezzi kirjoitti:

    lopputulos pelkästään, ei välivaiheita. voisiko tuosta heittää jotain esimerkkikoodia? :)

    et edelleenkään kertonut mitä haluat

    Äänestä

  • suidfshdfuih kirjoitti:

    et edelleenkään kertonut mitä haluat

    ohjelma joka kysyy alussa lukua, esim 8 ja sen jälkeen kertoo numeron 2 niin monta kertaa. eli tuplaa uudestaan saadun tuloksen.

    2*2
    4*2
    8*2
    16*2
    32*2
    64*2
    128*2
    256*2

    tulos 512.

    ei välivaiheita, ainoastaan lopputulos.

    Äänestä

  • sneezzi kirjoitti:

    ohjelma joka kysyy alussa lukua, esim 8 ja sen jälkeen kertoo numeron 2 niin monta kertaa. eli tuplaa uudestaan saadun tuloksen.

    2*2
    4*2
    8*2
    16*2
    32*2
    64*2
    128*2
    256*2

    tulos 512.

    ei välivaiheita, ainoastaan lopputulos.

    Jos kysytty luku on integer:

    printf("lopputulos %d\n", 2

    Äänestä

  • sneezzi kirjoitti:

    ohjelma joka kysyy alussa lukua, esim 8 ja sen jälkeen kertoo numeron 2 niin monta kertaa. eli tuplaa uudestaan saadun tuloksen.

    2*2
    4*2
    8*2
    16*2
    32*2
    64*2
    128*2
    256*2

    tulos 512.

    ei välivaiheita, ainoastaan lopputulos.

    2^(n 1)

    Tuossa funktio joka laskee potenssin:

    int Potenssi(int luku, int potenssi)
    {
       int i=luku;
       while(potenssi>1){
          i=i*luku;
          potenssi--;
       }
       return i;
    }


    Tuolla siis
    Potenssi(2, n 1);

    Äänestä

Jos kerta ohjelman ei tarvii tulostaa välivaiheita.
Etis mitä tekee pow() funktio. Löytyy math.h:sta.

Äänestä

Kommentoi aloitusta


sneezzi kirjoitti:

Tarkoituksena olisi siis tehdä ohjelma, joka tekee seuraavaa:

se kysyy ensin luvun ja jos siihen laitetaan vaikka "8", niin se laskee kahdeksan kertaa halutun laskun.
tässä tapauksessa:

2*2 = 4 (1)
2*4 = 8 (2)
2*8 = 16 (3)

jne. eli tuplaa aina tuon halutun luvun niin monta kertaa kuin tuohon alussa kysyttyyn kohtaan on laitettu. olen vielä kohtuu aloittelija c :ssa, joten tälläistä pitää kysellä. kyseessä ei ole mikään kouluhomma, ne on jo tehty aikoja sitten :)

kiitos jo etukäteen

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu