در اين بخش مي‌توانيد در مباحث مربوط به زبانهاي بر پايه C به بحث بپردازيد
Major II

Major II



no avatar
پست ها

221

تشکر کرده: 7 مرتبه
تشکر شده: 11 مرتبه
تاريخ عضويت

يکشنبه 25 اسفند 1387 19:00

آرشيو سپاس: 476 مرتبه در 111 پست

سوال در باره برنامه تبديل infix به postfix در ++C

توسط moha684 » پنج شنبه 17 دی 1388 00:39

دوستان متخصص نیاز فوری به نوشتن یه برنامه دارم
خواهشا اگه کسی تو برنامه نویسی وارده یه کمکی به ما کنه
مساله: برنامه ای بنویسید که به کمک پشته عبارت INFIX ورودی را به PREFIX تبدیل کند
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

618

Super Moderator

Super Moderator



نماد کاربر
پست ها

1166

تشکر کرده: 0 مرتبه
تشکر شده: 14 مرتبه
تاريخ عضويت

سه شنبه 3 مرداد 1385 11:49

آرشيو سپاس: 3168 مرتبه در 620 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط SHAHRAM » پنج شنبه 17 دی 1388 02:04

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

کاربران زیر از شما کاربر محترم جناب SHAHRAM تشکر کرده اند:
moha684

Captain II

Captain II



نماد کاربر
پست ها

246

تشکر کرده: 0 مرتبه
تشکر شده: 8 مرتبه
تاريخ عضويت

يکشنبه 9 فروردین 1388 08:11

آرشيو سپاس: 821 مرتبه در 200 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط arashtabaie » پنج شنبه 17 دی 1388 12:44

یعنی شما میخواید عبارت a+b رو که درحالت infix به همان صورت a+b در میاد رو با یک stack به صورت prefix یعنی ab+ در بیارید. چون احتمالا این تکلیف دانشگاهی چیزیه :grin:  فقط الگوریتم رو توضیح میدم براتون دیگه زدن کدش که کار سختی هم نیست به عهده ی خودتون  :-)

_قدم اول:رشته ی infix ورودی رو شروع کنید از آخر به اول بخونید(این کار رو میتونید با پوش کردن کاراکتر ها توی یک استک و بعد یکی یکی پاپ کردن اونها انجام بدید، غیر از این یک استک دیگه هم برای انجام عملیات میخوایم که توی مراحل وقتی نوشتم در استک پوش یا ازش پاپ شه منظورم دومیست) حالا دونه دونه کاراکتر ها رو بخونید و به ازای هر کدوم این کار ها رو انجام بدید:
اگر کاراکتر خوانده شده چیزی غیر از عملگر بود (عدد، متغیر ،...) اون رو به رشته ی prefix اضافه کنید.
اگر کاراکتر خوانده شده عملگر بود یکی از کارهای زیر:
اگر استک(دومی در توضیحات بالا!) خالی نیست و تقدم عملگر سر استک از عملگری که از رشته خوانده شده بیشتره، عملگر رو از سر استک پاپ میکنیم و به رشته ی prefix اضافه میکنیم و به عملگر خوانده شده از رشته کاری نداریم، میذاریم همونجا باشه برای iteration بعدی. اگر استک خالی یا تقدم عملگر سر استک پایین تره، عملگر خوانده شده از استک رو درون استک پوش میکنیم.
_قدم دوم: قدم اول رو اینقدر تکرار کنید که همه ی کاراکتر های رشته بررسی شن.
_قدم سوم:اگر استک خالی نشده دونه دونه عملگر های موجود در اونو پاپ میکنیم و اضافه میکنیم به رشته!
_قدم چهارم: حالا باید رشته ی prefixتون رو سروته کنید تا جواب نهایی به دست بیاد.

پ.ن.: این الگوریتم سریعترین الگوریتمی هست که برای تغییر انواع traverse ها به هم من تاحالا دیدم، همین ایده اش که همه رو سروته باهاشون کار میکنه آخرش دوباره به حالت اصلی بر میگرده خیلی باحاله!!
پ.ن.2: اگه نکته ی گنگی داشت یا نیاز به راهنمایی بیشتر داشتید بگید  :-)

کاربران زیر از شما کاربر محترم جناب arashtabaie تشکر کرده اند:
SHAHRAM, SAMAN, Mahdi1944, moha684, رونین

Super Moderator

Super Moderator



نماد کاربر
پست ها

1166

تشکر کرده: 0 مرتبه
تشکر شده: 14 مرتبه
تاريخ عضويت

سه شنبه 3 مرداد 1385 11:49

آرشيو سپاس: 3168 مرتبه در 620 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط SHAHRAM » پنج شنبه 17 دی 1388 15:37

مثل اینکه من هنوز درس مربوط به این موضوغ رو پاس نکردم :shock: .... arashtabaie,   ممنون،استفاده کردم :razz:
"هرکس از راه رسید نانش دهید و از ایمانش مپرسید . چه ، آنکس که به درگاه باریتعالی به جان ارزد ، قطعا بر سفره بوالحسن به نان ارزد "
( شیخ ابوالحسن خرقانی )

کاربران زیر از شما کاربر محترم جناب SHAHRAM تشکر کرده اند:
SAMAN, arashtabaie, moha684

Major II

Major II



no avatar
پست ها

221

تشکر کرده: 7 مرتبه
تشکر شده: 11 مرتبه
تاريخ عضويت

يکشنبه 25 اسفند 1387 19:00

آرشيو سپاس: 476 مرتبه در 111 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط moha684 » پنج شنبه 17 دی 1388 21:27

دوست عزیز arashtabaie
ممنون از زحمتی که کشیدی
ولی مشکل حل نشد چون این برنامه رو واسه یه دانشجوی رشته ریاضی محض میخوام که از برنامه نویسی چیزی سر در نمیاره.
دوستان مطلع اگه میتونن زحمتشو بکشن
ممنون از همه دوستان
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

618

New Member



no avatar
پست ها

1

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

دوشنبه 3 خرداد 1389 19:16

آرشيو سپاس: 0 مرتبه در 0 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط Moh3en7a » دوشنبه 31 خرداد 1389 01:21

سلام دوستان
سوال من هیچ ربطی به سوال مطرح شده در پست اول نداره و چون موضوعش درباره ++C هست اینجا مطرح کردم.

من یه کمپایلر برای برنامه نویسی به زبان ++C نیاز دارم که بتونه دستورات و توابع تابع کتابخونه ای graphics.h رو اجرا کنه.
چون یه پروژه به کمک Turbo C تحت داس نوشته بودم که داخلش خیلی از توابع گرافیکی استفاده شده بود ولی الان اون برنامه رو ندارم و هر جایی رو هم که گشتم اونو پیدا نکردم و نرم افزار های دیگه هم دقیقا از همون توابع ارور میگیره.
راستی اگر بجای graphics.h میشه از تابع دیگه ای استفاده کرد ممنون میشم اطلاع بدید.
با تشکر

Administrator

Administrator



نماد کاربر
پست ها

15465

تشکر کرده: 10175 مرتبه
تشکر شده: 3917 مرتبه
تاريخ عضويت

جمعه 7 بهمن 1384 19:51

آرشيو سپاس: 30251 مرتبه در 5981 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط Mahdi1944 » سه شنبه 1 تیر 1389 19:39

Moh3en7a,  
ضمن عرض خوش آمد به شما دوست گرامي
از اين لينک Turbo C 3  که نسخه‌ي تحت داس هست رو دانلود کنيد
http://hotfile.com/dl/8707417/d00eb68/T ... o.rar.html
زندگي صحنه يکتاي هنرمندي ماست     هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست     خرم آن نغمه که مردم بسپارند به ياد


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

کاربران زیر از شما کاربر محترم جناب Mahdi1944 تشکر کرده اند:
SAMAN

Captain I

Captain I



نماد کاربر
پست ها

433

تشکر کرده: 5 مرتبه
تشکر شده: 12 مرتبه
تاريخ عضويت

يکشنبه 12 اردیبهشت 1389 12:48

آرشيو سپاس: 1473 مرتبه در 391 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط abbas.m.k » پنج شنبه 4 شهریور 1389 18:23

اين كد ميتونه به شما كمك كنه:
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';


}
بهترين مترجم كيست كه سكوت را ترجمه كند.

کاربران زیر از شما کاربر محترم جناب abbas.m.k تشکر کرده اند:
Mahdi1944

Captain I

Captain I



نماد کاربر
پست ها

433

تشکر کرده: 5 مرتبه
تشکر شده: 12 مرتبه
تاريخ عضويت

يکشنبه 12 اردیبهشت 1389 12:48

آرشيو سپاس: 1473 مرتبه در 391 پست

Re: کمک در مورد برنامه نویسی به زبان ++C

توسط abbas.m.k » پنج شنبه 4 شهریور 1389 18:26

اين كد هم از سايت هاي خارجي گرفتم كه ميتونه كمكت كنه:

http://www.c4swimmers.esmartguy.com/in2pre.htm

اينم آدرس source code :

http://www.c4swimmers.esmartguy.com/ds/in2pre.c

اين سايتم خوبه:
http://www.c.happycodings.com/Data_Stru ... ode12.html
بهترين مترجم كيست كه سكوت را ترجمه كند.

کاربران زیر از شما کاربر محترم جناب abbas.m.k تشکر کرده اند:
Present, Mahdi1944


 


  • موضوعات مشابه
    پاسخ ها
    بازديدها
    آخرين پست

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 1 مهمان