Olen kirjoittamassa ohjelmaa, jossa syötetään arvosanoja. Arvosanoista lasketaan keskiarvo.
Tämä alla oleva tarkistussilmukka ilmeisesti ei jostain syystä kelpaa. Osaisko joku sanoa mitä vikaa siinä on. Ideana siis on, että vain luvut 1-5 kelpaavat arvosanoiksi.
while(arvosana != VARTIJA && arvosana < 1 || arvosana > 5)
{
printf("\nVain luvut 1-5 kelpaavat (99 lopetukseen)");
printf("\nAnna ensimmäinen arvosana > ");
scanf("%d", & arvosana);
summa = arvosana;
}
Tarkistussilmukka pielessä?
10
535
Vastaukset
- ...
(arvosana < 1 || arvosana > 5) ?
- korjauksia
Ylempänä tuli jo yksi korjaus. Lisäksi virheelliset sekä lopetusarvot lisätään tuossa versiossa summaan.
- CÄijö
Minummielestä VARTIJA pitää kirjottaa pienellä näin: vARTIJA
- Hamppuravatti
Kirjoitin tuon silmukkarakenteen hieman uusiksi. Ohjelma toimii nyt kuten pitääkin sisempää silmukkaa (lukuvälitarkistus) lukuunottamatta. Sanoisitko miten tuon sisemmän silmukan ehto pitäisi kirjoittaa, jotta se lopettaa VARTIJAN arvolla?
while(luku != VARTIJA)
{
while(luku < 1 || luku > 5)
{
printf("\nVain luvut 1-5 kelpaavat (%d lopetukseen)", VARTIJA);
printf("\nAnna sopiva luku > ");
scanf("%d", & luku);
} - snöööög
Hamppuravatti kirjoitti:
Kirjoitin tuon silmukkarakenteen hieman uusiksi. Ohjelma toimii nyt kuten pitääkin sisempää silmukkaa (lukuvälitarkistus) lukuunottamatta. Sanoisitko miten tuon sisemmän silmukan ehto pitäisi kirjoittaa, jotta se lopettaa VARTIJAN arvolla?
while(luku != VARTIJA)
{
while(luku < 1 || luku > 5)
{
printf("\nVain luvut 1-5 kelpaavat (%d lopetukseen)", VARTIJA);
printf("\nAnna sopiva luku > ");
scanf("%d", & luku);
}while (1
- snöööög
Hamppuravatti kirjoitti:
Kirjoitin tuon silmukkarakenteen hieman uusiksi. Ohjelma toimii nyt kuten pitääkin sisempää silmukkaa (lukuvälitarkistus) lukuunottamatta. Sanoisitko miten tuon sisemmän silmukan ehto pitäisi kirjoittaa, jotta se lopettaa VARTIJAN arvolla?
while(luku != VARTIJA)
{
while(luku < 1 || luku > 5)
{
printf("\nVain luvut 1-5 kelpaavat (%d lopetukseen)", VARTIJA);
printf("\nAnna sopiva luku > ");
scanf("%d", & luku);
}while (!(luku < 1 || luku > 5))
Jota ehkä yritit. - Hamppuravatti
snöööög kirjoitti:
while (1
Tuo ei ole vastaus esittämääni kysymykseen, koska tarkistussilmukka toimii esittämänäni versiona kun syötetään arvoja, jotka ovat pienempiä kuin 1 tai suurempia kuin 5.
Pulmanani on saada tuo sisempi tarkistussilmukka toimimaan siten, että jos sen kuluessa syötetään VARTIJA:ssa määritelty arvo (99), niin koko ohjelman tulisi loppua.
- c-burnout
Jos sisäkkäiset while silmukat menevät solmuun niin on joskus parempi tehdä se toisin. Ja sen sijaan että tarkistaa kaikki ehdot while silmukoissa, ne voi yhtä hyvin tarkistaa erillisillä if-lauseilla jolloin voi paremmin kontrolloida mitä ohjelma tekee missäkin vaiheessa. Itse toteuttaisin ohjelman esimerkiksi tällä tavalla (vaihtoehtoisia tapoja on toki monia monia muitakin):
#include
#define VARTIJA -1
int main(void)
{
int luku = 0;
int summa = 0;
int maara = 0;
printf("\nAnna lukuja 1-5 joista lasketaan summa ja keskiarvo. (%d lopetukseen)\n", VARTIJA);
do {
printf("Anna sopiva luku > ");
scanf("%d", & luku);
if (luku >= 1 && luku - c-burner
Foorumi toimii taas päin helvettia, joten moneskohan kerta on kun yritän saada tän viestin lähetettyä. No tässä mun tapa ratkaista ongelma (ellei ole pakko käyttää kahta while -silmukkaa):
#include
#define VARTIJA -1
int main(void)
{
int luku = 0;
int summa = 0;
int maara = 0;
printf("\nAnna lukuja 1-5 joista lasketaan summa ja keskiarvo. (%d lopetukseen)\n", VARTIJA);
do {
printf("Anna sopiva luku > ");
scanf("%d", & luku);
if (luku >= 1 && luku - c-burner
Foorumi toimii taas päin helvettia, joten moneskohan kerta on kun yritän saada tän viestin lähetettyä. No tässä mun tapa ratkaista ongelma (ellei ole pakko käyttää kahta while -silmukkaa):
#include
#define VARTIJA -1
int main(void)
{
int luku = 0;
int summa = 0;
int maara = 0;
printf("\nAnna lukuja 1-5 joista lasketaan summa ja keskiarvo. (%d lopetukseen)\n", VARTIJA);
do {
printf("Anna sopiva luku > ");
scanf("%d", & luku);
if (luku >= 1 && luku
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
En usko et meistä tulee jotain
Se ei kuitenkaan estä toivomasta et tulisi. Toivon et voitas suudella ja se sais asioita loksahtamaan paikoilleen. Jutel102710- 942001
Eini paljastaa nuorekkuutensa salaisuuden - Tämä nousee framille: "Se on pakko, että jaksaa!"
Discokuningatar Eini on täyttänyt upeat 64 vuotta. Lavoilla ja keikoilla nähdään entistä vapautuneempi artisti, joka ei401518- 2601398
Yli puolella maahanmuuttajalapsista ei ole tietoja ja taitoja, joilla selviää yhteiskunnassa
Miksi Suomeen otetaan väkeä jolla on älyvajetta? https://www.hs.fi/politiikka/art-2000010730220.html2741059- 69969
Olen J-mies
Jos kerrot sukunimeni alkukirjaimen, ja asuinpaikkakuntani. Lupaan ottaa yhteyttä sinuun.47891- 55874
Ei sitten, ei olla enää
Missään tekemisissä. Unohdetaan kaikki myös se että tunsimme. Tätä halusit tämän saat. J miehelle. Rakkaudella vaalea na77870- 44785