c++ da bilimsel hesap makinası

WaterCity
13-10-2011, 00:38   |  #1  
WaterCity avatarı
OP Taze Üye
Teşekkür Sayısı: 0
7 mesaj
Kayıt Tarihi:Kayıt: Eki 2011

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; }