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
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
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ä.
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.
lopputulos pelkästään, ei välivaiheita. voisiko tuosta heittää jotain esimerkkikoodia? :)
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.
Jos kysytty luku on integer:
printf("lopputulos %d\n", 2
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);
Jos kerta ohjelman ei tarvii tulostaa välivaiheita.
Etis mitä tekee pow() funktio. Löytyy math.h:sta.