Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / Калькулятор / Calc / func3
.cpp#include "stdafx.h"
#include <string>
#include <iostream>
#include <math.h>
#include "func1.h"
#include "func2.h"
#include "func4.h"
using namespace std;
//Возведение в степень: f(a,b)=a^b
string func3(string str)
{
int i,p0,p1,p2;
char *tmp1,*tmp2;
char sres[10];
string ptr1,ptr2;
while(str.find("f",0)!=-1)
{
for(i=0;i<str.length();i++)
if(str[i]=='f')
p1=i;
//Если 1-ый параметр является выражением
p0=str.find(",",p1+2);
p2=str.find(")",p0+1);
ptr1=str.substr(p1+2,p0-p1-2);
ptr1=func4(ptr1);
str.replace(p1+2,p0-p1-2,ptr1);
//Если 2-ой параметр является выражением
p0=str.find(",",p1+2);
for(i=0;i<str.length();i++)
if(str[i]==')')
p2=i;
ptr2=str.substr(p0+1,p2-p0-1);
ptr2=func4(ptr2);
str.replace(p0+1,p2-p0-1,ptr2);
//Вычисление f(a,b)
tmp1=new char[p0-p1-2];
str.copy(tmp1,p0-p1-2,p1+2);
tmp2=new char[p2-p0-1];
str.copy(tmp2,p2-p0-1,p0+1);
_gcvt(exp(atof(tmp2)*log(atof(tmp1))),10,sres);
str.replace(p1,p2-p1+1,sres);
delete [] tmp1;
delete [] tmp2;
}
return str;
}
Соседние файлы в папке Calc