4 İşlem

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Keyif Pezosu
    undefined-01
    undefined-01's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    HeadBanger bunu yazdı:
    -----------------------------

    recep ingilizce yetersizliği uyarısı verdk biz :)

    biraz daha anlyabileceğimiz bir şekilde bize anlatırmısın mahsuru yoksa


    -----------------------------

    senin icin editledim postumu :)

     

    Edit : 

    istegini yazayim dedim hemen.

     

     

                string strFormul = 

                    txtFormul.Text

                    .Replace("a", txtA.Text)

                    .Replace("b", txtB.Text)

                    .Replace("c", txtC.Text);

     

                var calc = new System.Data.DataTable();

                var dbSonuc = calc.Compute(strFormul, "");

                MessageBox.Show(dbSonuc.ToString());

     

     

    txtFormul,txtA,txtB,txtC forma eklenmeli. bunuda bir butonun icine yaz.


    Mesaj 25 Temmuz 2012 (Carsamba) Saat: 14:41'da rakkoc tarafından düzenlendi.

    Bana balık tutmayı öğretmeyin; ben balıkçı değilim. Felsefe yapmayın. Ben şefim, aşçıyım. Bana parasıyla balık verin; sushi yapıp satayım, hepimiz karnımızı doyuralım. Yoksa hepimiz balıkçı olursak, bu gölde balık kalmaz. Sürdürülebilir olmalıyız. Çünkü bugün aç bıraktığınız insan, yarın karşınıza harami olarak çıkabilir; kendine de size de zarar verebilir.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cali_KuSu
    Cali_KuSu's avatar
    Kayıt Tarihi: 04/Mayıs/2010
    Dişi

    RebelliouS_SouL bunu yazdı:
    -----------------------------

    Şimdi anladığımı yazim

    a+b=x

    x-c=y

    y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer öyle ise paylaşırım c# olarak.

    formül programda sabit değilmi değişkenlik göstermeyecek.


    -----------------------------

     

    formül sürekli değişecek bunu sürekli belirttim :)

     

    neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Keyif Pezosu
    undefined-01
    undefined-01's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    Cali_KuSu bunu yazdı:
    -----------------------------

    RebelliouS_SouL bunu yazdı:
    -----------------------------

    Şimdi anladığımı yazim

    a+b=x

    x-c=y

    y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer öyle ise paylaşırım c# olarak.

    formül programda sabit değilmi değişkenlik göstermeyecek.


    -----------------------------

     

    formül sürekli değişecek bunu sürekli belirttim :)

     

    neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese


    -----------------------------

     

    Benim yazdigim kod o isi yapiyor zaten :s


    Bana balık tutmayı öğretmeyin; ben balıkçı değilim. Felsefe yapmayın. Ben şefim, aşçıyım. Bana parasıyla balık verin; sushi yapıp satayım, hepimiz karnımızı doyuralım. Yoksa hepimiz balıkçı olursak, bu gölde balık kalmaz. Sürdürülebilir olmalıyız. Çünkü bugün aç bıraktığınız insan, yarın karşınıza harami olarak çıkabilir; kendine de size de zarar verebilir.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cali_KuSu
    Cali_KuSu's avatar
    Kayıt Tarihi: 04/Mayıs/2010
    Dişi

    rakkoc bunu yazdı:
    -----------------------------

    Cali_KuSu bunu yazdı:
    -----------------------------

    RebelliouS_SouL bunu yazdı:
    -----------------------------

    Şimdi anladığımı yazim

    a+b=x

    x-c=y

    y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer öyle ise paylaşırım c# olarak.

    formül programda sabit değilmi değişkenlik göstermeyecek.


    -----------------------------

     

    formül sürekli değişecek bunu sürekli belirttim :)

     

    neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese


    -----------------------------

     

    Benim yazdigim kod o isi yapiyor zaten :s


    -----------------------------

     

    Biraz geç kaldı .. 

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cali_KuSu
    Cali_KuSu's avatar
    Kayıt Tarihi: 04/Mayıs/2010
    Dişi

    rakkoc bunu yazdı:
    -----------------------------

    Cali_KuSu bunu yazdı:
    -----------------------------

    RebelliouS_SouL bunu yazdı:
    -----------------------------

    Şimdi anladığımı yazim

    a+b=x

    x-c=y

    y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer öyle ise paylaşırım c# olarak.

    formül programda sabit değilmi değişkenlik göstermeyecek.


    -----------------------------

     

    formül sürekli değişecek bunu sürekli belirttim :)

     

    neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese


    -----------------------------

     

    Benim yazdigim kod o isi yapiyor zaten :s


    -----------------------------

     

     

    ayrıca denedim çalışmıyor :)

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Keyif Pezosu
    undefined-01
    undefined-01's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    :) sen calistiramamisindir. calisiyor istersen aldigin hatayi yaz bakayim istersen de suanda linuxteyim. windows'a gecince derliyip atarim.


    Bana balık tutmayı öğretmeyin; ben balıkçı değilim. Felsefe yapmayın. Ben şefim, aşçıyım. Bana parasıyla balık verin; sushi yapıp satayım, hepimiz karnımızı doyuralım. Yoksa hepimiz balıkçı olursak, bu gölde balık kalmaz. Sürdürülebilir olmalıyız. Çünkü bugün aç bıraktığınız insan, yarın karşınıza harami olarak çıkabilir; kendine de size de zarar verebilir.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    evde canim sikilmaya baslamisti, bunu gordum. c'de gercekliyim dedim. yaptim, oldu :) .p (xcode ile derledim, calistirdim)

    parantez konusunda, islem konusunda sikinti yok. ayrica ^ power ' i da ekledim. istediginiz kadar yazanbilirsiniz. ama pek dinamik degil, yani aslinda amac algoritmayi yapmak,, bu yuzden bellek ayirirken biraz sabitledim olayi..


    ..
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek
    //
    //  parser.c
    //  exp_parser
    //
    //  Created by guru on 7/22/12.
    //  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
    //
    
    #include "parser.h"
    
    
    #define PRI_POW 2
    #define PRI_MULTI 1
    #define PRI_DIVIS 1
    #define PRI_SUMM 0
    #define PRI_SUBS 0
    
    
    char *m_str_infix;
    char *m_str_temp;
    char *m_str_temp_pt;
    char *m_pt;
    Stack *m_stack;
    Queue *m_qu_postfix;
    int m_global_priority;
    
    
    void initalize_parser(void){
        
        m_stack = create_stack(4096 * 4096);
        m_qu_postfix = create_queue(4096 * 4096);
        m_str_infix = (char *)malloc(sizeof(char) * 4096 * 4096);
        m_str_temp_pt = m_str_temp = (char *)malloc(sizeof(char) * 4096);
        
    }
    
    void free_parser(void){
        close_queue(m_qu_postfix);
        close_stack(m_stack);
        
        free(m_str_infix);
    }
    
    BOOL get_number_if_exist(double *number){
        if (m_str_temp_pt == m_str_temp)
            return FALSE;
        
        *m_str_temp_pt = '\0';
        
        *number = atof(m_str_temp);
        
        m_str_temp_pt = m_str_temp;
        
        return TRUE;
    }
    
    
    void parse(){
        
        Node topStack;
        char chnext;
        double number;
        int priority;
        
        for (; (chnext = *m_pt++) != '\0';) {
            
            switch (chnext) {
                    
                case ',':
                case '.':
                case '0':case '1':case '2':case '3':case '4':
                case '5':case '6':case '7':case '8':case '9':
                    *m_str_temp_pt++ = chnext;
                    break;
                    
                case '(':
                    m_global_priority += 2;
                    break;
                case ')':
                    m_global_priority -= 2;
                    break;
                    
                case '^':
                    priority = PRI_POW + m_global_priority;
                    goto PROG;
                case '*':
                    priority = PRI_MULTI + m_global_priority;
                    goto PROG;
                case '+':
                    priority = PRI_SUMM + m_global_priority;
                    goto PROG;
                case '-':
                    priority = PRI_SUBS + m_global_priority;
                    goto PROG;
                case '/':
                    priority = PRI_DIVIS + m_global_priority;
                    
                PROG:
                    
                    if (get_number_if_exist(&number))
                        queue_put(m_qu_postfix, create_node(number, operand, 0));
                    
                    //if stack is not empty
                    //compare precedences
                    for (; !stack_isempty(m_stack); ) {
                        topStack = stack_pop(m_stack);
                        
                        if (topStack._priority > priority)
                            queue_put(m_qu_postfix, topStack);
                        else {
                            stack_push(m_stack, topStack);
                            break;
                        }
                    }
                    
                    stack_push(m_stack, create_node(chnext, operatr, priority));
                    break;
                default:
                    break;
            }
        }
        
        //last operations
        if (get_number_if_exist(&number))
            queue_put(m_qu_postfix, create_node(number, operand, 0));
        
        for (; !stack_isempty(m_stack); ) {
            queue_put(m_qu_postfix, stack_pop(m_stack));
        }
        
    }
    
    Queue *get_postfix(const char *exp){
        strcpy(m_str_infix, exp);
        
        clear_stack(m_stack);
        
        m_pt = m_str_infix;
        m_global_priority = 0;
        m_str_temp_pt = m_str_temp;
        
        parse();
        
        return m_qu_postfix;
    }
    
    
    
    double calc(Node oper, Node operand1, Node operand2){
        
        switch ((char)oper._value) {
            case '*':
                return operand1._value * operand2._value;
            case '+':
                return operand1._value + operand2._value;
            case '-': 
                return operand1._value - operand2._value;
            case '/':
                return operand1._value / operand2._value;
            case '^':
                return pow(operand1._value, operand2._value);
                
            default:
                perror("unexpectted operator");
                exit(0);
        }
        
    }
    
    double calculate(){
        
        Node node;
        Node topStack;
        Node temp;
        
        clear_stack(m_stack);
        
        for (; !queue_isempty(m_qu_postfix); ) {
            
            node = queue_get(m_qu_postfix);
            
            if (node._type == operand){
                stack_push(m_stack, node);
            }
            else {
                
                if (stack_isempty(m_stack)){
                    perror("there was no number in the stack");
                    exit(0);
                }
                topStack = stack_pop(m_stack);
                
                if (stack_isempty(m_stack)){
                    perror("there was no number in the stack");
                    exit(0);
                }
                temp = stack_pop(m_stack);
                
                //push back the result into the stack
                stack_push(m_stack, create_node(
                                                calc(node, temp, topStack), operand, 0));
            }
        }
        
        node = stack_pop(m_stack);
        
        return node._value;
    }
    
    
    void show(){
        Node node;
        
        for (; !queue_isempty(m_qu_postfix); ) {
            node = queue_get(m_qu_postfix);
            
            node._type == operand ? 
            printf("%f ", node._value) : printf("%c ", (char)node._value);
        }
    }
    
    
    
    
    
    projeyi asagiya ekledim, olayin dondugu kod kismi burasi oldugu icin, bunu da yazayim dedim.
     
    https://www.dropbox.com/s/bhng8h7n6e6ds25/exp_parser.zip

    ..
Toplam Hit: 5704 Toplam Mesaj: 39