Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
17.04.2013
Размер:
1.09 Кб
Скачать
#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