Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

QBasic - jednostavno pitanje?

[es] :: Ostali programski jezici :: QBasic - jednostavno pitanje?

[ Pregleda: 2426 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

goranrst
Goran Maric

Član broj: 325791
Poruke: 49
31.223.144.*



+3 Profil

icon QBasic - jednostavno pitanje?16.08.2016. u 13:26 - pre 92 meseci
Molio bi da ako neko ima raspoložen da pregleda ovaj jednostavan Code iz QBasic-a, koji treba da prikaže dali je Zbir cifara unesenog trocifrenog broja deljiv sa 3 ili nije (mala priprema za osnovnu skolu).
Problem je koji god broj da unesem izbaci mi da zbir nije deljiv, npr ubacim 126 i rezultat "Zbir nije deljiv" a znamo da jeste. Gde je greška? Hvala.

Code:
REM Deljivost zbira cifara trocifrenog broja sa brojem 3
CLS
10 INPUT n
IF n > 99 AND n <= 999 THEN
a = n / 100
b = (n / 10) MOD 10
c = n MOD 10
s = a + b + c
IF s MOD 3 = 0 THEN
PRINT "Zbir je deljiv";
ELSE
IF s MOD 3 <> 0 THEN
PRINT "Zbir nije deljiv"
END IF
END IF
ELSE PRINT "Greska"
GOTO 10
END IF
END
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: QBasic - jednostavno pitanje?16.08.2016. u 14:48 - pre 92 meseci
Nesto mi tu mnogo END IF-ova, ali mozda se ne secam dobro sintkase.
Elem, s MOD 3 ili jeste nula ili nije, ne moras oba da proveravas, tako da taj deo mozes da skratis:
Code:

IF s MOD 3 THEN
    PRINT "Zbir je deljiv"
ELSE
    PRINT "Zbir nije deljiv"
END IF

A onaj deo sa "greska" izbaci.

I da, imas ";" na kraju jedne linije pa vidi da ti to ne pobrka kod.

S druge strane, imamo pravilnost za odredjivanje deljivosti broja sa 3 koji kaze da je broj deljiv sa 3 ako mu je zbir cifara deljiv sa tri. Ti mozes iskoristiti to pravilo u obrnutom smeru i samo proveriti da li je uneseni broj deljiv sa 3 i ako jeste, znas da je i broj cifara
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: QBasic - jednostavno pitanje?16.08.2016. u 15:04 - pre 92 meseci
Ispiši vrednosti varijabli a, b i c
Nisam siguran da

a = n / 100
b = (n / 10) MOD 10

radi celobrojnu aritmetiku.
 
Odgovor na temu

goranrst
Goran Maric

Član broj: 325791
Poruke: 49
31.223.144.*



+3 Profil

icon Re: QBasic - jednostavno pitanje?16.08.2016. u 16:25 - pre 92 meseci
Citat:
Shadowed:
Nesto mi tu mnogo END IF-ova, ali mozda se ne secam dobro sintkase.
Elem, s MOD 3 ili jeste nula ili nije, ne moras oba da proveravas, tako da taj deo mozes da skratis:
Code:

IF s MOD 3 THEN
    PRINT "Zbir je deljiv"
ELSE
    PRINT "Zbir nije deljiv"
END IF

A onaj deo sa "greska" izbaci.

I da, imas ";" na kraju jedne linije pa vidi da ti to ne pobrka kod.

S druge strane, imamo pravilnost za odredjivanje deljivosti broja sa 3 koji kaze da je broj deljiv sa 3 ako mu je zbir cifara deljiv sa tri. Ti mozes iskoristiti to pravilo u obrnutom smeru i samo proveriti da li je uneseni broj deljiv sa 3 i ako jeste, znas da je i broj cifara :)

Probao sam ovo što ste rekli i sada zbir je deljiv jedino ako je zbir = 11, a za sve ostalo nije deljiv...
Code:

REM Deljivost trocifrenog broja sa tri
CLS
10 INPUT n
IF n > 99 AND n <= 999 THEN
a = n / 100
b = (n / 10) MOD 10
c = n MOD 10
s = a + b + c
IF s MOD 3 = 0 THEN
    PRINT "Zbir je deljiv"
ELSE
    PRINT "Zbir nije deljiv"
END IF
GOTO 10
END IF
END

slika:





 
Odgovor na temu

goranrst
Goran Maric

Član broj: 325791
Poruke: 49
31.223.144.*



+3 Profil

icon Re: QBasic - jednostavno pitanje?16.08.2016. u 16:29 - pre 92 meseci
Citat:
djoka_l:
Ispiši vrednosti varijabli a, b i c
Nisam siguran da

a = n / 100
b = (n / 10) MOD 10

radi celobrojnu aritmetiku.

Neznam tačno kako da ispišem vrednost varijabli, može neka sugestija...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: QBasic - jednostavno pitanje?16.08.2016. u 20:20 - pre 92 meseci
Recimo

PRINT a, b, c

Proverio sam sintaksu QBasica, "/" je deljenje a "\" je celobrojno deljenje.
Pošto nemam QBasic i nemam nameru da ga instaliram, mogu samo da prepostavim zašto za 128 daje da je zbir cifara deljiv sa 3

128/100=1.28
(128/10) mod 10 = 12.8 mod 10 = 2.8
128 mod 10 = 8
1.28+2.8+8=12.08
pa onda to nekom magijom da 0 po modulu 3.
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 232
212.91.115.*

ICQ: 132872590


+3 Profil

icon Re: QBasic - jednostavno pitanje?17.08.2016. u 08:45 - pre 92 meseci
Lijepo je bilo prisjetiti se...

Code:
CLS
DIM broj AS INTEGER

DO
    INPUT "Koji broj"; broj
    IF (broj > 99 AND broj < 1000) THEN
        IF broj MOD 3 = 0 THEN
            PRINT "Zbroj znamenaka broja"; broj; "je djeljiv s 3."
        ELSE
            PRINT "Zbroj znamenaka broja"; broj; "nije djeljiv s 3."
        END IF
    ELSE
        EXIT DO
    END IF
LOOP WHILE broj > 99 AND broj < 1000

PRINT "Broj nije troznamenkasti!"

END

http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

goranrst
Goran Maric

Član broj: 325791
Poruke: 49
31.223.144.*



+3 Profil

icon Re: QBasic - jednostavno pitanje?17.08.2016. u 14:25 - pre 92 meseci
Ljudi HVALA svima, sa malim zakašnjenjem, hvala za člana --ja--, vaš kod radi odlično.Bravo.
Ja sam sinoć rešio nekako ovaj problemčić na neki "svoj početnički način" i takođe "moj" kod radi kako treba i to izgleda ovako:

REM Zbir cifara trocifrenog broja deljiv sa brojem 3
CLS
INPUT n
IF n < 100 THEN
PRINT "GRESKA. Ponovite unos, broj treba biti trocifren!";
ELSEIF n >= 1000 THEN
PRINT "GRESKA. Ponovite unos, broj treba biti trocifren!";
ELSE
c = n MOD 10
x = n MOD 100
y = n MOD 1000
z = x / 10
d = y / 100
b = FIX(z)
a = FIX(d)
PRINT "Cifre unesenog broja su:"; a; b; c
s = a + b + c
IF s MOD 3 = 0 THEN
PRINT "Zbir cifara je deljiv sa brojem 3"
ELSE PRINT "Zbir cifara nije deljiv sa brojem 3"
END IF
END IF
END
 
Odgovor na temu

[es] :: Ostali programski jezici :: QBasic - jednostavno pitanje?

[ Pregleda: 2426 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.