IT05
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.

IT05

Lớp CNTT05A - ĐH Đồng Tháp
 
Trang ChínhPortalGalleryLatest imagesTìm kiếmĐăng kýĐăng Nhập

 

 Tính trị biểu thức hậu tố

Go down 
Tác giảThông điệp
nebulafire

nebulafire


Tổng số bài gửi : 25
Join date : 06/02/2010
Age : 37

Tính trị biểu thức hậu tố Empty
Bài gửiTiêu đề: Tính trị biểu thức hậu tố   Tính trị biểu thức hậu tố I_icon_minitimeMon Feb 22, 2010 6:45 pm

Nếu muốn tính trung tố, tiền tố thì tương tự
Code:

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

#define MAXSTACK 100
#define TRUE 1
#define FALSE 0

struct stack{
   int top;
   double nodes[MAXSTACK];
};
typedef struct stack STACK;

void init(STACK *ps){
   ps->top = -1;
}

int empty(STACK *ps){
   return (ps->top==-1 ? TRUE : FALSE);
}

void push(STACK *ps, int x){
   if (ps->top == MAXSTACK -1)
      printf("\nStack bi day !");
   else{
      ps->nodes[++(ps->top)] = x;
   }
}

double pop(STACK *ps){
   if (empty(ps))
      printf("\nStack bi rong !");
   else
      return (ps->nodes[ps->top--]);
   return -1;
}

int lakyso(char kytu){
   return (kytu >= '0' && kytu <= '9');
}

double tinh(char toantu, double toanhang1, double toanhang2){
   switch(toantu)
   {
      case '+':
         return(toanhang1 + toanhang2);
      case '-':
         return(toanhang1 - toanhang2);
      case '*':
         return(toanhang1 * toanhang2);
      case '/':
         return(toanhang1 / toanhang2);
      default:{
         printf("Toan tu ko hop le");
         exit(1);}
   }

   return -1;
}

double dinh_tri(char bt[]){
   int c, vitri;
   double toanhang1, toanhang2, tri;
   STACK *ps;
   init(ps);
   for (vitri = 0;(c=bt[vitri])!='\0'; ++vitri){
      if (lakyso(c)){
         push(ps, (double)(c-'0'));
      }
      else{
         toanhang2 = pop(ps);
         toanhang1 = pop(ps);
         tri = tinh(c,toanhang1,toanhang2);
         push(ps, tri);
      }
   }

   return (pop(ps));
}

void main(){
   char c, bt[MAXSTACK];
   int vitri;
   clrscr();
   vitri = 0;
   printf("Nhap bieu thuc hau to can dinh tri: ");
   while ((bt[vitri++] = getchar())!='\n');
   bt[--vitri] = '\0';
   printf("\nBieu thuc: %s = %5.2f",bt,dinh_tri(bt));
   getch();

}
Về Đầu Trang Go down
 
Tính trị biểu thức hậu tố
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Bài Đa Thức. Nhớ dẫn tui ăn chè nhe (^ _ ^)! ! !
» Tính giai thừa , tổ hợp, ...
» Kiếm tiền kiểu này hay và thiết thực nhỉ
» thơ truyện và đố vui
» NHẠC TRỮ TÌNH

Permissions in this forum:Bạn không có quyền trả lời bài viết
IT05 :: SOURCE - CODE CHƯƠNG TRÌNH :: C/C++-
Chuyển đến