26.6.. Aritmetičke operacije - dva broja. Korisnik bira aritmetičku operaciju. Na osnovu slučajno generisana dva broja treba otkucati odgovor. Programom je obezbjeđena provjera ispravnosti otkucanog rezultata.

Opis rješenja: Program omogućuje provjeru poznavanja aritmetičkih operacija od strane karisnika programa.

Opis programa: Program se sastoji od glavnog programa i potprograma. Potprogrami obavljaju slijedeće aktivnosti: - postavijanje početnih vrijednosti; - izbor aritmetičke operacije; - ispis naslova izabrane aritmetičke operacije; - generisanje dva slučajna broja; - očitavanje i provjera otkucacnog odgovora korisnika. Glavni program poziva pojedine potprograme i upravlja ponavljanje pogađanja rezultata u DO LOOP UNTIL petlji. Ispis menija aritmetičkih operacija i izbor jedne od operacije se izvodi u potprogramu od 100 linije. Naslov izabrane aritmetičke operacija je u potprogramu od linije 300.
Generisanje dva slučajna broja u intervalu od 1 do 100 je potprogramu od linije 400. Generisanje prirodnih brojeva u intervalu od 1 do 100 se izvodi INT(100 * RND(1)) + 1. Generisanje slučajnog broja u odrađenom opsegu je objašnjeno u prilogu.
Ispis generisanih brojeva, povezanih izabranim operatorom se obavlja u liniji 500-560. Korisnik treba da otkuca vrijednost odgovora na tastaturi. Provjera tačnosti otkucane vrijednosti obavlja se u linijama od 600 do 670.
Potprogram postavljanja početnih vrijednosti (linije 700-770) je prvo pozina. Radi preglednosti se nalazi na kraju listinga. Dok pišete program znate gdje su početne vrijednosti, kao i u kasnijem testiranju prvo pregledate kod koji izvodi aktivnosti...
Program nudi ponavljanje provjere operacije za nove vrijednosti.

Listing programa:

REM 26011060
REM Glavni program
GOSUB 700: REM pocetne vrijednosti
GOSUB 100: REM izbor operacije
DO
    GOSUB 400: REM novi brojevi
    GOSUB 500: REM aritmeticke operacije
    GOSUB 600: REM provjera odgovora
    INPUT "Hoces li jos (/n) "; ne$
LOOP UNTIL (LEFT$(ne$, 1) = "N" OR LEFT$(ne$, 1) = "n")
GOTO 990: REM idi na kraj

REM potprogrami
100 REM Izbor operacije
CLS
LOCATE , 10: REM pomjeri kursor horizontalno 10 mjesta
PRINT "ARITMETCKE OPERACIJE": REM naslov i meni
120 PRINT
130 PRINT "1. SABIRANJE"
140 PRINT "2. ODUZIMANJE"
150 PRINT "3. MNOZENJE"
160 PRINT "4. DIJELJENJE"
170 PRINT "5. KRAJ"
LOCATE , 8: REM pomjeri kursor horizontalno na 8 mjesto
INPUT "Izbor "; i
190 IF (i < 1 OR i > 5) THEN GOTO 100: REM izvan ponudjenog opsega vrijednosti
200 GOSUB 300: REM MASLOV ARITMETICKE OPERACIJE
REM 210 GOTO 990: REM idi na kraj
RETURN

300 REM Naslov aritmeticke operacije
LOCATE , 10: REM pomjeri kursor horizontalno 10 mjesta
PRINT x$(i)
LOCATE , 10: REM pomjeri kursor horizontalno 10 mjesta
FOR j = 1 TO LEN(x$(i))
    PRINT "=";
NEXT j
PRINT
350 RETURN

400 REM Novi slucajni brojevi
RANDOMIZE TIMER: REM Omogucuje nove brojeve pri svakom startanju programu
410 a = INT(100 * RND(1)) + 1
420 b = INT(100 * RND(1)) + 1
430 RETURN

500 REM Rezultat aritmeticke operacije
510 ON i GOTO 520, 530, 540, 550, 990
520 r = a + b: PRINT a; " + "; b: GOTO 560
530 r = a - b: PRINT a; " - "; b: GOTO 560
540 r = a * b: PRINT a; " * "; b: GOTO 560
550 r = INT(a / b): PRINT a; " / "; b: GOTO 560
560 RETURN

600 REM Provjera odgovora
610 INPUT " Otkucaj rezultat "; o

620 IF r = o THEN bp = bp + 1: PRINT "TACNO!"
630 IF r <> o THEN bg = bg + 1: PRINT "Pogresno, ispravan rezultat = "; r
640 PRINT "Od "; bp + bg; " pokusaja "; bp; " ima tacnih "
650 RETURN

700 REM Pocetne vrijednosti
710 bp = 0 REM brojac pogodataka
720 bg = 0 REM brojac gresaka
730 FOR j = 1 TO 4 
    740 READ x$(j): REM pridruzivanja naziva aritmeticke operacije    
750 NEXT j
760 DATA SABIRANJE,ODUZIMANJE,MNOZENJE,DIJELJENJE
770 RETURN

990 END

Ispis na ekranu:

Index