ورود

نسخه کامل مشاهده نسخه کامل : برنامه الگوریتم تبدیل میاوندی به پسوندی.لطفا کمک کنید



IstaaKon
25-11-2008, 12:02
سلام دوستان عزیز

لطف میکنید برنامشو لگوریتم تبدیل میاوندی به پسوندی رو برام بزارید

خیلی خیلی ممنون میشم

devil_ff2008
25-11-2008, 14:07
چه جالب
استاد ما هم این پروژه رو به عنوان نمره اضافی داده
اگه نوشتم به شما هم میدم
:31:

devil_ff2008
25-11-2008, 14:46
خدمت شما :


// convert-infix-to-postfix.cpp : Defines the entry point for the console application.
//

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

#define max 30
typedef struct
{
int top;
char a[max];
}stack;

int amalgar(char);
int isvalid(stack);
void convert(char,stack*,stack*);

void clears(stack *s)
{
s->top = -1;
}
int emptys(stack s)
{
if ( s.top == -1)
return 1;
return 0;
}
int fulls(stack s)
{
if ( s.top == max-1 )
return 1;
return 0;
}
int pushs(stack *s,char x)
{
if (fulls(*s))
{
printf("\n> stack is full\n");
getch();
return 0;
}
s->a[++(s->top)] = x;
return 1;
}
int pops(stack *s,char *x)
{
if (emptys(*s))
{
printf("\n> stack is empty\n");
getch();
return 0;
}
*x = s->a[(s->top)--];
return 1;
}
void prints(stack s)
{
if (s.top == -1)
return;
printf("\n( print stack )----------------------------------------------\n> ");
while (s.top != -1)
printf("%c",s.a[s.top--]);
}
int searchs(stack s,char c,int *index)
{
*index =-1;
if (emptys(s))
{
printf("\n> stack is empty\n");
getch();
return 0;
}
while(!emptys(s))
if (s.a[s.top] == c)
{
*index = s.top;
return 1;
}
return 0;
}

int isvalid(stack s)
{
int c=0;

for( ; s.a[s.top]!=-1 ; s.top-- )
{
if (s.a[s.top]==')')
c++;
else if (s.a[s.top]=='(')
c--;
}
if (c == 0)
return 1;
return 0;
}

void get(stack *infix,stack *postfix)
{
char c,x;
stack t;
clears(&t);

//printf("\n-------------------------");
printf("\n\n( get infix )-------------------------------------\n");
//printf("--------------------------------------------------\n");
printf("\n> enter infix : ");
while ( (c=getche()) != 13 )
{
pushs(infix,c);
convert(c,postfix,&t);
}
//printf("\n--------------------------------------------------");
while(!emptys(t))
{
pops(&t,&x);
pushs(postfix,x);
}
}

int amalgar(char c)
{
switch(c)
{
case ')':
Return 0;
case '^':
Return 1;
case '*':
Case '/':
Return 2;
case '\\':
Return 3;
case '+':
Case '-':
Return 4;
}
}

void convert(char c,stack *postfix,stack *t)
{
char x;
switch(c)
{
case '(':
Pushs(t,c);
break;
case '^':
Case '*':
Case '/':
Case '\\':
Case '+':
Case '-':
If ( amalgar(c) < amalgar(t->a[t->top]) || t->a[t->top] == -1 )
pushs(t,c);
else
{
pops(t,&x);
pushs(postfix,x);
pushs(t,c);
}
break;
case ')':
While(!emptys(*t))
{
pops(t,&x);
if ( x == '(' )
break;
else
pushs(postfix,x);
}
break;
default:
Pushs(postfix,c);
}

}

int main()
{
stack infix;
stack postfix;
while(1)
{
clears(&infix);
clears(&postfix);
clrscr();
printf("--------------------------------------------------\n");
printf("|:: Convert infix to postfix :: Farhad fatemi ::|");
printf("\n--------------------------------------------------");
get(&infix,&postfix);

if (!isvalid(infix))
printf("\n\n! Ebarat infix not valid \n");
else
{
printf("\n\n> postfix : ");
for (int i=0;i<=postfix.top;i++)
printf("%c",postfix.a[i]);
printf("\n\n--------------------------------------------------\n");
}
printf("\n> continu ?(n,enter)");
if (getch()=='n')
break;
}

return 0;
}

devil_ff2008
25-11-2008, 14:53
البته اون یکم بهم ریخت
برای فایلشو آپلود کردم که قابل فهم تر باشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

IstaaKon
25-11-2008, 17:29
خیلی خیلی ممنون devil_ff2008 عزیز . زحمت کشیدی.بازم ممنون راستی من الان برنامه c رو ندارم که ای برنامه رو تستش کنم . اگه احیانا مشکلی داشتم باهاش ، شما هستید !!!؟ یا میتونم پیغام خصوصی بزنم ؟

راستی شما کدوم دانشگاه هستید . نکنه داخل کلاس ما باشی و ما خبر نداشته باشیم !!! اگه اسم استانی که دانشگاهتون اونجاست رو بگید ممنون میشم

devil_ff2008
26-11-2008, 12:07
:31: من شک کردم که شاید هم کلاسی باشیم
مشکلی بود در خدمتم
در ضمن من دارلفنون خراسان شمالی هستم

IstaaKon
27-11-2008, 18:08
devil_ff2008 جان این 14 ارور میده !!!

چیکارش کنم ؟؟؟

devil_ff2008
27-11-2008, 18:27
این برنامه رو الان تستش کردم اروری نداشت
شما با چی کامپایل میکنی ؟
این برنامه رو باید با Turbo C++ 3.0 کامپایل کنی

IstaaKon
27-11-2008, 20:38
ممنون از یه جا دیگه کامپایلر رو دانلودش کردم . درست شد...
خیلی خیلی ممنون devil_ff2008 جان . واقعا کمکم کردی . بازم ممنون . لطف کردی

devil_ff2008
27-11-2008, 22:38
خواهش میکنم
قابلی نداشت
راستی نگفتی کجایی ها
همکلاسی نیستی ؟

IstaaKon
28-11-2008, 19:13
نه من دانشگاه کرمان هستم . البته بچه کرمان نیستم
راستی این برنامه رو خودت نوشتی ؟

devil_ff2008
28-11-2008, 19:58
آره هرجاش مشکل داشتی بپرس