///////////////////////////////////////////////////////
//                                                   //
//       Московский Государственный Технический      //
//           Университет Гражданской Авиации         //
//                                                   //
//      Курсовая работа студента группы: ЭВМ-2-2     //
//           Новичкова Виталия Дмитриевича           //
//                                                   //
// (с) 2005-2012 Система Компьютнрных Сетей  WohlNET //
//                                                   //
///////////////////////////////////////////////////////

//Рассчет следующей точки на графике

int next(char *s,char *sid)	//Функция Next
{
int c,count=0;
static int i=0;
char cbuf[50];
    if(Oper.Op=='╞') i=0;
    for (;;)
    {
	c=s[i++];
	if(strchr("+-*/^()\n",c)!=NULL&&i!=1)
	{
	    if(c=='*'&&s[i]=='*')
	    {
                    i=i+1;
                    return Oper.Op='^';
	    }
            return Oper.Op=c;
        }
        if(isspace(c)) continue;
	if(isdigit(c)||c=='.'||c=='x')
        {
 
                        for(;(c=='x'||(c>='0'&&c<='9')||c=='.');)
			{
                                if(c=='x')
                                     {
                                        if(s[i-i]=='-') Oper.tokval=-1*Oper.x;
                                        else
					Oper.tokval=Oper.x;
					return Oper.Op='n';
                                     }
                                cbuf[count++]=c;
                                cbuf[count]='\0';
                                c=s[i++];
                        }
                        i-=1;
			Oper.tokval=atof(cbuf);
                        return Oper.Op='n';
	}
	if(isalpha(c))
	{
		if(c=='p'&&s[i++]=='i')
                {
                        Oper.tokval=pi;
			return Oper.Op='n';
 
                }
		do
                {
                        cbuf[count++]=c;
			cbuf[count]='\0';
                        c=s[i++];
		}
                while(isalpha(c));
		strcpy(sid,cbuf);
                i--;
                return Oper.Op='a';//alpha function
        }
    }
}
