السلام عليكم ...
قمت بعمل برنامج يميز بين المدخلات وهي عبارة عن معادلة .. لكن لم استطع صياغة الدالة التي تميز بين المتغيرات من a إلى z
والبرنامج كالتالي :
--------------------
#include<iostream.h>
#include<string.h>
#include<conio.h>
int state=1,index1=0;
char w[50];
int index2=0,l;
char st[10];
void putt(int);
int digits()
{
if(w[index1]>='0' && w[index1]<='9')
{
st[index2++]=w[index1++];
return 1;
}
else
return 0;
}
int sign()
{
if(w[index1]=='-');
{
st[index2++]=w[index1++];
return 1;
}
else
return 0;
}
int oper()
{
if(w[index1++]=='+' || w[index1]=='-' || w[index1]=='*' ||w[index1]=='/')
{
st[index2++]=w[index1++];
putt(2);
return 1;
}
else
return 0;
}
void err()
{
if(state==2)
cout<<"error in position :"<<index1<<"it is not number\n";
else
if(state==4)
cout<<"error in position :"<<index1<<"it is not operation or did not found number after operation\n";
index1-l+1;
}
void main()
{
cin>>w;
l=strlen(w);
w[l]='\0';
while(index1<=l)
{
switch(state)
{
case1: if(digits())
state=3;
else
state=2;
break;
case2: if(sign() && digits())
state=3;
else
err();
break;
case3: if(!(digits()))
{
putt(1);
state=4;
}
break;
case4: if(oper() && digits())
state=5;
else
err();
break;
case5: if(index1==l)
{
putt(1);
index1++;
}
else
if(!(digits()))
{
putt(1);
state=4;
}
break;
}
}
getch();
}
void putt(int a)
{
st[index2]='\0';
switch(a)
{
case1: cout<<"\n"<<st<<" \t"<<"number\n";
index2=0;
break;
case2: cout<<"\n"<<st<<" \t"<<"operation\n";
index2=0;
break;
}
}
بالإضافة إلى ان البرنامج يقول عند التنفيذ :
misplaced else
else الموجودة داخل الدالة sign
أرجو افادتي بشأن else وكذلك الدالة التي تميز بين المتغيرات .. ولكم جزيل الشكر..