[c++] funkcja tworzca ONP z typowej notacji

0

Napisalem taka funkcje tworaca to ONP, dziala poprawnie, gdy w danych sa cyfry np. ((1*3)+3)

postanowilem ja przerobic, aby mozna bylo uzywac liczb - np. ((123*345)+3535253), jednak ta wersja wyrzuca segmentation fault

z gory dzieki za pomoc

(licznik na poacztku ma wartosc -1)

 
void Calc::odczyt()
{
    char a = 0, d = 0, t = 0;
    std::vector<char> c;
    std::vector<char>::iterator it;
    it = c.end() - 1;

   
    while (t >= 48 && t <= 57) //gdy nie jest to cyfra, a liczba, to rob tak:
    {
        c.push_back(bufor[++licznik]);
       
    }



    if (*it == '(' ) //tu wystepuje segmentation fault
    {

        odczyt();
        a = bufor[++licznik];
        odczyt();
        licznik++;

        std::cout << a << " ";

    }
    else
        for (it = c.begin(); it != c.end(); it++)
        {
            std::cout << *it;
        }
    std::cout << " ";

} 
0

ale bledny wycinek tam wrzucilem... w miedzy czasie poprawilem i wydaje sie ze poprawnie dziala (alg wymaga pelnego nawiasowania)

 
void Calc::odczyt()
{
    char a = 0, d = 0;

    std::string c;
    std::string::iterator t;
    



   
    c+=(bufor[++licznik]);


    t=c.end()-1;
    if (*t >= '0' && *t<= '9')
    {
        do{
             c+=(bufor[++licznik]);
             t=c.end()-1;
             
        }

        while (*t >= '0' && *t<= '9');

        int k = c.size();
        c[k-1]= ' ';
        --licznik;
    
    }
    

       

    
   t=c.end()-1;
    
    if (*t == '(')
    {

        odczyt();
        a = bufor[++licznik];
        odczyt();
        licznik++;

        std::cout << a << " ";

    }
    else{
        
            std::cout << c;
        
    std::cout << " ";
    }

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1