Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 23
  1. #11
    Elite Member
    Join Date
    May 2011
    Gender
    Male
    Posts
    1,465

    Default Re: JAVA. help in data structures(algorithm)


    Quote Originally Posted by moodsey211 View Post
    Postfix ra na siya bai. mao na gigamit nako nga codes sa una.
    sakto diay bro. tnx. naglibog pako gamay ani imong codes. wa kai prefix? hahaha

  2. #12

    Default Re: JAVA. help in data structures(algorithm)

    Wala koy prefix bai. Tagsa ra man gud mi adto gud, kuyog na siya sa project nako adto nga naay state diagram.

    Quote Originally Posted by jairoh_ View Post
    sakto diay bro. tnx. naglibog pako gamay ani imong codes. wa kai prefix? hahaha

  3. #13
    Elite Member
    Join Date
    May 2011
    Gender
    Male
    Posts
    1,465

    Default Re: JAVA. help in data structures(algorithm)

    Quote Originally Posted by moodsey211 View Post
    Wala koy prefix bai. Tagsa ra man gud mi adto gud, kuyog na siya sa project nako adto nga naay state diagram.
    kaguol!

  4. #14
    Elite Member
    Join Date
    May 2011
    Gender
    Male
    Posts
    1,465

    Default Re: JAVA. help in data structures(algorithm)

    u for this day!

  5. #15
    Elite Member
    Join Date
    May 2011
    Gender
    Male
    Posts
    1,465

    Default Re: JAVA. help in data structures(algorithm)

    up for this one again!

  6. #16

    Default Re: JAVA. help in data structures(algorithm)

    jairoh, taga asa ka? tutoran tka pero naay bayad

  7. #17

    Default Re: JAVA. help in data structures(algorithm)

    naa ko nabantayan bro while nag-test ko sa akong code, sayop ang output sa first two examples nga gihatag nimo para sa infix to prefix:

    Quote Originally Posted by jairoh_ View Post
    input inFix expression: (300+23)*(43-21)/(84+7)
    Output in preFix: / * + 300 23 - 43 21 + 84 7

    input inFix expression: (60*4)+(43-21)-(44+7)
    Output in preFix: - + * 60 4 - 43 21 + 44 7
    ugma nlang nko ni i-post ang code kay naa pa ni gamay kulang


  8. #18
    Elite Member
    Join Date
    May 2011
    Gender
    Male
    Posts
    1,465

    Default Re: JAVA. help in data structures(algorithm)

    Quote Originally Posted by darkhero View Post
    naa ko nabantayan bro while nag-test ko sa akong code, sayop ang output sa first two examples nga gihatag nimo para sa infix to prefix:



    ugma nlang nko ni i-post ang code kay naa pa ni gamay kulang

    cge bro. tnx ha, pls butangi ug mga comments, kai gusto ko makasabot.

    hmm. sakto mana akong prefix manually bro. PMDAS man, pero dili tanto kai pareha raman ug value ang addition ug subtraction, also division and multiplication. so left to right kung addition/subtraction, same sad sa multiplication/division. mao sad na ang gihatag samu instructor.
    unsa na imo editor bro?
    Last edited by jairoh_; 03-16-2012 at 09:44 AM.

  9. #19
    Elite Member
    Join Date
    Jun 2010
    Gender
    Male
    Posts
    1,018

    Default Re: JAVA. help in data structures(algorithm)

    Mao ra gyud ni wala nako...editor og compiler...tapol download.
    Otherwise, solved na ni jairoh?

  10. #20

    Default Re: JAVA. help in data structures(algorithm)

    Quote Originally Posted by jairoh_ View Post
    cge bro. tnx ha, pls butangi ug mga comments, kai gusto ko makasabot.

    hmm. sakto mana akong prefix manually bro. PMDAS man, pero dili tanto kai pareha raman ug value ang addition ug subtraction, also division and multiplication. so left to right kung addition/subtraction, same sad sa multiplication/division. mao sad na ang gihatag samu instructor.
    unsa na imo editor bro?
    mao ba bro, hehe wa nko gisubay ug maau ang infix notation, ako ra gi-assume nga kung i-reverse ang postfix kay mao na na ang prefix, pag-test nko sa 4 prefix examples nimo kay ok man siya sa last 2 examples - same result pero lahi na ang resulta sa 1st ug 2nd... then i googled, pwede diay daghan klase pagkasulat sa prefix notation

    Code:
    (4 + 5) * 6
    
    is equal to
    
    * 6 + 4 5    
    
    or   
    
     * + 4 5 6
    source: http://www.hpmuseum.org/rpn.htm

    anyway para mka-sure ta, palihug verify kung equal ba ni nga results...

    Code:
    (300 + 23) * (43 - 21) / (84 + 7)
    
    is equal to
    
    / * + 300 23 - 43 21 + 84 7  (imoha)
    
    or  
    
    * + 300 23 / - 43 21 + 84 7 (akoa)
    ug kani pud...

    Code:
    (60 * 4) + (43 - 21) - (44 + 7)
    
    is equal to
    
    - + * 60 4 - 43 21 + 44 7 (imoha)
    
    or
    
    + * 60 4 - - 43 21 + 44 7 (akoa)
    nia ra ang code bro..

    Code:
    // filename: Notation.java
    
    import java.util.Scanner;
    import java.util.Stack;
    
    public class Notation {
        public static final int PREFIX  = 1;
        public static final int POSTFIX = 2;
    
        private static final String OPEN_BRACKET        = "([{";
        private static final String CLOSE_BRACKET       = "}])";
        private static final String WHITESPACE          = "\n\t ";
        private static final String OPERATOR            = "*/+-";
    
        private static final String MISSING_BRACKET     = "%s %s IS MISSING.";
        private static final String INVALID_CHARACTER   = "INVALID CHARACTER AT INDEX %d.";
    
        private boolean postfix;
    
        private String buffer;
        private String output;
        private Stack<String> stack = new Stack<String>();
    
        public String toString() {
            return output.trim();
        }
    
        public boolean build(String expression, int notation) {
            postfix = notation == POSTFIX;
    
            buffer  = "";
            output  = "";
    
            stack.clear();
    
            int length  = expression.length();
            int index   = postfix ? 0 : length - 1;
    
            while (postfix ? index < length : index >= 0) {
                String token = expression.substring(index, index + 1);
    
                if (OPEN_BRACKET.contains(token)) {
                    if (postfix) {
                        stack.push(token);
                    } else {
                        if (!seekBracket(token)) {
                            return false;
                        }
                    }
                } else if (CLOSE_BRACKET.contains(token)) {
                    if (postfix) {
                        if (!seekBracket(token)) {
                            return false;
                        }
                    } else {
                        stack.push(token);
                    }
                } else if (OPERATOR.contains(token)) {
                    flushBuffer();
    
                    while (!stack.empty() && OPERATOR.contains(stack.peek()) && getPrecedence(token) <= getPrecedence(stack.peek())) {
                        output = postfix ? output + " " + stack.pop() : " " + stack.pop() + output;
                    }
    
                    stack.push(token);
                } else if (Character.isDigit(token.charAt(0)) || Character.isLetter(token.charAt(0))) {
                    buffer = postfix ? buffer + token : token + buffer;
                } else if (!WHITESPACE.contains(token)) {
                    output = String.format(INVALID_CHARACTER, (index + 1));
                    return false;
                }
    
                index += postfix ? 1 : -1;
            }
    
            flushBuffer();
    
            while (!stack.empty()) {
                String token = stack.peek();
    
                if ((postfix ? OPEN_BRACKET : CLOSE_BRACKET).contains(token)) {
                    output = String.format(MISSING_BRACKET, OPEN_BRACKET.contains(token) ? "CLOSE" : "OPEN", getBracketName(token));
                    return false;
                }
    
                output = postfix ? output + " " + stack.pop() : stack.pop() + output;
            }
    
            return true;
        }
    
        private boolean seekBracket(String token) {
            flushBuffer();
    
            while (!stack.empty() && !(postfix ? OPEN_BRACKET : CLOSE_BRACKET).contains(stack.peek())) {
                output = postfix ? output + " " + stack.pop() : " " + stack.pop() + output;
            }
    
            if (stack.empty()) {
                output = String.format(MISSING_BRACKET, CLOSE_BRACKET.contains(token) ? "OPEN" : "CLOSE", getBracketName(token));
                return false;
            }
    
            stack.pop();
            return true;
        }
    
        private void flushBuffer() {
            if (!buffer.isEmpty()) {
                output = postfix ? output + " " + buffer : " " + buffer + output;
                buffer = "";
            }
        }
    
        private String getBracketName(String bracket) {
            return "()".contains(bracket) ? "PARENTHESIS" : "{}".contains(bracket) ? "BRACE" : "BRACKET";
        }
    
        private int getPrecedence(String operator) {
            return "*/".contains(operator) ? 3 : "+-".contains(operator) ? 2 : 0;
        }
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            boolean done = false;
    
            while (!done) {
                System.out.println("------------ MENU ------------");
                System.out.println("[1] CONVERT INFIX TO PREFIX.");
                System.out.println("[2] CONVERT INFIX TO POSTFIX.");
                System.out.println("[3] QUIT PROGRAM.\n");
    
                System.out.print("SELECT FROM MENU [1-3] : ");
                String input = scan.nextLine();
    
                if (!input.isEmpty()) {
                    char selection = input.trim().charAt(0);
    
                    switch (selection) {
                        case '1' :
                        case '2' :
                            System.out.print("\nINPUT EXPRESSION USING INFIX NOTATION : ");
                            String expression  = scan.nextLine();
    
                            if (!expression.trim().isEmpty()) {
                                Notation notation = new Notation();
                                String type = (selection == '1' ? "PREFIX" : "POSTFIX");
    
                                if (notation.build(expression, (int) selection - '0')) {
                                    System.out.println("OUTPUT EXPRESSION IN " + type + " NOTATION : " + notation + "\n");
                                } else {
                                    System.out.println("INFIX EXPRESSION PARSE ERROR. " + notation + "\n");
                                }
    
                                System.out.print("PRESS ENTER TO CONTINUE...");
                                scan.nextLine();
                            } else {
                                System.out.println("EXPRESSION IS EMPTY.");
                            }
    
                            break;
    
                        case '3' :
                            done = true;
                            break;
    
                        default :
                            input = "";
                            break;
                    }
                }
    
                if (input.isEmpty()) {
                    System.out.println("INVALID SELECTION. PLEASE TRY AGAIN.");
                }
    
                System.out.println();
            }
    
            System.out.println("GOODBYE!");
        }
    }
    sample output:

    Code:
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 1
    
    INPUT EXPRESSION USING INFIX NOTATION : (60*4)+(43-21)*(44+7)
    OUTPUT EXPRESSION IN PREFIX NOTATION : + * 60 4 * - 43 21 + 44 7
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 1
    
    INPUT EXPRESSION USING INFIX NOTATION : 12+(2-7)
    OUTPUT EXPRESSION IN PREFIX NOTATION : + 12 - 2 7
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : (300+23)*(43-21)/(84+7)
    OUTPUT EXPRESSION IN POSTFIX NOTATION : 300 23 + 43 21 - * 84 7 + /
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : (60*4)+(43-21)-(44+7) 
    OUTPUT EXPRESSION IN POSTFIX NOTATION : 60 4 * 43 21 - + 44 7 + -
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : (60*4)+(43-21)*(44+7)
    OUTPUT EXPRESSION IN POSTFIX NOTATION : 60 4 * 43 21 - 44 7 + * +
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : 12+(2-7)
    OUTPUT EXPRESSION IN POSTFIX NOTATION : 12 2 7 - +
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : 123 * abc / 4
    OUTPUT EXPRESSION IN POSTFIX NOTATION : 123 abc * 4 /
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : (1 + 2 * 3
    INFIX EXPRESSION PARSE ERROR. CLOSE PARENTHESIS IS MISSING.
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : 1 + 3] * 3    
    INFIX EXPRESSION PARSE ERROR. OPEN BRACKET IS MISSING.
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : (1 + 2 * [3 - 4]) / 3
    OUTPUT EXPRESSION IN POSTFIX NOTATION : 1 2 3 4 - * + 3 /
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 2
    
    INPUT EXPRESSION USING INFIX NOTATION : $1 + 2
    INFIX EXPRESSION PARSE ERROR. INVALID CHARACTER AT INDEX 1.
    
    PRESS ENTER TO CONTINUE...
    
    ------------ MENU ------------
    [1] CONVERT INFIX TO PREFIX.
    [2] CONVERT INFIX TO POSTFIX.
    [3] QUIT PROGRAM.
    
    SELECT FROM MENU [1-3] : 3
    
    GOODBYE!
    * it can handle nested brackets, ex. (1 + 2 * [3 - 4]) / 3
    * it can handle different types of brackets, (), [], {} but for now synonymous ra ang tanan nga opening ug closing brackets
    * basic nga runtime error handling. ex. kung di balance ang brackets kay mo-report siya unsay missing, or naa ba run invalid characters sa input kay pahibaw-on niya ang user
    * it can handle whitespaces, ex. new lines, spaces, tabs. gamit ni para pwede naay space sa input
    * it can handle constants and variables, ex. a + b * c, 1 + 2 * 3, 123 * abc / 4
    * same method ra ang prefix ug postfix, no redundant code, single pass
    * stack ug scanner ray gi-import
    * dali ra i-extend to support other operators, ex. =, ^, %, &, |, etc.


    * wa nko mabutangan ug comments kay dinalian. karon ra pud ko nabakante ug balik. ok ra man tingali kung diri na lang ya ta mag-comment2x


    about sa akong editor kay it depends kung unsay buhaton... kung ginagmay ra nga code parehas ani kay vim or geany akong gamiton. kung dako ang project kay eclipse.
    Last edited by darkhero; 03-17-2012 at 04:59 PM. Reason: naay nkalimtan sa code :-D

  11.    Advertisement

Page 2 of 3 FirstFirst 123 LastLast

Similar Threads

 
  1. Replies: 5
    Last Post: 10-25-2010, 11:25 PM
  2. Looking for a private tuitor in JAVA and DATA Structure PROGRAMMING
    By cyepoohs in forum Networking & Internet
    Replies: 2
    Last Post: 10-25-2010, 11:14 PM
  3. Need help in JAVA plsss.. help 25problems..
    By FrozenBoi in forum Programming
    Replies: 89
    Last Post: 02-09-2010, 02:26 PM
  4. need help in java programming: creating a folder
    By rastaman81 in forum Programming
    Replies: 4
    Last Post: 03-11-2009, 08:51 AM
  5. Need help in Installing Java programs in my Samsung D880
    By Soj in forum Software & Games (Old)
    Replies: 0
    Last Post: 04-24-2008, 06:34 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
about us
We are the first Cebu Online Media.

iSTORYA.NET is Cebu's Biggest, Southern Philippines' Most Active, and the Philippines' Strongest Online Community!
follow us
#top