Viskan siia speki
Ülesande püstitus:
progr saab klaviatuurilt 4-muutuja loogikafunktsiooni tõeväärtustabeli ja töötleb seda kindla algoritmiga, väljastades lõpuks töötulemusena algoritmis etteantud lühikesed stringid. Programm Ei saa parameetreid - sisend tuleb ainult klaviatuurilt.
Käivitamisel teatab: "sisesta tõeväärtustabel KKaardina 4 x 4 või Tvtabeli loogikaväärtustena (16) :" ja jääb ootama sisendit klaviatuurilt
user tohib sisestada ainult charactere 0 1.
KUI kasutaja sisestab mistahes muu sümboli kah sekka, siis runtime näitab kogu sisestatud stringi ja teatab:
lubamatu sisend : 101110A911101011
ja teeb exit.
kasutaja võib sisestada 1 / 0 kas 4 tk korraga ja 4 korda või stringina kus on 16 characteri.
Progr tunneb ise ära kumbal kujul kasutaja saadab, analüüsides sisestatud stringi. Kui user sisestas näiteks:
0100 (enter) siis progr näitab seda rida mis just tuli ja küsib jargmist rida kah: 0100
KKaardi TEINE rida?
kasutaja sisestab 1100 (enter)
progr displayb: 0100 1100
KKaardi KOLMAS rida?
kasutaja sisestab näiteks: 1110 (enter)
progr displayb vastu: 0100 1100 1110
KKaardi NELJAS rida?
kasutaja sisestab näiteks 0001 (enter)
progr displayb vastu: 0100 1100 1110 0001
meenuta DiskMat ja pane tähele et KKaardi read EI vasta täpselt TVtabeli järjestusele vaid väärtused "hüppavad" veidi erinevas järjestuses!
kui kasutaja sisestab jama, siis progr vastab: lubamatu sisend : 4119U ja displayb veelkord samad read mis enne juba olid :
0100 1100 1110
KKaardi NELJAS rida?
VÕI "nelikute" asemel võib kasutaja sisestada ka KOGU TVtabeli korraga - 16 rida ehk fn väärtused ÜHES REAS KOOS: progr küsib alguses:
sisesta tõeväärtustabel Kkaardina 4 x 4 või loogikaväärtustena (16) :
kasutaja sisestab näiteks:
0100110000011110 (enter)
progr saab aru et saabus 16characteri ehk kogu TVtabel - ning EI küsi rohkem midagi.
Iga saabunud väärtus selles 16realises Tvtabelis ehk REAS - omistatakse ühele muutujale Selle siinse 16char stringi saabumisel omistatakse saabunud loogväärtused:
f0 = 0 f1 = 1 f2 = 0 f3 = 0 f4 = 1 f5 = 1 f6 = 0 f7 = 0 f8 = 0 f9 = 0 fA = 0 fB = 1 fC = 1 fD = 1 fE = 1 fF = 0
C keele muutuja TÜÜBi võib progeja ise valida - üks võimalus on tüüp char ehk 1-baidine täisarv.
Edasi vaja teha toiminguid nende muutijatega f0...... fF
edasi on mul lihtsam kirja panna "if then else" kombel. ühekaupa ridadele vaja väljastada stringid:
if f0 = 1 then print string ekraanile "konstant 1 olemas" else print string ekraanile "konstant 1 puudub" if f15 = 1 then print string ekraanile "PAARITU arv liikmeid" else print string ekraanile "PAARISarv liikmeid" if f0 == f8 then print string ekraanile "x1 puudub" else print string ekraanile "x1 olemas" if f0 == f4 then print string ekraanile "x2 puudub" else print string ekraanile "x2 olemas" if f0 == f2 then print string ekraanile "x3 puudub" else print string ekraanile "x3 olemas" if f0 == f1 then print string ekraanile "x4 puudub" else print string ekraanile "x4 olemas" if f7 == 1 then print string ekraanile "ilma [x1] PAARITU" else print string ekraanile "ilma [x1] PAARIS" if fB == 1 then print string ekraanile "ilma [x2] PAARITU" else print string ekraanile "ilma [x2] PAARIS" if fD == 1 then print string ekraanile "ilma [x3] PAARITU" else print string ekraanile "ilma [x3] PAARIS" if fE == 1 then print string ekraanile "ilma [x4] PAARITU" else print string ekraanile "ilma [x4] PAARIS"
see ongi kogu spek ehk algoritm. Ilusasju võib juurde leiutada - aga siin on progemise eesmärk dokumenteeritud. andmete ehk muutujate TÜÜBID võib valida vabalt. Kuigi on olemas boolean tüüp (bool ?) siis teadmata kas see on hea kasutada.