<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kiu</id>
	<title>SI Wiki - Кориснички доприноси [sr]</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kiu"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/wiki/%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%BE:%D0%94%D0%BE%D0%BF%D1%80%D0%B8%D0%BD%D0%BE%D1%81%D0%B8/Kiu"/>
	<updated>2026-06-04T10:55:55Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2022&amp;diff=8165</id>
		<title>Програмски преводиоци 1/К1 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2022&amp;diff=8165"/>
		<updated>2025-12-01T13:53:54Z</updated>

		<summary type="html">&lt;p&gt;Kiu: Поништена измена бр. 8164 корисника Kiu (разговор)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Prvi kolokvijum 2022. godine&#039;&#039;&#039; održan je 31. oktobra i trajao je 90 minuta. Postavka roka još uvek nije zvanično dostupna sa stranice predmeta.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data su tri deterministička automata, M, N i P.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Napraviti deterministički konačni automat K koji prihvata sekvence tipa &amp;lt;math&amp;gt;s_1|(s_2s_3)&amp;lt;/math&amp;gt;, gde su &amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt; sve sekvence koje automat M odbija, a &amp;lt;math&amp;gt;s_2&amp;lt;/math&amp;gt; i &amp;lt;math&amp;gt;s_3&amp;lt;/math&amp;gt; sekvence koje automati N i P prihvataju, respektivno.&lt;br /&gt;
# Od automata iz tačke pod a napraviti desno-linearnu gramatiku, a zatim iz nje izbaciti sve nedostižne ili mrtve neterminale.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat M&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat N&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
| E&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D&lt;br /&gt;
| E&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! F&lt;br /&gt;
| F&lt;br /&gt;
| E&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat P&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Nedeterminstički automat koji prihvata s2s3&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! F&lt;br /&gt;
| F,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 2 &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Determinstički automat koji prihvata s2s3&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2 &lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Nedeterministički automat koji prihvata traženu sekvencu&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| D,1&lt;br /&gt;
| 1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Deterministički automat koji prihvata traženu sekvencu&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! a&lt;br /&gt;
! 1&lt;br /&gt;
|-&lt;br /&gt;
| {A,D,1}, S0&lt;br /&gt;
| A,1&lt;br /&gt;
| B,E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {A,1}, S1&lt;br /&gt;
| A,1&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {B,E}, S2&lt;br /&gt;
| B&lt;br /&gt;
| C,D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {2}, S3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {B}, S4&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {C,D,1}, S5&lt;br /&gt;
| A,1&lt;br /&gt;
| C,E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {E}, S6&lt;br /&gt;
| &lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {1}, S7&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {C}, S8&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {C,E}, S9&lt;br /&gt;
| A&lt;br /&gt;
| C,D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {D,1}, S10&lt;br /&gt;
| 1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {A}, S11&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Aritmetički izraz se sastoji iz nula ili više brojeva, gde je broj niz cifara, sa aritmetičkim operacijama sabiranja ili oduzimanja između njih. Ukoliko su terminali u datoj azbuci jedna cifra (&amp;quot;CIFRA&amp;quot;), znak za sabiranje (&amp;quot;+&amp;quot;) i znak za oduzimanje (&amp;quot;-&amp;quot;) napisati regularni izraz koji opisuje date aritmetičke izraze, a zatim ga pretvoriti u deterministički konačni automat korišćenjem metoda pozicija.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Datoteka:PPR K1 2022 zadatak 2 stablo.svg|thumb|center|Poziciono stablo u drugom zadatku.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
|-&lt;br /&gt;
! Pozicija&lt;br /&gt;
! Sledeća pozicija&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| /&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Deterministički konačni automat za traženi regularni izraz&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! CIFRA&lt;br /&gt;
! +&lt;br /&gt;
! -&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| 1,5&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
[[Datoteka:PPR K1 2022 zadatak 3 automat.svg|thumb|Konačni automat iz postavke zadatka.]]&lt;br /&gt;
Napisati fragment programskog koda koji implementira konačni automat sa slike:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# eksplicitnom predstavom funkcije stanja&lt;br /&gt;
# implicitnom predstavom funkcija stanja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
a) &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class FSM&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
enum State {&lt;br /&gt;
    S0( false ),&lt;br /&gt;
    S1( true ),&lt;br /&gt;
    ERROR( false );&lt;br /&gt;
&lt;br /&gt;
    final boolean accepting;&lt;br /&gt;
&lt;br /&gt;
    State( boolean accepting ) {&lt;br /&gt;
        this.accepting = accepting;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static State state;&lt;br /&gt;
  &lt;br /&gt;
  static void handleInput(int ch)&lt;br /&gt;
  {&lt;br /&gt;
    switch( state ) &lt;br /&gt;
    {&lt;br /&gt;
      case S0:&lt;br /&gt;
      	if ( ch==0 )&lt;br /&gt;
          state = State.S1;&lt;br /&gt;
        else&lt;br /&gt;
          state = State.ERROR;&lt;br /&gt;
        break;&lt;br /&gt;
      &lt;br /&gt;
      case S1:&lt;br /&gt;
      	if ( ch==0 )&lt;br /&gt;
          state = State.S1;&lt;br /&gt;
        else if ( ch==1 )&lt;br /&gt;
          state = State.S0;&lt;br /&gt;
&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
      case ERROR:&lt;br /&gt;
        state = State.ERROR;&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String[] args) throws java.io.IOException&lt;br /&gt;
  {&lt;br /&gt;
	int ch;&lt;br /&gt;
    state = State.S0;&lt;br /&gt;
    while ((ch = System.in.read ()) != &#039;\n&#039;)&lt;br /&gt;
      handleInput(ch);&lt;br /&gt;
    &lt;br /&gt;
    if (state.accepting) &lt;br /&gt;
      System.out.println(&amp;quot;Prihvata&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Odbija&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
b) &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class FSM_TT&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
enum State {&lt;br /&gt;
    S0( false ),&lt;br /&gt;
    S1( true ),&lt;br /&gt;
    ERROR( false );&lt;br /&gt;
&lt;br /&gt;
    final boolean accepting;&lt;br /&gt;
&lt;br /&gt;
    State( boolean accepting ) {&lt;br /&gt;
        this.accepting = accepting;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static State state;&lt;br /&gt;
static State transition[3][2] = &lt;br /&gt;
{&lt;br /&gt;
	{ State.S1, State.ERROR},&lt;br /&gt;
	{ State.S1, State.S0},&lt;br /&gt;
	{ State.ERROR, State.ERROR}&lt;br /&gt;
};  &lt;br /&gt;
  static void handleInput(int ch)&lt;br /&gt;
  {&lt;br /&gt;
    int index;&lt;br /&gt;
	switch( ch ) &lt;br /&gt;
    {&lt;br /&gt;
      case 0:&lt;br /&gt;
	    index=0;&lt;br /&gt;
		break;&lt;br /&gt;
	  case 1:&lt;br /&gt;
		index=1;&lt;br /&gt;
		break;&lt;br /&gt;
	  default:&lt;br /&gt;
	    state=State.ERROR;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
    state = transition[state.ordinal()][index];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) throws java.io.IOException&lt;br /&gt;
  {&lt;br /&gt;
	int ch;&lt;br /&gt;
    state = State.S0;&lt;br /&gt;
    while ((ch = System.in.read ()) != &#039;\n&#039;)&lt;br /&gt;
      handleInput(ch);&lt;br /&gt;
    &lt;br /&gt;
    if (state.accepting) &lt;br /&gt;
      System.out.println(&amp;quot;Prihvata&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Odbija&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>Kiu</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2022&amp;diff=8164</id>
		<title>Програмски преводиоци 1/К1 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2022&amp;diff=8164"/>
		<updated>2025-12-01T13:50:03Z</updated>

		<summary type="html">&lt;p&gt;Kiu: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Prvi kolokvijum 2022. godine&#039;&#039;&#039; održan je 31. oktobra i trajao je 90 minuta. Postavka roka još uvek nije zvanično dostupna sa stranice predmeta.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data su tri deterministička automata, M, N i P.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Napraviti deterministički konačni automat K koji prihvata sekvence tipa &amp;lt;math&amp;gt;s_1|(s_2s_3)&amp;lt;/math&amp;gt;, gde su &amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt; sve sekvence koje automat M odbija, a &amp;lt;math&amp;gt;s_2&amp;lt;/math&amp;gt; i &amp;lt;math&amp;gt;s_3&amp;lt;/math&amp;gt; sekvence koje automati N i P prihvataju, respektivno.&lt;br /&gt;
# Od automata iz tačke pod a napraviti desno-linearnu gramatiku, a zatim iz nje izbaciti sve nedostižne ili mrtve neterminale.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat M&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat N&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
| E&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D&lt;br /&gt;
| E&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! F&lt;br /&gt;
| F&lt;br /&gt;
| E&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat P&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Nedeterminstički automat koji prihvata s2s3&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! F&lt;br /&gt;
| F,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 2 &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Determinstički automat koji prihvata s2s3&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2 &lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Nedeterministički automat koji prihvata traženu sekvencu&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| D,1&lt;br /&gt;
| 1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Deterministički automat koji prihvata traženu sekvencu&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! a&lt;br /&gt;
! 1&lt;br /&gt;
|-&lt;br /&gt;
| {A,D,1}, S0&lt;br /&gt;
| A,1&lt;br /&gt;
| B,E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {A,1}, S1&lt;br /&gt;
| A,1&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {B,E}, S2&lt;br /&gt;
| B&lt;br /&gt;
| C,D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {2}, S3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {B}, S4&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {C,D,1}, S5&lt;br /&gt;
| A,1&lt;br /&gt;
| C,E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {E}, S6&lt;br /&gt;
| &lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {1}, S7&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {C}, S8&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {C,E}, S9&lt;br /&gt;
| A&lt;br /&gt;
| C,D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {D,1}, S10&lt;br /&gt;
| 1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {A}, S11&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Aritmetički izraz se sastoji iz nula ili više brojeva, gde je broj niz cifara, sa aritmetičkim operacijama sabiranja ili oduzimanja između njih. Ukoliko su terminali u datoj azbuci jedna cifra (&amp;quot;CIFRA&amp;quot;), znak za sabiranje (&amp;quot;+&amp;quot;) i znak za oduzimanje (&amp;quot;-&amp;quot;) napisati regularni izraz koji opisuje date aritmetičke izraze, a zatim ga pretvoriti u deterministički konačni automat korišćenjem metoda pozicija.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Datoteka:PPR K1 2022 zadatak 2 stablo.svg|thumb|center|Poziciono stablo u drugom zadatku.]]&lt;br /&gt;
Zadato rešenje nije tačno jer ne prihvata jedan Broj (bez aritmetičkih operacija).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
|-&lt;br /&gt;
! Pozicija&lt;br /&gt;
! Sledeća pozicija&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| /&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Deterministički konačni automat za traženi regularni izraz&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! CIFRA&lt;br /&gt;
! +&lt;br /&gt;
! -&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| 1,5&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
[[Datoteka:PPR K1 2022 zadatak 3 automat.svg|thumb|Konačni automat iz postavke zadatka.]]&lt;br /&gt;
Napisati fragment programskog koda koji implementira konačni automat sa slike:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# eksplicitnom predstavom funkcije stanja&lt;br /&gt;
# implicitnom predstavom funkcija stanja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
a) &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class FSM&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
enum State {&lt;br /&gt;
    S0( false ),&lt;br /&gt;
    S1( true ),&lt;br /&gt;
    ERROR( false );&lt;br /&gt;
&lt;br /&gt;
    final boolean accepting;&lt;br /&gt;
&lt;br /&gt;
    State( boolean accepting ) {&lt;br /&gt;
        this.accepting = accepting;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static State state;&lt;br /&gt;
  &lt;br /&gt;
  static void handleInput(int ch)&lt;br /&gt;
  {&lt;br /&gt;
    switch( state ) &lt;br /&gt;
    {&lt;br /&gt;
      case S0:&lt;br /&gt;
      	if ( ch==0 )&lt;br /&gt;
          state = State.S1;&lt;br /&gt;
        else&lt;br /&gt;
          state = State.ERROR;&lt;br /&gt;
        break;&lt;br /&gt;
      &lt;br /&gt;
      case S1:&lt;br /&gt;
      	if ( ch==0 )&lt;br /&gt;
          state = State.S1;&lt;br /&gt;
        else if ( ch==1 )&lt;br /&gt;
          state = State.S0;&lt;br /&gt;
&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
      case ERROR:&lt;br /&gt;
        state = State.ERROR;&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String[] args) throws java.io.IOException&lt;br /&gt;
  {&lt;br /&gt;
	int ch;&lt;br /&gt;
    state = State.S0;&lt;br /&gt;
    while ((ch = System.in.read ()) != &#039;\n&#039;)&lt;br /&gt;
      handleInput(ch);&lt;br /&gt;
    &lt;br /&gt;
    if (state.accepting) &lt;br /&gt;
      System.out.println(&amp;quot;Prihvata&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Odbija&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
b) &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class FSM_TT&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
enum State {&lt;br /&gt;
    S0( false ),&lt;br /&gt;
    S1( true ),&lt;br /&gt;
    ERROR( false );&lt;br /&gt;
&lt;br /&gt;
    final boolean accepting;&lt;br /&gt;
&lt;br /&gt;
    State( boolean accepting ) {&lt;br /&gt;
        this.accepting = accepting;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static State state;&lt;br /&gt;
static State transition[3][2] = &lt;br /&gt;
{&lt;br /&gt;
	{ State.S1, State.ERROR},&lt;br /&gt;
	{ State.S1, State.S0},&lt;br /&gt;
	{ State.ERROR, State.ERROR}&lt;br /&gt;
};  &lt;br /&gt;
  static void handleInput(int ch)&lt;br /&gt;
  {&lt;br /&gt;
    int index;&lt;br /&gt;
	switch( ch ) &lt;br /&gt;
    {&lt;br /&gt;
      case 0:&lt;br /&gt;
	    index=0;&lt;br /&gt;
		break;&lt;br /&gt;
	  case 1:&lt;br /&gt;
		index=1;&lt;br /&gt;
		break;&lt;br /&gt;
	  default:&lt;br /&gt;
	    state=State.ERROR;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
    state = transition[state.ordinal()][index];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) throws java.io.IOException&lt;br /&gt;
  {&lt;br /&gt;
	int ch;&lt;br /&gt;
    state = State.S0;&lt;br /&gt;
    while ((ch = System.in.read ()) != &#039;\n&#039;)&lt;br /&gt;
      handleInput(ch);&lt;br /&gt;
    &lt;br /&gt;
    if (state.accepting) &lt;br /&gt;
      System.out.println(&amp;quot;Prihvata&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Odbija&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>Kiu</name></author>
	</entry>
</feed>