C++ omija pętle while

0

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();
}
0

while(plik.get(znak)) tab[i++]= znak;
while(i<20)

teraz widać?
Swoją drogą co za lenistwo patentowane,żeby debuggera nie chcieć odpalić...

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