Jestem początkującym programistą, napisałem program realizujący operacje na stosie. Program pobiera dane oddzielone spacjami. Proszę o podpowiedź czy dany program można byłoby napisać lepiej oraz wytknąć ewentualne niedociągnięcia.

 #include <stdio.h>
#include <string.h>

#define ILE 100

int stos[ILE];
int ile=0;

void push (int elem);
int pop (void);
void wypisz(void);

int main()
{
	char tab[ILE];	
	char znak;
	int i, wart=0;

	puts("Podaj dzialanie w ONP");
	fgets(tab,ILE-1,stdin);
	
	for(i=0; i<strlen(tab)-1; i++)
	{		
		switch(tab[i])
		{
			case'0':case'1':case'2':case'3':case'4':
			case'5':case'6':case'7':case'8':case'9': 
				wart=wart*10+tab[i]-'0';	
				if(tab[i+1]==' ')
				{					
					push(wart);					
					wart=0;					
				}
				break;
			case '+': 
				push(pop() + pop()); 
				break;
			case '*':
				push(pop() * pop()); 
				break;
			case '-':
				znak=pop();
				push(pop()-znak);
				break;
			case '/':
				znak=pop();
				if(znak!=0)
					push(pop()/znak);
				else
					printf("Blad, dzielenie przez 0\n");
				break;
			case ' ':								
				break;
			default:
				printf("Blad, nie znam komendy\n");
				break;
		}	
		wypisz();
	}

	return 0;
}

void push(int elem)
{
	if (ile<ILE)
		stos[ile++]=elem;
	else printf("Blad, stos pelny\n");
}

int pop(void)
{	
	if(ile>0)		
		return stos[--ile];
	else
		printf("Blad, stos pusty\n");
		return 0; 
}

void wypisz(void)
{
	int i;	
	for(i=0;i<ile; i++)
		printf("%d|",stos[i]);
	printf("\n");	
}