Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

krkris / Loogikafunktsioon

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Pipelines
  • Wiki
  • Snippets
  • Members
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Switch branch/tag
  • Loogikafunktsioon
Find file History
  • Source code
  • Download zip
  • Download tar.gz
  • Download tar.bz2
  • Download tar
  • krkris's avatar
    Kommenteeritud lõppkood · 90212901
    krkris committed 3 years ago
    90212901
Name
Last commit
Last Update
.c Update .c 3 years ago
.gitignore Add new file 3 years ago
Kood.c Update Kood.c 3 years ago
Lõppkood.c Kommenteeritud lõppkood 3 years ago
README.md Add readme.md 3 years ago
fail.c Update fail.c 3 years ago
README.md

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.