دوستان متخصص نیاز فوری به نوشتن یه برنامه دارم
خواهشا اگه کسی تو برنامه نویسی وارده یه کمکی به ما کنه
مساله: برنامه ای بنویسید که به کمک پشته عبارت INFIX ورودی را به PREFIX تبدیل کند
سوال در باره برنامه تبديل infix به postfix در ++C
مدیران انجمن: abbas.m.k, athlon64x2, شوراي نظارت

- پست: 1166
- تاریخ عضویت: سهشنبه ۳ مرداد ۱۳۸۵, ۱۱:۴۹ ق.ظ
- سپاسهای ارسالی: 946 بار
- سپاسهای دریافتی: 2887 بار
Re: کمک در مورد برنامه نویسی به زبان ++C
دوست عزیز یکم بیشتر توضیح می دید؟تا ببینیم میتونیم کمکتون کنیم یا نه؟! 

"هرکس از راه رسید نانش دهید و از ایمانش مپرسید . چه ، آنکس که به درگاه باریتعالی به جان ارزد ، قطعا بر سفره بوالحسن به نان ارزد "
( شیخ ابوالحسن خرقانی )
( شیخ ابوالحسن خرقانی )

- پست: 246
- تاریخ عضویت: یکشنبه ۹ فروردین ۱۳۸۸, ۹:۱۱ ق.ظ
- سپاسهای ارسالی: 780 بار
- سپاسهای دریافتی: 791 بار
- تماس:
Re: کمک در مورد برنامه نویسی به زبان ++C
یعنی شما میخواید عبارت a+b رو که درحالت infix به همان صورت a+b در میاد رو با یک stack به صورت prefix یعنی ab+ در بیارید. چون احتمالا این تکلیف دانشگاهی چیزیه
فقط الگوریتم رو توضیح میدم براتون دیگه زدن کدش که کار سختی هم نیست به عهده ی خودتون
_قدم اول:رشته ی infix ورودی رو شروع کنید از آخر به اول بخونید(این کار رو میتونید با پوش کردن کاراکتر ها توی یک استک و بعد یکی یکی پاپ کردن اونها انجام بدید، غیر از این یک استک دیگه هم برای انجام عملیات میخوایم که توی مراحل وقتی نوشتم در استک پوش یا ازش پاپ شه منظورم دومیست) حالا دونه دونه کاراکتر ها رو بخونید و به ازای هر کدوم این کار ها رو انجام بدید:
اگر کاراکتر خوانده شده چیزی غیر از عملگر بود (عدد، متغیر ،...) اون رو به رشته ی prefix اضافه کنید.
اگر کاراکتر خوانده شده عملگر بود یکی از کارهای زیر:
اگر استک(دومی در توضیحات بالا!) خالی نیست و تقدم عملگر سر استک از عملگری که از رشته خوانده شده بیشتره، عملگر رو از سر استک پاپ میکنیم و به رشته ی prefix اضافه میکنیم و به عملگر خوانده شده از رشته کاری نداریم، میذاریم همونجا باشه برای iteration بعدی. اگر استک خالی یا تقدم عملگر سر استک پایین تره، عملگر خوانده شده از استک رو درون استک پوش میکنیم.
_قدم دوم: قدم اول رو اینقدر تکرار کنید که همه ی کاراکتر های رشته بررسی شن.
_قدم سوم:اگر استک خالی نشده دونه دونه عملگر های موجود در اونو پاپ میکنیم و اضافه میکنیم به رشته!
_قدم چهارم: حالا باید رشته ی prefixتون رو سروته کنید تا جواب نهایی به دست بیاد.
پ.ن.: این الگوریتم سریعترین الگوریتمی هست که برای تغییر انواع traverse ها به هم من تاحالا دیدم، همین ایده اش که همه رو سروته باهاشون کار میکنه آخرش دوباره به حالت اصلی بر میگرده خیلی باحاله!!
پ.ن.2: اگه نکته ی گنگی داشت یا نیاز به راهنمایی بیشتر داشتید بگید
فقط الگوریتم رو توضیح میدم براتون دیگه زدن کدش که کار سختی هم نیست به عهده ی خودتون
_قدم اول:رشته ی infix ورودی رو شروع کنید از آخر به اول بخونید(این کار رو میتونید با پوش کردن کاراکتر ها توی یک استک و بعد یکی یکی پاپ کردن اونها انجام بدید، غیر از این یک استک دیگه هم برای انجام عملیات میخوایم که توی مراحل وقتی نوشتم در استک پوش یا ازش پاپ شه منظورم دومیست) حالا دونه دونه کاراکتر ها رو بخونید و به ازای هر کدوم این کار ها رو انجام بدید:
اگر کاراکتر خوانده شده چیزی غیر از عملگر بود (عدد، متغیر ،...) اون رو به رشته ی prefix اضافه کنید.
اگر کاراکتر خوانده شده عملگر بود یکی از کارهای زیر:
اگر استک(دومی در توضیحات بالا!) خالی نیست و تقدم عملگر سر استک از عملگری که از رشته خوانده شده بیشتره، عملگر رو از سر استک پاپ میکنیم و به رشته ی prefix اضافه میکنیم و به عملگر خوانده شده از رشته کاری نداریم، میذاریم همونجا باشه برای iteration بعدی. اگر استک خالی یا تقدم عملگر سر استک پایین تره، عملگر خوانده شده از استک رو درون استک پوش میکنیم.
_قدم دوم: قدم اول رو اینقدر تکرار کنید که همه ی کاراکتر های رشته بررسی شن.
_قدم سوم:اگر استک خالی نشده دونه دونه عملگر های موجود در اونو پاپ میکنیم و اضافه میکنیم به رشته!
_قدم چهارم: حالا باید رشته ی prefixتون رو سروته کنید تا جواب نهایی به دست بیاد.
پ.ن.: این الگوریتم سریعترین الگوریتمی هست که برای تغییر انواع traverse ها به هم من تاحالا دیدم، همین ایده اش که همه رو سروته باهاشون کار میکنه آخرش دوباره به حالت اصلی بر میگرده خیلی باحاله!!
پ.ن.2: اگه نکته ی گنگی داشت یا نیاز به راهنمایی بیشتر داشتید بگید


- پست: 1166
- تاریخ عضویت: سهشنبه ۳ مرداد ۱۳۸۵, ۱۱:۴۹ ق.ظ
- سپاسهای ارسالی: 946 بار
- سپاسهای دریافتی: 2887 بار
Re: کمک در مورد برنامه نویسی به زبان ++C
مثل اینکه من هنوز درس مربوط به این موضوغ رو پاس نکردم
.... arashtabaie, ممنون،استفاده کردم 
.... arashtabaie, ممنون،استفاده کردم 
"هرکس از راه رسید نانش دهید و از ایمانش مپرسید . چه ، آنکس که به درگاه باریتعالی به جان ارزد ، قطعا بر سفره بوالحسن به نان ارزد "
( شیخ ابوالحسن خرقانی )
( شیخ ابوالحسن خرقانی )

-
- پست: 221
- تاریخ عضویت: یکشنبه ۲۵ اسفند ۱۳۸۷, ۷:۰۰ ب.ظ
- سپاسهای ارسالی: 329 بار
- سپاسهای دریافتی: 448 بار
Re: کمک در مورد برنامه نویسی به زبان ++C
دوست عزیز arashtabaie
ممنون از زحمتی که کشیدی
ولی مشکل حل نشد چون این برنامه رو واسه یه دانشجوی رشته ریاضی محض میخوام که از برنامه نویسی چیزی سر در نمیاره.
دوستان مطلع اگه میتونن زحمتشو بکشن
ممنون از همه دوستان
ممنون از زحمتی که کشیدی
ولی مشکل حل نشد چون این برنامه رو واسه یه دانشجوی رشته ریاضی محض میخوام که از برنامه نویسی چیزی سر در نمیاره.
دوستان مطلع اگه میتونن زحمتشو بکشن
ممنون از همه دوستان
[FONT=System][External Link Removed for Guests]
[FONT=System]
[FONT=System]618
[FONT=System]
[FONT=System]618
Re: کمک در مورد برنامه نویسی به زبان ++C
سلام دوستان
سوال من هیچ ربطی به سوال مطرح شده در پست اول نداره و چون موضوعش درباره ++C هست اینجا مطرح کردم.
من یه کمپایلر برای برنامه نویسی به زبان ++C نیاز دارم که بتونه دستورات و توابع تابع کتابخونه ای graphics.h رو اجرا کنه.
چون یه پروژه به کمک Turbo C تحت داس نوشته بودم که داخلش خیلی از توابع گرافیکی استفاده شده بود ولی الان اون برنامه رو ندارم و هر جایی رو هم که گشتم اونو پیدا نکردم و نرم افزار های دیگه هم دقیقا از همون توابع ارور میگیره.
راستی اگر بجای graphics.h میشه از تابع دیگه ای استفاده کرد ممنون میشم اطلاع بدید.
با تشکر
سوال من هیچ ربطی به سوال مطرح شده در پست اول نداره و چون موضوعش درباره ++C هست اینجا مطرح کردم.
من یه کمپایلر برای برنامه نویسی به زبان ++C نیاز دارم که بتونه دستورات و توابع تابع کتابخونه ای graphics.h رو اجرا کنه.
چون یه پروژه به کمک Turbo C تحت داس نوشته بودم که داخلش خیلی از توابع گرافیکی استفاده شده بود ولی الان اون برنامه رو ندارم و هر جایی رو هم که گشتم اونو پیدا نکردم و نرم افزار های دیگه هم دقیقا از همون توابع ارور میگیره.
راستی اگر بجای graphics.h میشه از تابع دیگه ای استفاده کرد ممنون میشم اطلاع بدید.
با تشکر

- پست: 15899
- تاریخ عضویت: جمعه ۷ بهمن ۱۳۸۴, ۷:۵۱ ب.ظ
- سپاسهای ارسالی: 72687 بار
- سپاسهای دریافتی: 31681 بار
- تماس:
Re: کمک در مورد برنامه نویسی به زبان ++C
,
ضمن عرض خوش آمد به شما دوست گرامي
از اين لينک Turbo C 3 که نسخهي تحت داس هست رو دانلود کنيد
[External Link Removed for Guests]
ضمن عرض خوش آمد به شما دوست گرامي
از اين لينک Turbo C 3 که نسخهي تحت داس هست رو دانلود کنيد
[External Link Removed for Guests]
زندگي صحنه يکتاي هنرمندي ماست هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست خرم آن نغمه که مردم بسپارند به ياد
[External Link Removed for Guests] | [External Link Removed for Guests] | مجله الکترونيکي سنترال کلابز
[External Link Removed for Guests] | [External Link Removed for Guests] | [External Link Removed for Guests]
صحنه پيوسته به جاست خرم آن نغمه که مردم بسپارند به ياد
[External Link Removed for Guests] | [External Link Removed for Guests] | مجله الکترونيکي سنترال کلابز
[External Link Removed for Guests] | [External Link Removed for Guests] | [External Link Removed for Guests]
لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

- پست: 433
- تاریخ عضویت: یکشنبه ۱۲ اردیبهشت ۱۳۸۹, ۱:۴۸ ب.ظ
- سپاسهای ارسالی: 733 بار
- سپاسهای دریافتی: 1344 بار
Re: کمک در مورد برنامه نویسی به زبان ++C
اين كد ميتونه به شما كمك كنه:
include<iostream.h>
#include<conio.h>
#include<cstring.h>
#define m 21
class stack
{
public:
stack();
void push(char);
char pop();
int empty();
void popandtest(char & , int &);
void topandtest(char & , int &);
void display();
void pushandtest(char & , int &);
private :
int mytop;
char items[m];
};
/////////////////////
stack::stack()
{
mytop=-1;
}
//////////////////
void stack::push(char x)
{
items[++mytop]=x;
}
char stack::pop()
{
return items[mytop--];
}
int stack::empty()
{
return (mytop==-1);
}
//////////////////////////
void stack::popandtest(char &temp , int &underflow)
{
if(empty())
underflow=1;
else
{
temp=items[mytop--];
underflow=0;
}
}
//////////////////////////////////
void stack::pushandtest(char &x,int &overflow)
{
if(mytop==m-1)
overflow=1;
else
{
overflow=0;
items[++mytop]=x;
}
}
//////////////////
void stack::topandtest(char &x , int &underflow)
{
if(empty())
underflow=1;
else
{
x=items[mytop];
underflow=0;
}
}
void convert(char[],char[]);
int cheak(char);
int main()
{
char infix[m],prefix[m];
clrscr();
cout<<"please enter the infix expertion: ";
cin.get(infix,m);
convert(infix , prefix);
int len=strlen(prefix);
for(int i = 0 ; i<len;i++)
cout<<prefix[i];
return 0;
}
int cheak(char symbol)
{
if (symbol>='a' && symbol <='z')
return 1;
return 0;
}
void convert(char infix[],char prefix[])
{ int len;
char symbol ,temp, topsymbol;
int underflow,overflow , j=0;
stack s1;
stack s2;
len=strlen(infix);
for(int i =len-1;i>=0;i--)
{
symbol=infix[i];
if(cheak(symbol))
s2.pushandtest(symbol,overflow);
/////////////////////////////
if(symbol=='(')
{
s1.popandtest(temp,underflow) ;
if(temp=='+'|| temp=='*'|| temp=='-'|| temp=='/')
{
s2.pushandtest(temp,overflow);
}
s1.popandtest(temp,underflow) ;
if(temp=='+' || temp=='*'|| temp=='-'|| temp=='/')
s2.pushandtest(temp,overflow);
}
//////////////////////////
else
s1.pushandtest(symbol,overflow);
}
while(!s1.empty())
{
s1.popandtest(temp,underflow) ;
if(temp=='+'|| temp=='-'|| temp=='*'|| temp=='/')
{
s2.pushandtest(temp,overflow);
}
i=0;
}
for(i=0;underflow!=1;i++)
{
s2.popandtest(prefix[i],underflow);
}
prefix[i-1]='\0';
}
include<iostream.h>
#include<conio.h>
#include<cstring.h>
#define m 21
class stack
{
public:
stack();
void push(char);
char pop();
int empty();
void popandtest(char & , int &);
void topandtest(char & , int &);
void display();
void pushandtest(char & , int &);
private :
int mytop;
char items[m];
};
/////////////////////
stack::stack()
{
mytop=-1;
}
//////////////////
void stack::push(char x)
{
items[++mytop]=x;
}
char stack::pop()
{
return items[mytop--];
}
int stack::empty()
{
return (mytop==-1);
}
//////////////////////////
void stack::popandtest(char &temp , int &underflow)
{
if(empty())
underflow=1;
else
{
temp=items[mytop--];
underflow=0;
}
}
//////////////////////////////////
void stack::pushandtest(char &x,int &overflow)
{
if(mytop==m-1)
overflow=1;
else
{
overflow=0;
items[++mytop]=x;
}
}
//////////////////
void stack::topandtest(char &x , int &underflow)
{
if(empty())
underflow=1;
else
{
x=items[mytop];
underflow=0;
}
}
void convert(char[],char[]);
int cheak(char);
int main()
{
char infix[m],prefix[m];
clrscr();
cout<<"please enter the infix expertion: ";
cin.get(infix,m);
convert(infix , prefix);
int len=strlen(prefix);
for(int i = 0 ; i<len;i++)
cout<<prefix[i];
return 0;
}
int cheak(char symbol)
{
if (symbol>='a' && symbol <='z')
return 1;
return 0;
}
void convert(char infix[],char prefix[])
{ int len;
char symbol ,temp, topsymbol;
int underflow,overflow , j=0;
stack s1;
stack s2;
len=strlen(infix);
for(int i =len-1;i>=0;i--)
{
symbol=infix[i];
if(cheak(symbol))
s2.pushandtest(symbol,overflow);
/////////////////////////////
if(symbol=='(')
{
s1.popandtest(temp,underflow) ;
if(temp=='+'|| temp=='*'|| temp=='-'|| temp=='/')
{
s2.pushandtest(temp,overflow);
}
s1.popandtest(temp,underflow) ;
if(temp=='+' || temp=='*'|| temp=='-'|| temp=='/')
s2.pushandtest(temp,overflow);
}
//////////////////////////
else
s1.pushandtest(symbol,overflow);
}
while(!s1.empty())
{
s1.popandtest(temp,underflow) ;
if(temp=='+'|| temp=='-'|| temp=='*'|| temp=='/')
{
s2.pushandtest(temp,overflow);
}
i=0;
}
for(i=0;underflow!=1;i++)
{
s2.popandtest(prefix[i],underflow);
}
prefix[i-1]='\0';
}
[HIGHLIGHT=#1F497D] بهترين مترجم كيست كه سكوت را ترجمه كند.

- پست: 433
- تاریخ عضویت: یکشنبه ۱۲ اردیبهشت ۱۳۸۹, ۱:۴۸ ب.ظ
- سپاسهای ارسالی: 733 بار
- سپاسهای دریافتی: 1344 بار
Re: کمک در مورد برنامه نویسی به زبان ++C
اين كد هم از سايت هاي خارجي گرفتم كه ميتونه كمكت كنه:
[External Link Removed for Guests]
اينم آدرس source code :
[External Link Removed for Guests]
اين سايتم خوبه:
[External Link Removed for Guests]
[External Link Removed for Guests]
اينم آدرس source code :
[External Link Removed for Guests]
اين سايتم خوبه:
[External Link Removed for Guests]
[HIGHLIGHT=#1F497D] بهترين مترجم كيست كه سكوت را ترجمه كند.
Re: سوال در باره برنامه تبديل infix به postfix در ++C
سلام
سریع جواب میخوام اگه مقدوره فردا امتحان دارم
ممکنه تبدیل عبارت infix به عبارت prefix رو توضیح بدید
البته فکر کنم یه راهش اینه که postfix عبارت بدست بیاریم و بعد جواب نهایی رو برعکس کنیم
ولی اگه ممکنه راه اصلی توضیح بدید
لطفا اولویت ها رو هم تواین قسمت توضیح بدید و اگر الویت با عملگ های پایینتر بود چطوری باید واردشون کنیم تششششششکر
لطفا فوری
سریع جواب میخوام اگه مقدوره فردا امتحان دارم
ممکنه تبدیل عبارت infix به عبارت prefix رو توضیح بدید
البته فکر کنم یه راهش اینه که postfix عبارت بدست بیاریم و بعد جواب نهایی رو برعکس کنیم
ولی اگه ممکنه راه اصلی توضیح بدید
لطفا اولویت ها رو هم تواین قسمت توضیح بدید و اگر الویت با عملگ های پایینتر بود چطوری باید واردشون کنیم تششششششکر
لطفا فوری