2010-06-01<span id="DSB2510">_</span> #include <iostream> #include <string> #include <cctype> using namespace std; #define BASE_CON ((edge1>0)&&(edge2>0)&&(edge3>0)) #define CON1 (edge1<(edge2+edge3)) #define CON2 (edge2<(edge1+edge3)) #define CON3 (edge3<(edge1+edge2)) #define NUM_CON (strEdge1.find("0",0)&&strEdge2.find("0",0)&&strEdge3.find("0",0)) #define TRI_CONDITIONS (CON1&&CON2&&CON3) #define EQU_TRI_CON ((strEdge1==strEdge2)&&(strEdge2==strEdge3)) #define ISO_TRI_CON ((strEdge1==strEdge2)||(strEdge2==strEdge3)||(strEdge1==strEdge3)) bool IsDigit(string& str); void main() { string strEdge1,strEdge2,strEdge3; int edge1,edge2,edge3; cout<<"please input the three edges with a blank space:"<<endl; cin>>strEdge1>>strEdge2>>strEdge3; while(1){ string strQuit; while(!(IsDigit(strEdge1)&&IsDigit(strEdge2)&&IsDigit(strEdge3))){ cout<<"The three edges must be positive numbers with blank space, please input again"<<endl; cin>>strEdge1>>strEdge2>>strEdge3; } if(!NUM_CON){ cout<<"The input number is improperly,such as/"01/""<<endl; cout<<"Please input again:"<<endl; cin>>strEdge1>>strEdge2>>strEdge3; continue; } edge1=atoi(strEdge1.c_str()); //string 转换成 int edge2=atoi(strEdge2.c_str()); edge3=atoi(strEdge3.c_str()); if(TRI_CONDITIONS && BASE_CON){ cout<<"The input three edges can make a triangle"<<endl; if(EQU_TRI_CON){ cout<<"The maked triangle is An equilateral triangle"<<endl; cout<<"Continue : any others; Quit : q"<<endl; cin>>strQuit; }else if(ISO_TRI_CON){ cout<<"The maked triangle is An isosceles triangle"<<endl; cout<<"Continue :any others; Quit : q"<<endl; cin>>strQuit; }else{ cout<<"The maked triangle is other triangle "<<endl; cout<<"Continue : any others; Quit : q"<<endl; cin>>strQuit; } }else{ cout<<"The three edges cannot make a triangle"<<endl; cout<<"Continue :any others; Quit : q"<<endl; cin>>strQuit; } if(!strQuit.compare("q")){ break; }else{ cout<<"You selected continue, please input three edges:"<<endl; cin>>strEdge1>>strEdge2>>strEdge3; } } } bool IsDigit(string& str) { bool flag=true; for(unsigned int i=0; i<str.length(); i++){ while(!isdigit(str[i])){ flag=false; break; } } return flag; }