Arkadaşlar kodun az biyeri kaldı iyi bilenlerden tamamlamasını rica etcem.
Kodda genel olarak - control fonksiyonuyla harf girilmemesini ve parantez sayısı kontrolü var
- calculate ile en içteki parantez içini alıyor
- calc ile 4 işlem
- operate kaldı burda ise mesela çarpma geldi bunun pozisyonunu bulup sola ve saga giderek sayıları alıcaz stringe atıp sonucu bulucaz.
- [ Tüm kodu seç ] [ Yeni Pencerede Göster ]
// week3.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <fstream> #include <string> #include <sstream> using namespace std; int control(string s) { int count=0,i; int len=s.length(); string regular="0123456789*/+()"; size_t found; for(i=0;i<len;i++) { found=regular.find(s[i]); if (found==string::npos) return 0; } for(i=0;i<len;i++) { if(s[i]=='(') count++; else if(s[i]==')') count--; if(count<0) return 0; } if(count!=0) return 0; return 1; } int calculate(string s) { size_t found; int paranEnd,paranBeg; string regular="0123456789*/+()"; found=regular.find(')'); if (found!=string::npos) { paranEnd=regular.find(')'); for(int i=paranEnd;i>-1;i--) { if(s[i]=='(') { paranBeg=i; break; } } string sub=s.substr(paranBeg+1,paranEnd-paranBeg-1); operate(sub) } return 1; } string calc(string s1,string s2,char op) { int a,b,result; a=atoi(s1.c_str()); b=atoi(s2.c_str()); stringstream ss; switch(op) { case '+': result=a+b; break; case '-': result=a-b; break; case '*': result=a*b; break; case '/': if(!b) result=0; else result=a/b; break; } ss << result; return ss.str(); } string operate(string s) { } int _tmain(int argc, _TCHAR* argv[]) { //string s; //s=calc("12","15",'*'); //cout<<s<<endl; while(1) { cout<<"Enter a calculation"<<endl; cin>>s; if(control(s)) break; } system("PAUSE"); return 0; }