Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Silmukan käyttö

Sivun loppuun

huuru [28.04.2004 16:32:26]

#

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!

hunajavohveli [28.04.2004 17:57:40]

#

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.

Heikki [28.04.2004 19:35:13]

#

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>

hunajavohveli [28.04.2004 20:12:11]

#

Huomasin kyllä tuon koodia kirjoittaessani, mutten vain halunnut ruveta selittämään enempää.

tomaattigeeni [29.04.2004 11:10:51]

#

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

thefox [29.04.2004 11:29:05]

#

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.

sooda [29.04.2004 11:32:10]

#

Olen aika aloittelija c++:ssa niin kerro mulle miksi taulukko pitää varata dynaamisesti?

tomaattigeeni [29.04.2004 18:17:33]

#

Olettaisin että siksi, koska muuttuja a, joka määrää kuinka paljon alkioita taulukkoon tehdään, ei ole staattinen.


Sivun alkuun

Vastaus

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

Tietoa sivustosta