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
606
Vastaukset 10
- ...
(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
Suomalaisten pinna paloi - Ärsytys iskee uudesta TTK-juontajasta "Eihän tälle voi kun nauraa"
Oliko Veronica Verho hyvä valinta TTK-juontajaksi? Uuden TTK-juontajan henkilöllisyyttä on arvailtu siitä asti, kun Va1062185- 103886
- 63781
- 46780
Mitä tapahtuu?
Mitä tapahtuu Humalojalla? Poliiseja talon ympärillä ja paljon ihmisiä pitkin pihoja???21696Suomi on viittä vaille sodassa Venäjän kanssa...
...syynä tähän on kokoomuslainen presidenttimme Stubb. Hän on ainoa eurooppalaisen maan johtaja, joka kärkkäästi ja taha510684Olen vähän epävarma siitä, oletko kiltti
Nainen, ensivaikutelma oli, että olet tosi hyväsydäminen eli siinä mielessä harvinaisuus. Eli et mene virran mukana, etk76630- 60570
Herkkä, hellä, aurinkoinen, kaunis upea, valonsäde on hän nainen
Ja myös fiksu, älykäs ja luonnonläheinen. Erittäin mielenkiintoinen ja kiltti ihminen. Haluan tuntea hänet, koska kaik23560- 57551