امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در مورد infix ها
نویسنده پیام
Super Robot آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 5
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 2
( 4 تشکر در 4 ارسال )
ارسال: #1
سوال در مورد infix ها
[/size]
سلام دوستان سورس برنامه ی تبدیل postfixبه infix میخواستم باc++
۱۷-دى-۱۳۹۱, ۱۹:۲۸:۳۷
ارسال‌ها
پاسخ
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,497
موضوع‌ها: 270
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1652
( 3938 تشکر در 1453 ارسال )
ارسال: #2
RE: سوال در مورد infix ها
main.cpp

کد:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include "stack.h"
#include <sstream>

using namespace std;


bool isOperand(string expr);
bool isOperator(string expr);
string PostfixToInfix(string expr, stackType<string> stack);



int main()
{

stringstream ss;
stackType<string> stack;
string Infix;
string line;
string word;
string expr;


ifstream inData("input.txt");
ofstream outData("output.txt");

while (getline( inData, line ))
{
ss << line;

}
while ( ss >> word)
{
stack.push(word);
}

outData<<line;



inData.close();
outData.close();

system("PAUSE");
return 0;
}



bool isOperand(string expr)
{
return(!isOperator(expr)? true : false);
}

bool isOperator(string expr)
{
return((expr=="+" || expr=="-" || expr=="*" || expr=="/" || expr=="(" || expr==")")? true : false);
}

string PostfixToInfix(string expr,stackType<string> stack)
{

for(int i=0; i<expr.length(); i++)
{
  if(isOperand(expr[i]))
  {
   stack.push(expr.length()[i]);
  }
  else
  {
   string temp = stack.top();
   stack.pop();
   int stack.push()=stack.top()+expr.length()[i]+temp;
   stack.pop();
   stack.push();
  }
}
return(stack.top());
}
stack.h
کد:
#ifndef H_StackType
#define H_StackType

#include <iostream>
#include <fstream>
#include <cassert>

using namespace std;

template<class Type>

class stackType
{

public:
const stackType<Type>& operator=(const stackType<Type>&);
void initializeStack();
bool isEmptyStack();
bool isFullStack();
void destroyStack();
void push(const Type& newItem);
Type top();
void pop();
stackType(int stackSize = 100);
stackType(const stackType<Type>& otherStack);
~stackType();
bool operator== (const stackType<Type>&);
bool operator!= (const stackType<Type>&);



private:
int maxStackSize;
int stackTop;
Type *list;
void copyStack(const stackType<Type>& otherStack);
bool isEqual(const stackType<Type>&);


};

template<class Type>
void stackType<Type>::copyStack(const stackType<Type>& otherStack)
{
delete [] list;
maxStackSize = otherStack.maxStackSize;
stackTop = otherStack.stackTop;

list = new Type[maxStackSize];
assert(list != NULL);

for(int j = 0; j < stackTop; j++)
list[j] = otherStack.list[j];

}

template<class Type>
stackType<Type>::stackType(const stackType<Type>& otherStack)
{
list = NULL;

copyStack(otherStack);

}

template<class Type>
const stackType<Type>& stackType<Type>::operator=(const stackType<Type>& otherStack)
{
if (this != &otherStack)
copyStack(otherStack);

return *this;
}

template<class Type>
void stackType<Type>::initializeStack()
{
stackTop = 0;
}

template<class Type>
void stackType<Type>::destroyStack()
{
stackTop = 0;
}

template<class Type>
bool stackType<Type>::isEmptyStack()
{
return(stackTop == 0);
}
template<class Type>
bool stackType<Type>::isFullStack()
{
return(stackTop == maxStackSize);
}

template<class Type>
void stackType<Type>::push(const Type& newItem)
{
if(!isFullStack())
{
list[stackTop] = newItem;

stackTop++;
}

else
cerr<<"Cannot add to a full stack."<<endl;
}

template<class Type>
Type stackType<Type>::top()
{
assert(stackTop != 0);

return list[stackTop - 1];
}

template<class Type>
void stackType<Type>::pop()
{
if(!isEmptyStack())
{
stackTop--;
}
else
cerr<<"Cannot remove from an empty stack."<<endl;
}

template<class Type>
stackType<Type>::stackType(int stackSize)
{
if(stackSize <= 0)
{
cerr<<"The size of the array to hold the stack must "
<<"be positive."<<endl;
cerr<<"Creating an array of size 100."<<endl;

maxStackSize = 100;
}

else
maxStackSize = stackSize;

stackTop = 0;

list = new Type[maxStackSize];
}

template<class Type>
stackType<Type>::~stackType()
{
delete [] list;
}



template<class Type>
bool stackType<Type>::isEqual(const stackType<Type>& otherStack) {
bool bRet = false;
if (otherStack.maxStackSize == maxStackSize && otherStack.stackTop == stackTop){
bRet = true;
for (int j = 0; j < stackTop; ++j) {
if (otherStack.list[j] != list[j]) {
// cout << "!=( " << j << ") " << otherStack.list[j] << "!=" << list[j];
bRet = false;
break;
}
}
}
return bRet;
}

template<class Type>
bool stackType<Type>::operator==(const stackType<Type>& otherStack) {
return isEqual(otherStack);
}

template<class Type>
bool stackType<Type>::operator!=(const stackType<Type>& otherStack) {
return !isEqual(otherStack); //!(*this == otherStack);
}


#endif


Postfix to Infix

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
۱۸-دى-۱۳۹۱, ۱۶:۲۷:۲۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question تبدیل infix به postfix به وسیله لیست پیوندی zohreh.ma 3 3,813 ۱۳-اردیبهشت-۱۳۹۵, ۱۵:۱۷:۵۶
آخرین ارسال: hartan
  [سوال] 2 تا سوال در مورد c++ shabnam_khaleh 3 4,617 ۳۱-مرداد-۱۳۹۱, ۲۱:۰۵:۵۳
آخرین ارسال: masterhe3ar
  سوال در مورد linq zahra_m_alipoor 1 3,314 ۱۶-مرداد-۱۳۹۱, ۱۵:۵۶:۰۹
آخرین ارسال: moribermuda
  سوال در مورد ی علامت salehjg 1 2,485 ۰۵-شهریور-۱۳۹۰, ۱۹:۴۰:۳۲
آخرین ارسال: babyy
  یک سوال در مورد زمان بندی cin Fire_Falcon 3 4,231 ۲۹-اردیبهشت-۱۳۸۹, ۲۲:۱۸:۱۲
آخرین ارسال: dreamvbfox
  INFIX به PREFIX hhhhh 3 5,361 ۱۰-دى-۱۳۸۸, ۱۱:۴۱:۱۰
آخرین ارسال: ss136655
  کمک کمک برنامه تبدیل Infix به prefix yones_shaban 1 5,259 ۱۶-تير-۱۳۸۸, ۲۲:۰۵:۳۲
آخرین ارسال: amirjan
  الگوریتم تبدیل postfix به infix و بالعکس hamed_Arfaee 1 7,501 ۱۱-آذر-۱۳۸۷, ۱۶:۳۴:۵۵
آخرین ارسال: hamed_Arfaee
  يه سوال در مورد پروژه کتابخانه Rink8 0 2,434 ۰۸-اردیبهشت-۱۳۸۷, ۲۳:۰۳:۵۷
آخرین ارسال: Rink8
  یه سوال در مورد اسمبلی vizvizbasic 12 13,117 ۰۷-اردیبهشت-۱۳۸۷, ۱۸:۳۵:۴۸
آخرین ارسال: lord_viper

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS