Przy wykonywaniu program omija algorytm w pętli while i przechodzi od razu do wypisania wyniku, dlaczego?
#include "stdafx.h"
#include <iostream>
#include <stack>
#include <fstream>
#include <string>
#include <stdio.h>
#include <ctype.h>
using namespace std;
int priorytet(char dzialanie)
{
if((dzialanie=='*') || (dzialanie=='/')) return 2;
else if((dzialanie=='+') || (dzialanie=='-')) return 1;
else return 0;
}
int main()
{
string nazwa;
cout << "Podaj nazwe pliku wejsciowego: ";
cin >> nazwa;
ifstream plik(nazwa.c_str(), ios::in);
if(!plik)
{
cout << "Nie mozna otworzyc pliku.\n";
return 1;
}
char znak,
dzialanie,
tab[20],
wynik[20];
int i=0,
j=0;
stack <int> stos;
while(plik.get(znak)) tab[i++]= znak;
while(i<20)
{
if (isalnum(tab[i]))
{
wynik[j]=tab[i];
j++;
}
else if (tab[i]=='(')
{
stos.push(tab[i]);
}
else if (tab[i]=='+' || tab[i]=='-' || tab[i]=='/' || tab[i]=='*')
{
if (stos.empty())
{
stos.push(tab[i]);
}
else
{
dzialanie=stos.top();
while((priorytet(stos.top()))>=priorytet(tab[i]))
{
wynik[j]=stos.top();
j++;
stos.pop();
}
stos.push(tab[i]);
}
}
else if (tab[i]==')')
{
while(stos.top()=='(')
{
wynik[j]=stos.top();
j++;
stos.pop();
}
stos.pop();
}
i++;
}
for (i=0; i<20; i++)
{
cout << tab[i];
}
cin.get();
cin.ignore();
}