PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمک در اصلاح برنامه ای در c++



nasim t
27th December 2012, 02:01 PM
سلام دوستان من یه برنامه از یه سایت گرفتم در مورد تبدیل عبارات پسوندی به پیشوندی اما وقتی می زنم توی برنامه ی turbo c++ خیلی خطا می زنه هر کاریم می کنم نمی تونم درستش کنم لطفا اگه می تونید توی اصلاح خطاهاش کمکم کنید یا اگه برنامه ی دیگه سراغ دارین بهم بدین ممنون می شم اینم برنامه:





#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <conio.h >

boo isOperator(char c)
{
if(c=='+' || c=='-' || c=='*' || c=='/' || c=='^')
return true;
else
return false;
}

int main()
{
stack<char> stk;
char postfix[30], prefix[30];
int j=0,len;
cout<<"ebarate prefix ra vared konid: ";
cin>>postfix;
len = strlen(postfix);
for(int i=len-1;i>=0;i--)
{
if(isOperator(postfix[i]))
stk.push(postfix[i]);
else
{
prefix[j++] = postfix[i];
while(!stk.empty() && stk.top()==flag)
{
stk.pop();
prefix[j++] = stk.top();
stk.pop();
}
stk.push(flag);

}
}
prefix[j] = 0;
reverse(prefix, prefix + len);
cout<<" prefix hast: "<<prefix;
return 0;
}

BaAaroOoN
27th December 2012, 06:13 PM
سلام به شما دوست عزیز
اول از همه بگم شما دارین از stack و popو pushاستفاده میکنین بدون اینکه کلاس های اونا رو تعریف کنین!
شما فقطmainرو تعریف کردین
اول بیاین و اینایی رو که گفتم رو تعریف و به برنامه اضافه کنین تا بعد ببینیم errorهای بعدی مربوط به چیه
به احتمال زیاد این برنامه ایو که شما از یه سایت برداشتین اومده و اصل مطلب رو تعریف کرده(یعنیmain)
بقیه شو هم گذاشته به عهده ی شما
موفق باشید

nasim t
28th December 2012, 09:18 PM
ممنون از جوابتون راستش این برنامه رو خودم نوشتم ارورم نمی ده اما بعد از اینکه عبارت رو وارد می کنم و اینتر می زنم هیچ جوابی بهم نمی ده و فقط می ره خط بعد می خواستم بدونم مشکل از کجای برنامست




#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<string.h>
#define max 100
Void push(char);
Char pop();
Int *p;
Int *tos;
Int *bos;
Char i;
Void push(char)
{
If(p>bos)
{
Printf(“\n stack is full.”);
Return;
}
*p=i;
P++;
}
Char pop()
{
P--;
If(p<tos)
{
Printf(“\n stack is empty”);
Getch();
Return 0;
}
Return *p;
}
Int main()
Char s[80],b[80],x,y;
Int j;
P=(int*)malloc(max *sizeof(int));
If(!p)
{
Printf(“\n allocation failure”);
Exit(1);
}
Tos =p;
Bos=p+max-1;
Clrscr();
Printf(“\n enter postfix expression:”);
Gets(s);
For(j=0;j<80;j++)
{
Do
{
If(s[j]==’+’ ||s[j]==’-‘||s[j]==’*’||s[j]==’/’||s[j]==’^’)
{
Y=pop();
X=pop();
Strcat(&x,&y);
Strcat(&s[j],&x);
Push(s[j]);
}
Else
{
Push(s[j]);
}
B[80]=pop();
}
While(s[j]!=’\0’);
}
Printf(“\n the prefix expression is:”);
Puts(b);
Getch();
Return0;
}

nasim t
29th December 2012, 04:23 PM
کسی نمی دونه مشکل برنامم از کجاست ؟ اگه توضیح بیشتر لازمه بگید بهم تا بدم

- - - به روز رسانی شده - - -

کسی نمی دونه مشکل برنامم از کجاست ؟ اگه توضیح بیشتر لازمه بگید بهم تا بدم

مدیر تالار برنامه نویسی
2nd January 2013, 12:32 AM
با سلام به دوست عزیزم :»

فکر می کنم شما باید روی قسمت چاپتون یکم کار کنید , چون من توی نگاه سطحی که انداختم شما فقط امدید و رفتید خط بعد

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد