imit
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.


Diễn đa`n của CĐTH07A
 
Trang ChínhPortalLatest imagesTìm kiếmĐăng kýĐăng Nhập

 

 Thuật toán Baln ngược:

Go down 
3 posters
Tác giảThông điệp
seven_14104
VIP
VIP
seven_14104


Tổng số bài gửi : 25
Join date : 16/05/2008
Age : 34

Thuật toán Baln ngược: Empty
Bài gửiTiêu đề: Thuật toán Baln ngược:   Thuật toán Baln ngược: Icon_minitimeSun May 18, 2008 7:16 pm

bài tập ôg thầy ra đêyExclamation Very Happy mấy ku debug lại rùi cùng nhau... nộp ^^

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
//------------------------------------------------------------------------------
const int MAX_STRING_LEN = 256;
typedef char String[MAX_STRING_LEN + 1]; // Plus '\0' character
//------------------------------------------------------------------------------
void Input(String infix)
{
do
{
printf("Nhap bieu thuc cong tru nhan chia: ");
gets(infix);
} while (infix[0] == '\0');
// Remove spaces
int i, j = 0;
for (i = 0; infix[i] != '\0'; i++)
if (!isspace(infix[i]))
{
infix[j] = infix[i];
j++;
}
infix[j] = '\0';
}
//------------------------------------------------------------------------------
char isNumberChar(char k)
{
return (isdigit(k) || k == '.');
}
//------------------------------------------------------------------------------
char isOperator(char k)
{
return (k == '*' || k == '/' || k == '+' || k == '-');
}
//------------------------------------------------------------------------------
char isLargerOrSame(char x, char y)
{
return (x == '*' || x == '/' || y == '+' || y == '-');
}
//------------------------------------------------------------------------------
void BuildPostfix(String postfix, String infix)
{
String stack;
int slen = 0; // Length of stack
int plen = 0; // Length of postfix
int i, j;

for (i = 0; infix[i] != '\0'; i++)
if (isNumberChar(infix[i]))
{
postfix[plen] = infix[i];
plen++;
}
else if (infix[i] == ')')
{
for (j = slen - 1; (j >= 0) && (stack[j] != '('); j--)
{
postfix[plen] = stack[j];
plen++;
}
slen = j;
}
else
{
if (isOperator(infix[i]))
{
while (slen > 0
&& stack[slen - 1] != '('
&& isLargerOrSame(stack[slen - 1], infix[i]))
{
slen--;
postfix[plen] = stack[slen];
plen++;
}
postfix[plen] = ' ';
plen++;
}
stack[slen] = infix[i];
slen++;
}
// Add all remaining
while (slen > 0)
{
postfix[plen] = stack[slen - 1];
slen--;
plen++;
}
postfix[plen] = '\0';
}
//------------------------------------------------------------------------------
double GetResult(String postfix)
{
double stack[MAX_STRING_LEN / 2];
int slen = 0;
int i, j;
for (i = 0; postfix[i] != '\0'; i++)
{
if (isNumberChar(postfix[i]) && !isNumberChar(postfix[i + 1]))
{
j = i;
while (j > 0 && isNumberChar(postfix[j - 1]))
j--;
sscanf(postfix + j, "%lf", &stack[slen]);
slen++;
}
else if (isOperator(postfix[i]))
{
slen--;
if (postfix[i] == '*')
stack[slen - 1] *= stack[slen];
else if (postfix[i] == '/')
stack[slen - 1] /= stack[slen];
else if (postfix[i] == '+')
stack[slen - 1] += stack[slen];
else if (postfix[i] == '-')
stack[slen - 1] -= stack[slen];
}
}
return stack[0];
}
//------------------------------------------------------------------------------
int main()
{
String infix, postfix;
Input(infix);
printf("Trung to: %s\n", infix);
BuildPostfix(postfix, infix);
printf("Hau to: %s\n", postfix);
printf("Ket qua: %lf", GetResult(postfix));
return EXIT_SUCCESS;
}
Về Đầu Trang Go down
http://iamit.wordpress.com/
Admin
Admin
Admin
Admin


Tổng số bài gửi : 22
Join date : 15/05/2008
Age : 34

Thuật toán Baln ngược: Empty
Bài gửiTiêu đề: Re: Thuật toán Baln ngược:   Thuật toán Baln ngược: Icon_minitimeMon May 19, 2008 9:29 am

công nhận mình giỏi thật! hâm mộ mình ghê Very Happy Laughing Wink cheers
Về Đầu Trang Go down
http://imit.tk/
iamkernel
Moderator
Moderator
iamkernel


Tổng số bài gửi : 81
Join date : 17/05/2008

Thuật toán Baln ngược: Empty
Bài gửiTiêu đề: Re: Thuật toán Baln ngược:   Thuật toán Baln ngược: Icon_minitimeMon May 19, 2008 2:19 pm

Thuật toán Baln ngược: 758904 Sax ... cái này cũng share nữa àh... DEL bi giờ nhá .. Chơi gian lận àh ...
(mình cũng fải copy rùi debug lại .. đi nộp thui monkey monkey
Về Đầu Trang Go down
http://360.yahoo.com/phannhan0088
Sponsored content





Thuật toán Baln ngược: Empty
Bài gửiTiêu đề: Re: Thuật toán Baln ngược:   Thuật toán Baln ngược: Icon_minitime

Về Đầu Trang Go down
 
Thuật toán Baln ngược:
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» THỦ THUẬT CHO WINDOWS VISTA TÂN THỜI!
» TQ_*NHẬT MỸ laptop*HP Pavilion phong cách cho dân mỹ thuật !!!!

Permissions in this forum:Bạn không có quyền trả lời bài viết
imit :: Học tập - nghiên cứu :: Lập trình-
Chuyển đến