Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

infix, prefix...

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji diplomskih i starih studija -> Računarski praktikum 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
blento
Gost





PostPostano: 14:44 uto, 27. 1. 2004    Naslov: infix, prefix... Citirajte i odgovorite

Bok!
Imam problem, zove se spa i zvuci ovako:
Napisi potprogram koji prevodi logicki izraz iz infix u prefix formu, pomocu stog.
Ideje?Pomoc, ili cak rijeseni zadatak???
Jer ja stvarno neznam... :oops:
Bok!
Imam problem, zove se spa i zvuci ovako:
Napisi potprogram koji prevodi logicki izraz iz infix u prefix formu, pomocu stog.
Ideje?Pomoc, ili cak rijeseni zadatak???
Jer ja stvarno neznam... Embarassed


[Vrh]
Void
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 11. 2002. (18:08:22)
Postovi: (FA)16
Sarma = la pohva - posuda
= 8 - 0

PostPostano: 15:03 uto, 27. 1. 2004    Naslov: Citirajte i odgovorite

Hint: Dijkstrin algoritam (koji je bio obradjen na vjezbama)
Ali ako su ti za ovaj zadatak doista potrebni hintovi razmisli kako ces pismeni proci.
Hint: Dijkstrin algoritam (koji je bio obradjen na vjezbama)
Ali ako su ti za ovaj zadatak doista potrebni hintovi razmisli kako ces pismeni proci.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
ja
Gost





PostPostano: 18:09 čet, 29. 1. 2004    Naslov: možda ovako nešto? Citirajte i odgovorite

[code:1]
vioid IME(LIST*l, STACK*s1,STACK*s2)
MAKE_NULL(&s1);
MAKE_NULL(&s2);
position p;
p=FIRST(*l);
if (RETRIEVE(p,*l)==´||´ || RETRIEVE(p,*l)==&& || RETRIEVE(p,*l)==!)
{PUSH(p,&s2);
p=NEXT(p,*l);}
if(RETRIEVE(p,*l)==´(´)
{PUSH(p,&s1);
p=NEXT(p,*l);}
else
if(TOP(s1)==´(´ || EMPTY(s1) || p [color=blue]/*ovdje neznam kako napisati "veći prioritet"*/ TOP(s1))[/color]
{PUSH(p,&s1);
p=NEXT(p,*l);
else
{POP(&s1);
x==POP(&s1);
PUSH(x,&s2);
p=NEXT(p,*l);}
if (RETRIEVE(p,*l)==´)´)
{while (TOP(s1)!=´(´)
{POP(&s1);
x==POP(&s1);
PUSH(x,&s2);
if (TOP(s1)==´(´)
{POP(&s1)}
}
if (p=END(*l))
{POP(&s1)==x;
PUSH(x,&s2);}
while (!EMPTY(s2))
{PUSH(x,&s)
printf("%f",x);}[/code:1]

jel bar nešto dobro??? :? :oops:
Kod:

vioid IME(LIST*l, STACK*s1,STACK*s2)
     MAKE_NULL(&s1);
     MAKE_NULL(&s2);
     position p;
     p=FIRST(*l);
 if (RETRIEVE(p,*l)==´||´ || RETRIEVE(p,*l)==&& || RETRIEVE(p,*l)==!)
        {PUSH(p,&s2);
          p=NEXT(p,*l);}
 if(RETRIEVE(p,*l)==´(´)
         {PUSH(p,&s1);
           p=NEXT(p,*l);}
       else
          if(TOP(s1)==´(´ || EMPTY(s1) || p [color=blue]/*ovdje neznam kako napisati "veći prioritet"*/ TOP(s1))[/color]
              {PUSH(p,&s1);
               p=NEXT(p,*l);
               else
                     {POP(&s1);
                       x==POP(&s1);
                        PUSH(x,&s2);
                       p=NEXT(p,*l);}
if (RETRIEVE(p,*l)==´)´)
      {while (TOP(s1)!=´(´)
              {POP(&s1);
                x==POP(&s1);
                PUSH(x,&s2);
                if (TOP(s1)==´(´)
                   {POP(&s1)}
                                    }
if (p=END(*l))
       {POP(&s1)==x;
         PUSH(x,&s2);}
while (!EMPTY(s2))
         {PUSH(x,&s)
            printf("%f",x);}


jel bar nešto dobro??? Confused Embarassed


[Vrh]
bingo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 05. 11. 2002. (18:03:08)
Postovi: (31)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 17:51 sri, 4. 2. 2004    Naslov: Citirajte i odgovorite

[code:1]
public class InfixToPostfix {
public InfixToPostfix(String ulaz) {
Stog S = new Stog(ulaz.length());

for(int i = 0; i != ulaz.length(); i++) {
char ch = ulaz.charAt(i);
if ((ch >= 'a')&&(ch <= 'w'))
System.out.print(ch);
else if (!((ch =='(')||(ch =='[')||(ch =='{')||(ch == ')')||(ch ==']')||(ch == '}'))) {
S.Push(ch);
if ((ch == '+') || (ch == '-')) {
if ((S.Top() == '*')||(S.Top() == '/'))
while (!(S.isEmpty())) System.out.print(S.Pop());
}

}
if (ch =='(')
S.Push(ch);
if (ch == ')') {
while (S.Top()!='(')
System.out.print(S.Pop());
S.Pop();
}
}
while (!(S.isEmpty())) System.out.print(S.Pop());
}
}
[/code:1]

Evo ti ovo, mada sam poprilicno siguran da se negdje potkrala greska, ali sada ovako na prvi pogled... Davno sam to pisao :oops:

Klasa stog, ti je na netu pod rp2, vjezbe 1 ili 2
Kod:

public class InfixToPostfix    {
   public InfixToPostfix(String ulaz)   {
      Stog S = new Stog(ulaz.length());

      for(int i = 0; i != ulaz.length(); i++)   {
      char ch = ulaz.charAt(i);
      if ((ch >= 'a')&&(ch <= 'w'))   
         System.out.print(ch);
      else if (!((ch =='(')||(ch =='[')||(ch =='{')||(ch == ')')||(ch ==']')||(ch == '}')))   {   
         S.Push(ch);
         if ((ch == '+') || (ch == '-'))   {   
         if ((S.Top() == '*')||(S.Top() == '/'))   
            while (!(S.isEmpty())) System.out.print(S.Pop());
         }

      }
      if (ch =='(')
         S.Push(ch);
      if (ch == ')')   {
         while (S.Top()!='(')
            System.out.print(S.Pop());
         S.Pop();
      }
      }
   while (!(S.isEmpty())) System.out.print(S.Pop());
   }
}


Evo ti ovo, mada sam poprilicno siguran da se negdje potkrala greska, ali sada ovako na prvi pogled... Davno sam to pisao Embarassed

Klasa stog, ti je na netu pod rp2, vjezbe 1 ili 2


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
grossi
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 04. 2004. (16:33:41)
Postovi: (5D)16
Spol: muško
Sarma = la pohva - posuda
= 0 - 0
Lokacija: Delta Neretva

PostPostano: 12:03 pon, 25. 10. 2004    Naslov: Citirajte i odgovorite

[quote="bingo"][code:1]
public class InfixToPostfix {
public InfixToPostfix(String ulaz) {
Stog S = new Stog(ulaz.length());

for(int i = 0; i != ulaz.length(); i++) {
char ch = ulaz.charAt(i);
if ((ch >= 'a')&&(ch <= 'w'))
System.out.print(ch);
else if (!((ch =='(')||(ch =='[')||(ch =='{')||(ch == ')')||(ch ==']')||(ch == '}'))) {
S.Push(ch);
if ((ch == '+') || (ch == '-')) {
if ((S.Top() == '*')||(S.Top() == '/'))
while (!(S.isEmpty())) System.out.print(S.Pop());
}

}
if (ch =='(')
S.Push(ch);
if (ch == ')') {
while (S.Top()!='(')
System.out.print(S.Pop());
S.Pop();
}
}
while (!(S.isEmpty())) System.out.print(S.Pop());
}
}
[/code:1]

Evo ti ovo, mada sam poprilicno siguran da se negdje potkrala greska, ali sada ovako na prvi pogled... Davno sam to pisao :oops:

Klasa stog, ti je na netu pod rp2, vjezbe 1 ili 2[/quote]


Ovo ti je zamalo, naprimjer za "a*b ili a/b" ti ne radi, ne ispisuje ih u Postfix-u
bingo (napisa):
Kod:

public class InfixToPostfix    {
   public InfixToPostfix(String ulaz)   {
      Stog S = new Stog(ulaz.length());

      for(int i = 0; i != ulaz.length(); i++)   {
      char ch = ulaz.charAt(i);
      if ((ch >= 'a')&&(ch <= 'w'))   
         System.out.print(ch);
      else if (!((ch =='(')||(ch =='[')||(ch =='{')||(ch == ')')||(ch ==']')||(ch == '}')))   {   
         S.Push(ch);
         if ((ch == '+') || (ch == '-'))   {   
         if ((S.Top() == '*')||(S.Top() == '/'))   
            while (!(S.isEmpty())) System.out.print(S.Pop());
         }

      }
      if (ch =='(')
         S.Push(ch);
      if (ch == ')')   {
         while (S.Top()!='(')
            System.out.print(S.Pop());
         S.Pop();
      }
      }
   while (!(S.isEmpty())) System.out.print(S.Pop());
   }
}


Evo ti ovo, mada sam poprilicno siguran da se negdje potkrala greska, ali sada ovako na prvi pogled... Davno sam to pisao Embarassed

Klasa stog, ti je na netu pod rp2, vjezbe 1 ili 2



Ovo ti je zamalo, naprimjer za "a*b ili a/b" ti ne radi, ne ispisuje ih u Postfix-u



_________________
------------------------------------------
Toni Grossi

Nekretnine Nekretnine 24 sata
++++++++++++++++++++++
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
grossi
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 04. 2004. (16:33:41)
Postovi: (5D)16
Spol: muško
Sarma = la pohva - posuda
= 0 - 0
Lokacija: Delta Neretva

PostPostano: 12:49 pon, 25. 10. 2004    Naslov: Citirajte i odgovorite

[code:1]public class Algoritam {

/**
*
* @author Toni Grossi
*/

public static void infixToPostfix(String infix)
{
Stog l=new Stog();
//String jj=new String('(');
//l.push(jj);


int i=0, infix_length=0;
String temp=new String(), temp1=new String();
String postfix=new String();
infix_length=infix.length();
if(infix_length<=0)
return;
temp=infix.substring(0);
System.out.println(infix);
for(i=0;i<infix_length;i++)
{
temp=infix.substring(i,i+1);
//System.out.println(temp);
switch(infix.charAt(i))
{
case '(':

l.push("(");
temp="";
break;
case ')':
temp=(String)l.top();
while(temp!=null && (!temp.equals("(")))
{
temp=(String)l.pop();
postfix=postfix+temp;
temp=(String)l.pop();
}
temp="";
break;
case '*':
case '/':
temp1=temp;
if(l.top()!=null)
temp=(String)l.top();
else
temp="";
if(temp.equals("*") || temp.equals("/"))
{
temp=(String)l.pop();
l.push(temp1);
}
else
{
l.push(temp1);
temp="";
}
break;
case '+':
case '-':
temp1=temp;
if(l.top()!=null)
{
temp=(String)l.top();
while(temp.equals("+") || temp.equals("-") || temp.equals("*") || temp.equals("/"))
{
temp=(String)l.pop();
postfix=postfix+temp;
temp=(String)l.top();
if(temp==null)
break;
}
}
temp="";
l.push(temp1);
break;
}
postfix=postfix+temp;
}
while(l.top()!=null)
{
temp=(String)l.pop();
postfix=postfix+temp;
}
System.out.println(postfix);
}
}
[/code:1]


Nadam se da ce ovo puno pomoci
Kod:
public class Algoritam {

  /**
 *
 * @author  Toni Grossi
 */

   public static void infixToPostfix(String infix)
   {
      Stog l=new Stog();
                //String jj=new String('(');
                //l.push(jj);
               
               
      int i=0, infix_length=0;
      String temp=new String(), temp1=new String();
      String postfix=new String();
      infix_length=infix.length();
      if(infix_length<=0)
         return;
      temp=infix.substring(0);
      System.out.println(infix);
      for(i=0;i<infix_length;i++)
      {
         temp=infix.substring(i,i+1);
         //System.out.println(temp);
         switch(infix.charAt(i))
         {
            case '(':
                                       
               l.push("(");
               temp="";
               break;
            case ')':
               temp=(String)l.top();
               while(temp!=null && (!temp.equals("(")))
               {
                  temp=(String)l.pop();
                  postfix=postfix+temp;
                  temp=(String)l.pop();
               }
               temp="";
               break;
            case '*':
            case '/':
               temp1=temp;
               if(l.top()!=null)
                  temp=(String)l.top();
               else
                  temp="";
               if(temp.equals("*") || temp.equals("/"))
               {
                  temp=(String)l.pop();
                  l.push(temp1);
               }
               else
               {   
                  l.push(temp1);
                  temp="";
               }
               break;
            case '+':
            case '-':
               temp1=temp;
               if(l.top()!=null)
               {
                  temp=(String)l.top();
                  while(temp.equals("+") || temp.equals("-") || temp.equals("*") || temp.equals("/"))
                  {   
                     temp=(String)l.pop();
                     postfix=postfix+temp;
                     temp=(String)l.top();
                     if(temp==null)
                        break;
                  }
               }
               temp="";
               l.push(temp1);
               break;
         }
         postfix=postfix+temp;
      }
      while(l.top()!=null)
      {
         temp=(String)l.pop();
         postfix=postfix+temp;
      }
      System.out.println(postfix);
   }
}



Nadam se da ce ovo puno pomoci



_________________
------------------------------------------
Toni Grossi

Nekretnine Nekretnine 24 sata
++++++++++++++++++++++
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
rat in a cage
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 25. 11. 2004. (21:45:48)
Postovi: (22C)16
Sarma = la pohva - posuda
13 = 17 - 4
Lokacija: Zg

PostPostano: 14:11 uto, 7. 11. 2006    Naslov: Citirajte i odgovorite

jel može netko skužit zašto ovo ne radi, gledam već par dana i ne kužim :oops:

[code:1]public class InfixToPostfix3 {

public static void Dijkstrin (String ulaz) {

Stog S=new Stog (ulaz.length());

for (int i=0;i<ulaz.length();i++) {
char znak=ulaz.charAt(i);
//System.out.println ("znak==" +znak);

switch (znak) {
case '(':
S.push (znak); break;
case '*':
case '/':
int k1=1;
while (k1==1) {
if ((S.top()==null) || (S.top().equals("("))) { S.push(znak); k1=0; }
if ((S.top().equals("/")) || (S.top().equals("*"))) { System.out.println (S.pop()); k1=1;}
else {S.push(znak); k1=0;}
}
break;

case '+':
case '-':
int k2=1;
while (k2==1) {
if ((S.top()==null) || (S.top().equals("("))) { S.push(znak); k2=0; }
else {System.out.println (S.pop()); k2=1;}
}
break;
case ')':
while (S.top()!=null && S.top().equals("(")) System.out.println (S.pop());
if (S.top().equals("(")) S.pop();
break;
default: System.out.println (znak);
}

//System.out.println ("Vrh stoga== " +S.top()+ "\n \n");
}

while (S.top()!=null) System.out.println (S.pop());

}

} [/code:1]

ispada da do uvjeta
[code:1]if ((S.top().equals("/")) || (S.top().equals("*")))[/code:1]
u while petlji kod case "*" i "/" nikad ne dođe...gledao sam korak po korak (za npr.a*b*c) i nije mi jasno zašto...meni se čini da se uvijet postiže.
za npr.a+b+c radi normalno.

i sa zagradama mi nešto ne valja, no to mi je zasad manje bitno.

:pray: :pray: :pray: plz help :(
jel može netko skužit zašto ovo ne radi, gledam već par dana i ne kužim Embarassed

Kod:
public class InfixToPostfix3 {

   public static void Dijkstrin (String ulaz) {
         
         Stog S=new Stog (ulaz.length());
         
         for (int i=0;i<ulaz.length();i++) {
            char znak=ulaz.charAt(i);
            //System.out.println ("znak==" +znak);
            
            switch (znak) {
               case '(':
                     S.push (znak); break;
               case '*':
               case '/':
                     int k1=1;
                     while (k1==1) {
                        if ((S.top()==null) || (S.top().equals("("))) { S.push(znak); k1=0; }
                        if ((S.top().equals("/")) || (S.top().equals("*"))) { System.out.println (S.pop()); k1=1;}
                        else {S.push(znak); k1=0;}
                        }
                     break;
               
               case '+':
               case '-':
                     int k2=1;
                     while (k2==1) {
                        if ((S.top()==null) || (S.top().equals("("))) { S.push(znak); k2=0; }
                        else {System.out.println (S.pop()); k2=1;}
                        }
                     break;
               case ')':
                     while (S.top()!=null && S.top().equals("(")) System.out.println (S.pop());
                     if (S.top().equals("(")) S.pop();
                     break;
               default: System.out.println (znak);
               }
               
               //System.out.println ("Vrh stoga== " +S.top()+ "\n \n");
         }
         
         while (S.top()!=null) System.out.println (S.pop());
         
   }

}    


ispada da do uvjeta
Kod:
if ((S.top().equals("/")) || (S.top().equals("*")))

u while petlji kod case "*" i "/" nikad ne dođe...gledao sam korak po korak (za npr.a*b*c) i nije mi jasno zašto...meni se čini da se uvijet postiže.
za npr.a+b+c radi normalno.

i sa zagradama mi nešto ne valja, no to mi je zasad manje bitno.

Pray Pray Pray plz help Sad


[Vrh]
Korisnički profil Pošaljite privatnu poruku
luce
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 08. 02. 2006. (19:47:22)
Postovi: (5A)16
Spol: žensko
Sarma = la pohva - posuda
= 10 - 1

PostPostano: 11:47 sri, 8. 11. 2006    Naslov: Citirajte i odgovorite

if ((S.top().equals("/")) || (S.top().equals("*")))

Jednaku sam gresku i ja imala.... Stvar je u tome sta equals usporedjuje da li su to isti objekti, a ne imaju li isti sadrzaj...
rjesenje:
((S.Top()).toString()).charAt(0)=='/'
if ((S.top().equals("/")) || (S.top().equals("*")))

Jednaku sam gresku i ja imala.... Stvar je u tome sta equals usporedjuje da li su to isti objekti, a ne imaju li isti sadrzaj...
rjesenje:
((S.Top()).toString()).charAt(0)=='/'


[Vrh]
Korisnički profil Pošaljite privatnu poruku
rat in a cage
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 25. 11. 2004. (21:45:48)
Postovi: (22C)16
Sarma = la pohva - posuda
13 = 17 - 4
Lokacija: Zg

PostPostano: 12:26 sri, 8. 11. 2006    Naslov: Citirajte i odgovorite

e hvala ti puno :thankyou:
već sam mislio da sam lud....napisah 3 verzije programa i uvijek nekaj ne radi a kad ono equals :wall:
e hvala ti puno Thank you
već sam mislio da sam lud....napisah 3 verzije programa i uvijek nekaj ne radi a kad ono equals Brick wall


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji diplomskih i starih studija -> Računarski praktikum 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan