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
591
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
- 447756
Tulipalossa henkilövahinkoja, itsenäisyyspäivä alkoi huonosti, poliisi tiedottaa lisää
Savonlinna https://www.como.fi/uutiset/savonlinna-henkilovahinkoja-tulipalossa-poliisi-tiedottaa-lisaa/714652Oletko keskustellut kaivatustasi muiden
Kanssa lähiaikoina? Jos, onko keskustelu ollut positiivista tai negatiivista? Vaikuttaako keskustelut mielipiteeseesi ka593849Ennen ei ollut persuja ja työttömyyttä, lääkäriinkin pääsi
Ennen oli kaikilla töitä Kauppiaille kelpasi kun saivat voittoa Yritystukia ei ollut Lääkäriin pääsi kaikki haluklaat Nu723725- 983539
- 553183
Kyllä on Vasemmistoliitosta Koskelan johdolla tullut todellinen ääripuolue
se on niin tulipunainen kuin olla voi, ja selvästi haluaa jatkuvasti eripuraa, ja repiä kansaa kahtia. Siinä on jo vuod713143Antifasismi - mitä se on?
Se on äärivasemmistolaista anarkistista toimintaa joka käyttää fasisminvastaisuutta keppihevosena oikeuttaakseen toimint302558IL- KELA:n pääjohtaja, lääke- ja oikeustieteen tohtori Lasse Lehtonen sekavassa tilassa Brysselissä!
"Iltalehden tietojen mukaan Lehtosen käytös Brysselin lentokentällä on herättänyt huomiota, ja hänen olemuksensa on tulk2112172- 521668