Merhaba, Veri Yapıları ve Algoritmalar dersinde kodlamış olduğum postfix to infix ve prefix to infix dönüşümü yapan programın kodlarını paylaşıyorum. C++ dili kullanılarak kodlanmıştır.

int main fonksiyonundan dönüştürmek istediğiniz ifadeleri yazarak ilgili fonksiyonlara yollayarak kullanabilirsiniz.

Dönüşümler stack mantığı ile kodlanmıştır. Umarım işinize yarar.

Prefix: Operatör, operandlardan önce ifadede görünürse, bu ifadeye prefix ifade denir. (operatör operand1 operand2).
Örnek : *+AB-CD (İnfix : (A+B) * (C-D) )

Infix: operatör ifadedeki işlenenler arasında görünüyorsa, bu ifadeye infix ifadesi denir. (operand1 operatör operand2).
Örnek: (A + B) * (C-D)

Postfix: Operatör, operandlardan sonra ifadede görünürse bir ifade postfix ifadesi olarak adlandırılır. (operand1 operand2 operatör).
Örnek: AB + CD – * (İnfix: (A + B * (C-D) )

#include <iostream>
#include <string>
#include <stack>

using namespace std;

bool operand(char c) {
	if(c >= '0' && c <= '9') 
    return true;
   	 return false;
}


bool operat(char c) {
	if((c == '+') || (c == '-')||(c == '/' )|| (c == '*')||(c=='^')) 
    return true;
   	 return false;
}

string postfix(string ifade){
	stack<string> a; 
	
	for(int i=0;i<ifade.length();i++){
		if(operand(ifade[i])){
			string donusum(1,ifade[i]);
			a.push(donusum);
		}
	
		else{
			string operator1 =a.top();
			a.pop();
			string operator2 = a.top();
			a.pop();
			a.push("(" + operator2 + ifade[i] + 
				operator1 + ")"); 
		}
	}
	
	return a.top();
}



string prefix(string ifade){
	

	stack<string> b; 
	
	for(int i=0;i<=ifade.length();i++){
		if(operat(ifade[ifade.length()-i])){
				string operator1 =b.top();
				b.pop();
				string operator2 = b.top();
				b.pop();
				b.push("(" + operator1 + ifade[ifade.length()-i] + 
				operator2+ ")"); 
			
		}
	
		else{
		string donusum(1,ifade[ifade.length()-i]);
			b.push(donusum);
		}
	}
	
	return b.top();
}
	


int main(int argc, char** argv) {
cout<<"Postfix: 23*45*+6-"; 
string a = "23*45*+6-";
cout<<"	Infix:";
cout<<postfix(a)<<endl;

cout<<"Postfix: 78+925--34+^"; cout<<"	Infix:"; 
string b = "78+925--34+^";
cout<<	postfix(b)<<endl;

cout<<"Postfix: 456*+7-"; cout<<"	Infix:"; 
string c = "456*+7-";
cout<<	postfix(c);	

cout<<endl<<"-------------------------------------"<<endl;
cout<<"Prefix: -*+24-58+73"; cout<<"		Infix:"; 
string d = "-*+24-58+73";
cout<<prefix(d)<<endl;

cout<<"Prefix: -+*23*549"; cout<<"		Infix:"; 
string f = "-+*23*549";
cout<<prefix(f)<<endl;	

cout<<"Prefix: ++3*579"; cout<<"			Infix:"; 
string e = "++3*579";
cout<<prefix(e)<<endl;	

	
	return 0;
}