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]
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]
Vastaukset 6
Vanhimmat
Ohjelmoinnissa käytetään, kuten muistat, varsin usein ehtolauseita eli lisäät summaan sen luvun jos se on positiivinen.
enkös tuossa lisää?
Vaikka näin:
if(luku>0) summa =luku;
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)
jos teen noin niin eihän se kysy lukua kuin kerran!
Anteeksi, pitää testata toimiiko tämä..