Ajattelin tässä huvikseni harjoittelemaan c++ ja olen tehnytkin pari pientä ohjelmaa. Nyt tarvitsisin vähän neuvoja silmukoiden tekemisessä.
Ajettelin näin kevään kunniaksi tehdä ohjelman joka laskee todistuksen keskiarvon (kohtahan saadaan todistukset), mutta se ei ota luonnistuakseen ja ajattelin kysyä täältä neuvoja :D.
Eli ohjelma kysyy ensin montako lukua todistuksessa on ja sitten pyytää niin paljon arvosanoja, kuin on ohjelmaan syötetty. Lopuksi ohjelma kertoo keskiarvon.
Kiitos kaikille jotka jaksavat auttaa!
Silmukat tehdään näin:
main() { int a; for(a=1;a<10;a++) { //tähän väliin toistettava koodi } }
Eli tuo ensimmäinen "a=1", kertoo muuttujan alkuarvon. "a<10" on ehto, jonka aikana silmukkaa toistetaan, eli kun mennään yli kymmenen, silmukka loppuu. "a++" tarkoittaa että joka kierroksella a-muuttujaa lisätään yksi, joten lopulta silmukkaa loppuu. Sulkujen väliin pistät toistettavat lausekkeet.
Korjaanpa vielä sen verran, että hunajavohvelin koodissa tuota suoritetaan niin kauan kuin a on pienempi kuin 10, eli kun a on 10, silmukan koodia ei suoriteta.
Jos haluat suorittaa niin kauan kunnes a on pienempi TAI YHTÄSUURI kuin 10, käytä vertailuna a<=10
</pilkunviilaus>
Huomasin kyllä tuon koodia kirjoittaessani, mutten vain halunnut ruveta selittämään enempää.
Kylmiltään kirjotettuna:
#include <iostream> int main() { int a = 0; double b = 0; std::cout<<"Kuinka monen luvun keskiarvon haluat laskea?" << std::endl; std::cin >> a; int luvut[a]; for(int i = 0; i<a; i++) // tässä luupissa pyydetään käyttäjältä luvut { std::cin >> luvut[i]; } for(int i = 0; i<a; i++) b += (double)luvut[i]; b /= a; std::cout << "keskiarvo on" << b << std::endl; return 0; }
En tiedä kääntyykö tuo tuosta suoraan, ei ole kääntäjää käsillä. Mutta periaatteeltaaan noin pitäisi ohjelma toteuttaa.
edit. eipäs käytetä int-tyyppiä keskiarvossa että saadaan desimaalilukuja ;)
Muuten näyttäis ihan toimivalta paitsi että luvut-taulukko pitää varata dynaamisesti new:llä:
int *luvut = new int[a];
Ja tietysti tuhota delete[]:llä jossain vaiheessa.
Olen aika aloittelija c++:ssa niin kerro mulle miksi taulukko pitää varata dynaamisesti?
Olettaisin että siksi, koska muuttuja a, joka määrää kuinka paljon alkioita taulukkoon tehdään, ei ole staattinen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.