Close
Duke shfaqur rezultatin 1 deri 12 prej 12
  1. #1
    Programues Softueresh Maska e edspace
    Anėtarėsuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Mosha
    37
    Postime
    2,573
    Faleminderit
    0
    Falenderuar 2 herė nė 1 postim

    Sfidė: Parseri i shprehjeve "prefiks", "infiks" dhe "postfiks"

    Sfida ėshtė hapur nga Grupi Teknologjik i Prishtinės. Po e hedhim nė forum qė anėtarėt tė mund tė diskutojnė zgjidhjet dhe tė mėsojnė nga eksperienca e njėri-tjetrit. Tema do qėndrojė e mbyllur gjatė kohės qė sfida ėshtė e hapur dhe zgjidhja juaj nuk duhet bėrė publike gjatė kėsaj kohe. Kur tė skadojė afati i lejuar, tema do hapet dhe pastaj mund tė postoni pėrgjigjet tuaja dhe tė diskutoni me anėtarėt e tjerė.

    Krijuar/Pėrpiluar nga: Betim DEVA -
    Problemi eshte i hapur
    Prej: 16/08/2005 Deri: 06/09/2005

    Shprehjet prefiks (para pozicionim), infiks(brenda pozicionim) dhe postfiks (pas pozicionim) janė mėnyra se si tė llogariten shprehjet aritmetike. Pėr njeriun zakonisht pėrdoret pozicionim i brendshėm (infiks), mirėpo jo tė gjitha gjuhėt programuese dhe llogaritėsit e ndryshėm aritmetik e pėrdorin kėtė lloj shprehje (sistem shenjash) . Nė kėtė detyrė ju duhet tė bėni parserin (analizuesin gramatikor) tė shprehjes dhe/ose llogaritėsin e shprehjes pėrkatėse. Teknikė tė ngjajshme pėrdorin kompiluesit e interpretuesit e pėr analizimin gramatikor (Ang: parsing) tė shprehjeve dhe llogaritjen e tyre.
    Pėr shkak tė kompleksiteti ky program ndahet nė disa pjesė:

    a) Tė shkruhet programi qė bėn konvertimin e shprehjes prefiks dhe postfiks nė atė infiks.

    Shembull 1 (prefiks nė infiks):
    + ( * ( + 1 4 ) 5 ) * 6 8
    ose
    + * + 1 4 5 * 6 8

    Dalja:
    ( ( 1 + 4 ) * 5 ) + 6 * 8



    Shembull 2 (postfiks nė infiks):

    1 4 + 5 * 6 8 * +

    Dalja:
    ((1 + 4) * 5) + 6 * 8


    b) Tė shkruhet programi qė bėn konvertimin e shprehjes infiks nė atė prefiks dhe postfiks.

    Shembull 3 (infiks nė prefiks):
    ( ( 1 + 4 ) * 5 ) + 6 * 8

    Dalja:
    + ( * ( + 1 4 ) 5 ) * 6 8
    ose
    + * + 1 4 5 * 6 8


    Shembull 4 (infiks nė postfiks):
    ((1 + 4) * 5) + 6 * 8

    Dalja:
    1 4 + 5 * 6 8 *+


    c) Rezultati tė gjindet dhe tė kthehet. Programi duhet tė pyet se ēfarė shprehje po llogaritet (prefiks,infiks apo postfiks) dhe tė kthen rezultatin. Nė shembujt e mėsipėrm, rezultati duhet tė jetė 73. Kllapat e vogla mund tė paraqiten apo jo sipas nevojės, me rėndėsi ėshtė tė shtypet rezultati pėrkatės pėr ēdo lloj.

    ---

    Qė ta thjeshtojmė programin, le tė konsiderojmė qė simbolet (Ang:tokens) ndahen me hapėsirė (Ang: space apo tab). Pėr ta thjeshtuar, simbolet pėr kėtė program mund tė jenė:
    +
    *
    (
    )
    [0-9]



    Pėrparsia e operatorėve/simboleve ėshtė kjo:
    1) Kllapat ( dhe )
    2) Shumėzimi (majtas kah e djathta)
    3) Mbledhja (majtas kah e djathta)




    Pėr kėtė detyrė, mjafton tė bėni njėrėn nga pjesėt a), b), apo c). Nėse i bėni tė gjitha pjesėt, programin mund ta organizoni si njė tėrėsi apo edhe t'i ndani nė disa programe tė vogla qė i korrespondojnė ēdo pjese.

    Analizuesi duhet tė ketė mundėsi tė analizon edhe shprehje tė tjera.

    Programi le tė shkruhet pėr modin tekstual. Hyrjet mund tė futen nga tastiera, apo edhe tė lexohen nga skeda. Daljet mund tė paraqiten nė terminal apo edhe tė shkruhen nė skedė. Programi tė kodohet ashtu qė gjatėsia e njė rreshti mos tė kalojė 80 karakterė. Pėr kėtė sfidė, programi mund tė shkruhet nė C, C++, C#, Java, Visual Basic, VB .NET, Perl, PHP, Scheme/Lisp, Prolog. Nėse dėshironi qė programin ta shkruani nė ndonjė gjuhė tjetėr programuese qė nuk ėshtė cekur mė lartė, atėherė ju lutemi qė sė pari tė na kontaktoni nėpėrmjet adresės tė shfaqur mė poshtė, nė mėnyrė qė tė jemi tė sigurt se a mundemi ta vlerėsojmė programin tuaj nė atė gjuhė. Nėse programi juaj pėrmban mė shumė se njė skedė atėherė le tė arkivohet si tar.gz apo zip dhe si i tillė le tė dėrgohet nė programim ET pr-tech PIKE net.

    Rezultatet dhe kodet e sakta do tė paraqiten (1) njė javė mė sė largu pas skadimit tė afatit tė problemit.

    Nėse keni ndonjė pyetje lidhur me pėrpilimin e sfidės, na kontaktoni nė programim ET pr-tech PIKE net.
    .
    Ndryshuar pėr herė tė fundit nga edspace : 19-08-2005 mė 01:53

  2. #2
    Programues Softueresh Maska e edspace
    Anėtarėsuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Mosha
    37
    Postime
    2,573
    Faleminderit
    0
    Falenderuar 2 herė nė 1 postim
    Mqns sfida mė lart ėshtė paksa e komplikuar, tema do qėndrojė e hapur qė tė mund tė bėhen diskutime pėr algoritmat e ndryshme qė mund tė pėrdoren. Mund tė shkėmbeni mendime, por mos publikoni pjesė kodi para se tė skadojė afati i lejuar.

  3. #3
    i/e regjistruar Maska e al5f1nx
    Anėtarėsuar
    23-03-2004
    Vendndodhja
    pothuajse se aty ku duhet
    Postime
    92
    Faleminderit
    0
    0 falenderime nė 0 postime
    He he ! Kjo eshte nje cike me e komplikuar se te zakonshmet mgjt eshte shume interesante. Vecanerisht sepse parseri eshte nje nga komponentet kryesore ne ndertimin e kompilatoreve ( jam vecanerisht i interesuar per kete ).

    Tani, sa per sfiden. Une kam filluar te punoj nga pak ne perl por me teper po perpiqem te ndaj ne dua te bej piken b) apo c) jo sepse eshte e pamundur te behet e gjidha por do kerkonte goxha pune. Pastaj mendoj se do kthehej me teper ne projekt se sa ne nje sfide instruktive/argetuese.

    deri tani kam punuar nje pjese te kodit qe merr shprehjen si stringe dhe e analizon duke e ndare ne instanca te vecanta. dmth
    per llogaritjen e :

    (A/B)+(C * (D-E))

    analizohen

    (A/B)
    (D-E)
    (C*(D-E))
    dhe pastaj
    (A/B)+(C * (D-E))

    Ideja ime fillestare eshte natyrisht per te perdorur nje funksion rekursiv. Aty ku kam ngelur tani eshte fakti qe pasi t'i kem ndare dhe perpunuar (prefix apo postfix) te gjithe keto perberes t'i implementoj ne shprejne e plote.

    do me duhet nje cike kohe dhe mendoj se do ia arrij po do isha shume i interesuar te degjoja edhe ide te tjera,

    respekte
    Geniality is a state of mind

  4. #4
    mos e luaj; I DEBUAR! Maska e qoska
    Anėtarėsuar
    17-05-2004
    Vendndodhja
    tirane
    Postime
    837
    Faleminderit
    0
    0 falenderime nė 0 postime
    Per mua zgjidhja me e mire eshte perdorimi i nje peme binare e cila eshte struktura tipike per kete lloj problemi per te tre pikat e kerkuara.

    Kujdesi me i madh eshte gjate leximit te shprehjes dmth formimit te pemes pastaj cdo gje eshte e thjeshte pasi ne varesi te leximit te pemes si ne fillim ne gjeresi ose ne gjatesi mund te shfaqet rezultati shume thjesht dhe te nxirret totali i shprehjes.

    Variant tjeter eshte perdorimi i stack(radhes) si keto mund te duhen dy ose tre.
    Mgjithese me kete strukture te dhenash kompleksiteti cohet ne shfaqen e shprehjes pra perparesia e veprimeve sidomos kur shprehja jepet pa kllapa.

  5. #5
    i/e regjistruar Maska e Gepardi
    Anėtarėsuar
    30-10-2002
    Vendndodhja
    Tiranė
    Mosha
    34
    Postime
    169
    Faleminderit
    0
    0 falenderime nė 0 postime
    Algoritmet per kete pune ne i kemi trajtuar ne shkolle
    Kemi pare tre tipe

    1) Me ane te perdorimit te pemes binare
    2) Me ane te perdorimit te stives (stack)
    3) Duke i shtuar kllapa shprehjes.

    Nese do te kem kohe do te shkruaj ndonje program duke zbatuar nje nga keto algoritme duke pershkruar dhe algoritmin.

  6. #6
    i/e regjistruar Maska e Gepardi
    Anėtarėsuar
    30-10-2002
    Vendndodhja
    Tiranė
    Mosha
    34
    Postime
    169
    Faleminderit
    0
    0 falenderime nė 0 postime
    Edhe pse nuk eshte gjuha me e pershtatshme per kete pune une i bera nje zgjidhje ne PHP per te treguar se si mund te simulojme ne kete gjuhe struktura te dhenash si STIVA (Stack) dhe Pemet Binare.

    Per stive kam perdor nje array dhe ne vend te funksioneve Push() dhe Pop() perdor vete funksionet e gjuhes array_push() dhe array_pop()

    Per pemen binar ekam perdorur nje klase dhe per cdo nyje te pemes krijoj nga nje objekt.

    Algoritmi: Kthe Shrehjen ne Postfix me ane te stives
    1) Kap elementin e radhes nga input
    2) Nqs eshte numer nxirre ate
    3)Nqs ehste kllape hapese fute ne stive
    4)Nqs eshte kllape mbyllese nxirr nga stiva operatoret deri sa te hasesh nje kllape hapese.
    Nxirre kllapen hapese nga stiva dhe injoroje
    5)Nqs eshte operator
    a)nqs stiva eshte bosh ose kreu i stives esht ekllape hapese fute ne stive
    b)nqs ka perparesi me te madhe se kreu i stives fute ne stive
    c)Per ndryshe nxirr operatorin nga stiva, paraqite ne output dhe fut operatorin e ri ne stive
    6)Nqs ka akoma input shko tek 1
    7)Perndryshe nxirr te gjithe operatoret nga stiva dhe paraqit shprehjen


    Kam supozuar se shprehja nuk do kete numra me te medhenje se 1 shifer per mos ta komplikuar. Numri i kllapave shte i palimituar. GJithashtu ky kod nuk kontrollon per gabime apo shenja te papranueshme.

    Kodi PHP:

    <?
    /*---------------------------------------------------------------------------
        
        Emri: Sfida e rradhes nga Pr-Tech
        Pershkrimi: Krijimi dhe vleresimi i shprehjeve infix- postfix
        Punoi: Klesti Hoxha
        Data: 25-8-2005
        
    ---------------------------------------------------------------------------*/
        

        
    class nyje_peme //kjo klase perdoret per te simuluar pemet ne pHP
            
    var $m;    
            var 
    $d;
            var 
    $v;
        }
        
        function 
    perparesi($op) { //funksioni percakton perparesine e operatoreve
            
    switch ($op) {
                case 
    "+":
                case 
    "-":
                    return 
    1;
                break; 
                case 
    "*":
                case 
    "/"
                    return 
    2;
                break;    
            }
        }
        
        function 
    veprim($x,$y,$v) { //funksioni kryen nje veprim
            
    switch ($v) {
                case 
    "+": return $x+$y;
                case 
    "-": return $y-$x;
                case 
    "/": return $y/$x;
                case 
    "*": return $x*$y;
            }
        }
        
        function 
    postfix($shprehja) { //funksioni kthen shprehjen ne postfix duke perdorur algoritmin me stive
            
    $shprehja str_replace(" ","",$shprehja); //pastro shprehjen nga hapesirat
            
    $stiva = array(); //Array qe simulon stiven
            
    $pf '';
            for (
    $i=0;$i<strlen($shprehja);$i++) {
                
    $s $shprehja[$i];
                if (
    is_numeric($s)) $pf .= $s;
                elseif (
    $s == '('array_push($stiva,$s);
                elseif (
    $s == ')') {
                    
    $st array_pop($stiva);
                    while (
    $st != '(') {
                        
    $pf .= $st;
                        
    $st array_pop($stiva);
                    }
                }
                else {
                    
    $kreu $stiva[count($stiva)-1];
                    if (
    $kreu == '' || $kreu == '(' || (perparesi($s) > perparesi($kreu))) array_push($stiva,$s);
                    else {
                        
    $pf .= array_pop($stiva);
                        
    array_push($stiva,$s);
                    }
                }
            } 
    //for
            
            
    while (current($stiva) != false) {
                
    $pf .= array_pop($stiva);
            }
            
            return 
    $pf;
        }

        function 
    Pema($shprehja) { //Krijon pemen binare nga nje shprehje postfix
            
    $stiva = array(); //array qe simulon stiven
            
    for ($i=0;$i<strlen($shprehja);$i++) {
                
    $s $shprehja[$i];
                if (
    is_numeric($s)) {
                    
    $p = new nyje_peme;
                    
    $p->$s;
                    
    $p->NULL;
                    
    $p->NULL;
                    
    array_push($stiva,$p);
                }
                else {
                    
    $p = new nyje_peme;
                    
    $p->$s;
                    
    $p->array_pop($stiva);
                    
    $p->array_pop($stiva);
                    
    array_push($stiva,$p);
                }
            }
            return 
    array_pop($stiva);
        }
        
        function 
    VleraShprehjes($shprehja) {  //Kthen vleren e shprehjes postfix
            
    $stive = array(); //array qe simulon stiven
            
    for ($i=0;$i<strlen($shprehja);$i++) {
                
    $s $shprehja[$i];
                if (
    is_numeric($s)) array_push($stive,$s);
                else {
                    
    $x array_pop($stive);
                    
    $y array_pop($stive);
                    
    $vl veprim($x,$y,$s);
                    
    array_push($stive,$vl);
                }
            }
            return 
    array_pop($stive);
        }
        
        if (!isset(
    $_POST['jepi'])) {
            echo 
    "<form action='$PHP_SELF' method='post'>
            Shkruaj Shprehjen: <input type='text' name='shprehja'>
            <input type='submit' name='jepi' value='Llogarit Shprehjen'>
            </form>"
    ;
        }
        else {
            
    $shprehja $_POST['shprehja'];
            
    $postfix postfix($shprehja);
            echo 
    "Shprehja postfix ėshtė: $postfix<p>";
            
    $vlera VleraShprehjes($postfix);
            echo 
    "Vlera e Saj ėshtė : $vlera";
        }

        
    ?>
    funksioni Pema() kthen pemen binare te shprehjes qe nuk eshte perdorur ne script. Megjithate nga kjo duke bere bredhjet pararendore, pasrendore dhe nderrendore me ane te funksioneve rekurisive te njohura marrim perkatesisht shprehjet prefix(parashtesore), postfix(passhtesore) dhe infix(ndershtesore)

    Shembull:

    Kodi PHP:
    //Shprehja postfix
          
    function postfix($pema) {
                 if (
    $pema != NULL) {
                     
    postfix($p->m);
                     
    postfix($p->d);
                     echo 
    $p->v;
                 }
          } 
    Ndryshuar pėr herė tė fundit nga edspace : 28-08-2005 mė 16:30

  7. #7
    Programues Softueresh Maska e edspace
    Anėtarėsuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Mosha
    37
    Postime
    2,573
    Faleminderit
    0
    Falenderuar 2 herė nė 1 postim
    Klesti,

    Rregullat ishin qė tė mos shfaqej kodi para afatit tė skadimit. Nejse, mend pėr herė tjetėr.

  8. #8
    i/e regjistruar Maska e Gepardi
    Anėtarėsuar
    30-10-2002
    Vendndodhja
    Tiranė
    Mosha
    34
    Postime
    169
    Faleminderit
    0
    0 falenderime nė 0 postime
    Nuk e kisha lexuar kete rregull prandaj e kam postuar. Megjithate mund te fshihet nese prish pune.

  9. #9
    i/e regjistruar Maska e al5f1nx
    Anėtarėsuar
    23-03-2004
    Vendndodhja
    pothuajse se aty ku duhet
    Postime
    92
    Faleminderit
    0
    0 falenderime nė 0 postime
    Citim Postuar mė parė nga edspace
    Klesti,

    Rregullat ishin qė tė mos shfaqej kodi para afatit tė skadimit. Nejse, mend pėr herė tjetėr.


    Gepard, zgjidhja eshte shume interesante dhe si koncept eshte i sakte po a je i sigurt qe kodi funksionon?

    Mua nu k me ekzekutohet. Nuk nxjerr asnje output.

    inputi im : ( ( 1 + 4 ) * 5 ) + (6 * 8)


    outputi i scriptit:
    Shprehja postfix ėshtė: 1+4 *5 +6*8
    Vlera e Saj ėshtė :


    Geniality is a state of mind

  10. #10
    Programues Softueresh Maska e edspace
    Anėtarėsuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Mosha
    37
    Postime
    2,573
    Faleminderit
    0
    Falenderuar 2 herė nė 1 postim
    Problemi shkaktohet nga boshlleqet midis simboleve. Po tė fshish boshlleqet, programi punon siē duhet.

    Tė dhėnat: ((1+4)*5)+(6*8)

    Rezultati:
    Kodi:
    Notice: Undefined offset: 2 in C:\Program Files\Apache Group\Apache2\htdocs\prefix.php on line 56
    
    Notice: Undefined offset: 1 in C:\Program Files\Apache Group\Apache2\htdocs\prefix.php on line 56
    
    Notice: Undefined offset: 0 in C:\Program Files\Apache Group\Apache2\htdocs\prefix.php on line 56
    
    Notice: Undefined offset: 2 in C:\Program Files\Apache Group\Apache2\htdocs\prefix.php on line 56
    Shprehja postfix ėshtė: 14+5*68*+
    Vlera e Saj ėshtė : 73
    Sipas kėrkesės duhet qė numrat tė ndahen me boshllėqe. Nė kėtė mėnyrė mund tė pėrdoren numra disa shifrorė dhe shprehjet tė shkėmbehen nė disa forma automatikisht, dmth rezultati i njė funksioni tė mund tė jenė tė dhėnat e njė funksioni tjetėr.
    Ndryshuar pėr herė tė fundit nga edspace : 26-08-2005 mė 20:46

  11. #11
    i/e regjistruar Maska e Gepardi
    Anėtarėsuar
    30-10-2002
    Vendndodhja
    Tiranė
    Mosha
    34
    Postime
    169
    Faleminderit
    0
    0 falenderime nė 0 postime
    Problemi i hapesirave korrigjohet lehte.
    Une kisha marre parasysh ti pastroja hapesirat (meqe nuk i bera nje zgjidhje te plote sfides por thjesht krijova disa funksione qe zgjidhin problemin).

    Kam harruar dicka:

    Kodi PHP:

    //Tek rreshti
     
    str_replace(" ","",$shprehja// tek funksioni postfix

    //duhet 

     
    $shprehja str_replace(" ","",$shprehja); //kjo pastron hapesirat


    // Moderatori:  Korrigjova programin sipas udhėzimeve mė lart. 

    Gjithashtu sic e thashe scripti qe kam shkruar nuk kontrollon per gabime.
    Ndryshuar pėr herė tė fundit nga edspace : 28-08-2005 mė 16:30

  12. #12
    i/e regjistruar Maska e Gepardi
    Anėtarėsuar
    30-10-2002
    Vendndodhja
    Tiranė
    Mosha
    34
    Postime
    169
    Faleminderit
    0
    0 falenderime nė 0 postime
    Ja dhe zgjidhja e plote e sfides. Kodi kete rradhe kontrollon dhe per gabime gjithashtu shprehja duhet shkruar duke perdorur hapesiren boshe per ndarese te simboleve, ne te kundert scripti do te shfaqe sinjal per gabim ne shprehje.
    Kjo realizohet nepermjet funksionit erregullt()

    Kodi PHP:
    <?
    /*---------------------------------------------------------------------------
        
        Emri: Sfida e rradhes nga Pr-Tech
        Pershkrimi: Krijimi dhe vleresimi i shprehjeve infix- postfix
        Punoi: Klesti Hoxha
        Data: 31-8-2005
        
    ---------------------------------------------------------------------------*/
        

        
    class nyje_peme //kjo klase perdoret per te simuluar pemet ne PHP
            
    var $majte;    
            var 
    $djathte;
            var 
    $vlera;
        }
    //-----------Funksioni percakton vlefshmerine e shprehjes-------------    

        
    function erregullt($shprehja) {
            
    $shenjat = array("+","-","*","/",")","("," ");
            if (
    strpos($shprehja,"  ") !== false) die("Keni ndarė shenjat me mė shumė se njė hapėsirė!"); // a ka me shume se nje hapesire ndarese ?
            
    else {
                for (
    $i=0;$i<strlen($shprehja);$i++) { //kontrollo per shenja te palejuara
                    
    if (!in_array($shprehja[$i],$shenjat) && !is_numeric($shprehja[$i])) {
                        die(
    "Keni shkruar shenja te palejuara");
                    }
                }
                
    $shprehja2 $shprehja;
                for (
    $i=0;$i<strlen($shprehja2);$i++) { //kontrollo a jane vendosur mire kllapat
                    
    if ($shprehja2[$i] == '(') {
                        
    $ugjet false;
                        for (
    $j=$i;$j<strlen($shprehja2);$j++) {
                            if (
    $shprehja2[$j] == ')') {
                                
    $shprehja2[$j] = '*';
                                
    $ugjet true;
                                break;
                            }
                        }
                        if (!
    $ugjet) die("Keni Gabim ne vendosjen e kllapave!");
                    } 
    //if
                
    //for
                
    $shprehja $shprehja;
                for (
    $i=strlen($shprehja);$i>=0;$i--) {
                    if (
    $shprehja[$i] == ')') {
                        
    $ugjet false;
                        for (
    $j=$i;$j>=0;$j--) {
                            if (
    $shprehja[$j] == '(') {
                                
    $shprehja[$j] = '*';
                                
    $ugjet true;
                                break;
                            }
                        }
                        if (!
    $ugjet) die("Keni Gabim ne vendosjen e kllapave!");
                    } 
    //if
                
    //for
                 //Kontrollo a jane vene ne rregull hapesirat
                 
    $sh explode(" ",$shprehja);
                  
                 for (
    $i=0;$i<count($sh);$i++) {
                     if (!
    in_array($sh[$i],$shenjat) && !is_numeric($sh[$i])) die("Keni Gabim ne vendosjen e hapesirave!");
                 }
                 
    $nr_hap_lejuara count($sh)-1;
                 
                if (
    substr_count($shprehja," ") != $nr_hap_lejuara) die("Keni Gabim ne vendosjen e hapėsirave!");
                
                
    //Kontrollo per vendosje te parregullt te operatoreve dhe numrave
                
    $operatoret = array("+","-","/","*");
                
    $nr_operatoreve 0;
                for (
    $i=0;$i<count($sh);$i++) {
                    if (
    in_array($sh[$i],$operatoret)) $nr_operatoreve += 1
                }
                
                if (
    $nr_operatoreve != (count($sh)-1)/2) die("Keni gabim ne vendosjen e operatoreve!");
                
            }
            
        }
    //-------------funksioni percakton perparesine e operatoreve-----------------------
        
    function perparesi($op) { 
            switch (
    $op) {
                case 
    "+":
                case 
    "-":
                    return 
    1;
                break; 
                case 
    "*":
                case 
    "/"
                    return 
    2;
                break;    
            }
        }
    //--------------------------funksioni kryen nje veprim    ----------------------------
        
    function veprim($x,$y,$v) { 
            switch (
    $v) {
                case 
    "+": return $x+$y;
                case 
    "-": return $y-$x;
                case 
    "/": return $y/$x;
                case 
    "*": return $x*$y;
            }
        }
    //------------------funksioni kthen shprehjen ne postfix duke perdorur algoritmin me stive-----
        
    function postfix($shprehja) { 
            
    $sh explode(" ",$shprehja);
            
    $stiva = array(); //Array qe simulon stiven
            
    $pf '';
            for (
    $i=0;$i<count($sh);$i++) {
                
    $s $sh[$i];
                if (
    is_numeric($s)) $pf .= "$s ";
                elseif (
    $s == '('array_push($stiva,$s);
                elseif (
    $s == ')') {
                    
    $st array_pop($stiva);
                    while (
    $st != '(') {
                        
    $pf .= "$st ";
                        
    $st array_pop($stiva);
                    }
                }
                else {
                    
    $kreu $stiva[count($stiva)-1];
                    if (
    $kreu == '' || $kreu == '(' || (perparesi($s) > perparesi($kreu))) array_push($stiva,$s);
                    else {
                        
    $pf .= array_pop($stiva);
                        
    $pf .= " ";
                        
    array_push($stiva,$s);
                    }
                }
            } 
    //for
            
            
    while (current($stiva) != false) {
                
    $pf .= array_pop($stiva);
                
    $pf .= " ";
            }
            
    $pf substr($pf,0,-1);
            return 
    $pf;
        }
    //-----------------Krijon pemen binare nga nje shprehje postfix-----------------------------
        
    function Pema($shprehja) { 
            
    $stiva = array(); //array qe simulon stiven
            
    $shp explode(" ",$shprehja);
            for (
    $i=0;$i<count($shp);$i++) {
                
    $s $shp[$i];
                if (
    is_numeric($s)) {
                    
    $p = new nyje_peme;
                    
    $p->vlera $s;
                    
    $p->majte NULL;
                    
    $p->djathte NULL;
                    
    array_push($stiva,$p);
                }
                else {
                    
    $p = new nyje_peme;
                    
    $p->vlera $s;
                    
    $p->djathte array_pop($stiva);
                    
    $p->majte array_pop($stiva);
                    
    array_push($stiva,$p);
                }
            }
            return 
    array_pop($stiva);
        }
    //---------------------------Kthen vleren e shprehjes postfix    -----------------------
        
    function VleraShprehjes($shprehja) {  
            
    $stive = array(); //array qe simulon stiven
            
    $shp explode(" ",$shprehja);
            for (
    $i=0;$i<count($shp);$i++) {
                
    $s $shp[$i];
                if (
    is_numeric($s)) array_push($stive,$s);
                else {
                    
    $x array_pop($stive);
                    
    $y array_pop($stive);
                    
    $vl veprim($x,$y,$s);
                    
    array_push($stive,$vl);
                }
            }
            return 
    array_pop($stive);
        }
    //-------------------------Shprehja prefix (nga bredhja e pemes)-------------
        
    function prefix($p) {
            if (
    $p != NULL) {
                echo 
    $p->vlera ." ";
                
    prefix($p->majte);
                
    prefix($p->djathte);
            }
        }    
    //----------------Fillimi i programit --------------------------------

        
    if (!isset($_POST['jepi'])) {
            echo 
    "<form action='$PHP_SELF' method='post'>
            Shkruaj Shprehjen infix: <input type='text' name='shprehja'>
            <input type='submit' name='jepi' value='Llogarit Shprehjen'>
            </form>"
    ;
        }
        else {
            
    $shprehja $_POST['shprehja'];
            
    erregullt($shprehja);
            
    $postfix postfix($shprehja);
            
    $pema Pema($postfix);
            echo 
    "Shprehja postfix ėshtė: $postfix<p>
            Shprehja prefix ėshtė: 
            "
    ;
            
    prefix($pema);
            echo 
    "<p>";
            
    $vlera VleraShprehjes($postfix);
            
            echo 
    "Vlera e Saj ėshtė : $vlera";
        }

        
    ?>
    Skedarėt e Bashkėngjitur Skedarėt e Bashkėngjitur

Ruaj Lidhjet

Regullat e Postimit

  • Ju nuk mund tė hapni tema tė reja.
  • Ju nuk mund tė postoni nė tema.
  • Ju nuk mund tė bashkėngjitni skedarė.
  • Ju nuk mund tė ndryshoni postimet tuaja.
  •