Muisti pätkii todella helppo kysymys arvaan ma..

Niin aloin pitkästä aikaa jatkamaan c ohjelmointia ja nyt on pieni oikosulku johon toivon apua(muistin virkistystä).

Ohjelma kysyy käyttäjältä reaalilukuja kunnes käyttäjä antaa negatiivisen luvun. Tämän jälkeen ohjelma laskee lukujen summan. Teen myös tarkistuksen, että kyseessä on todella luku eikä esim. kirjain. Ongelmana on nyt se, että kun käyttäjä antaa negatiivisen luvun vähennetään se summasta.
Eli jos annan luvut 3, 4 ,3 ja sitten
haluan lopettaa ja annan luvun -3, ei tulostuva
summa olekkaan 10 vaan 7 koska viimeiseksi annettu
luku vähennetään summasta.

Asian tekee hauskaksi se, että osaan kyllä tehdä jutun oikein jos käytän funktiota!

Asia häiritsee suunnattomasti :)

[code]
#include

int main(void)
{
double luku=0;
double summa=0;

do{

printf("Anna desimaaliluku:\n");
while(scanf("%lf", &luku)==0)
   {
   printf("Siis NUMERO!!!!!!\n");
      fflush(stdin);
   printf("Anna desimaaliluku:\n");
   }
   summa=summa luku;

}while(luku>0);

printf("lukujen summa on %lf \n",summa);

return(0);
}
[/code]
6578
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Ohjelmoinnissa käytetään, kuten muistat, varsin usein ehtolauseita eli lisäät summaan sen luvun jos se on positiivinen.

Äänestä
  • enkös tuossa lisää?

    Äänestä

  • tauski kirjoitti:

    enkös tuossa lisää?

    Vaikka näin:

    if(luku>0) summa =luku;

    Äänestä

stdiniä ei voi fflushata, vain tulostusvirrat (esim. stdout tai stderr).

Ulomman do:n voinee poistaa laittamalla sen testin whileen:
while(scanf("%lf", &luku)==0 && luku > 0)

Äänestä
  • jos teen noin niin eihän se kysy lukua kuin kerran!

    Äänestä

Anteeksi, pitää testata toimiiko tämä..

Äänestä

Kommentoi aloitusta


Tauski kirjoitti:

Niin aloin pitkästä aikaa jatkamaan c ohjelmointia ja nyt on pieni oikosulku johon toivon apua(muistin virkistystä).

Ohjelma kysyy käyttäjältä reaalilukuja kunnes käyttäjä antaa negatiivisen luvun. Tämän jälkeen ohjelma laskee lukujen summan. Teen myös tarkistuksen, että kyseessä on todella luku eikä esim. kirjain. Ongelmana on nyt se, että kun käyttäjä antaa negatiivisen luvun vähennetään se summasta.
Eli jos annan luvut 3, 4 ,3 ja sitten
haluan lopettaa ja annan luvun -3, ei tulostuva
summa olekkaan 10 vaan 7 koska viimeiseksi annettu
luku vähennetään summasta.

Asian tekee hauskaksi se, että osaan kyllä tehdä jutun oikein jos käytän funktiota!

Asia häiritsee suunnattomasti :)

[code]
#include

int main(void)
{
double luku=0;
double summa=0;

do{

printf("Anna desimaaliluku:\n");
while(scanf("%lf", &luku)==0)
   {
   printf("Siis NUMERO!!!!!!\n");
      fflush(stdin);
   printf("Anna desimaaliluku:\n");
   }
   summa=summa luku;

}while(luku>0);

printf("lukujen summa on %lf \n",summa);

return(0);
}
[/code]

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