Câu lạc bộ Hỗ Trợ Học Tập
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.



 
Trang ChínhTrang Chính  Latest imagesLatest images  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
  • Top posters
 Mr.Pakapun (256)
 ddtan90 (178)
 tvduong (147)
 dthnam90 (137)
 minhquankq (101)
 arianbo (70)
 DoanhNhan (54)
 chicken (53)
 stormit (52)
 gentle_storm (47)

 

 nien luan1 giai phuong trinh

Go down 
2 posters
Tác giảThông điệp
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyThu Mar 31, 2011 7:36 pm

mình làm niên luận 1 sắp bcáo ui mà mình làm k0 dc,mình sử dụng stack mà k chạy,
mình thấy anh Tân có hướng dẫn sử dụng mảng mà làm k dc. ai có code bài đó hok?cho mình với.
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyThu Mar 31, 2011 7:38 pm

ý mình quên đưa cái đề.

Đề tài . Giải phương trình
Tác giả quyển sách giáo khoa toán tiểu học muốn viết một chương trình giải bài tập để minh
họa cho các bài học. Lý do mà tác giả muốn sử dụng chương trình là để tránh sai sót nếu giải
thủ công. Tất cả các bài tập có dạng một phương trình đại số đơn giản gồm 4 phép tính cộng,
trừ, nhân, và chia lấy phần nguyên. Để đơn giản, giả sử trong các phương trình không có sử
dụng dấu ngoặc. Các phép toán đều thực hiện trên các số nguyên. Ví dụ:
12 - 4 * 3 = x
Phương trình nếu giải thủ công sẽ như bên dưới. Mỗi bước, thực hiện một phép toán.
12 - 4 * 3 = x
12 - 12 = x
0 = x
Vế bên phải luôn luôn là biến. Tên biến có thể dài 16 ký tự. Có thể có hoặc không có các
khoảng trắng giữa các toán hạng, và toán tử. Thứ tự các phép toán là: nhân chia thực hiện
trước, cộng trừ thực hiện sau. Nếu hai phép toán có độ tiên giống nhau, phép toán bên trái
được thực hiện trước.
Dữ liệu đầu vào được cho trong file văn bản chứa phương trình cần giải. Kết quả đầu ra in ra
từng bước.
Ví dụ 1:
Đầu vào Kết quả
3 * 4 + 4 - 1 / 1 = xyzzy
Đầu ra:
3 * 4 + 4 - 1 / 1 = xyzzy
12 + 4 - 1 / 1 = xyzzy
12 + 4 - 1 = xyzzy
16 - 1 = xyzzy
15 = xyzzy
Ví dụ 2:

Đầu vào: 12 + 2 * 12 / 2 - 1 = y
Đầu ra: 12 + 2 * 12 / 2 - 1 = y
12 + 24 / 2 - 1 = y
12 + 12 - 1 = y
24 - 1 = y
23 = y
Ví dụ 3:
2 * -3 + -6 - +4 = r
Đầu ra: 2 * -3 + -6 - 4 = r
-6 + -6 - 4 = r
-12 - 4 = r
-16 = r
Về Đầu Trang Go down
ddtan90
Admin
Admin
ddtan90


Tổng số bài gửi : 178
Join date : 30/12/2010
Age : 33
Đến từ : SE 3 - K34

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyFri Apr 01, 2011 12:26 am

Chào bạn
Hôm nay mình khùng lên nên lôi bài của bạn ra mình code thử ^_^
bài này như mình đã nói nghĩ tới đâu code tới đó nên hơi dài và phức tạp.
Phần số âm mình chưa đưa vào nhưng cũng không mấy khó. bạn có thể tự code.

ý tưởng chính của giải thuật này là thay vì dùng sô phức tạp nên mình dùm 1 bộ kí tự để đại diện cho số. Lưu mảng gồm kí tự đại diện và toán tử. 1 bảng khác lưu giá trị của kí tự đó để tham khảo qua.


Code:

#include <iostream.h>
#include <vector.h>
typedef struct giatri {char kitu; int val;};

vector <giatri> ref;
vector <char> m;
char s[100];
char maxchar;

void trim () {  //cat bo khoang trang trong chuoi
    for (int i=0;i<strlen(s);i++)
        if (s[i]==' ')
            for (int p=i;p<=strlen(s)-1;p++) s[p]=s[p+1];
    }


int tim_nhanchia () { // tra ve vi tri cua dau nhan, chia
    for (int i=0;i<m.size();i++)
        if (m[i]=='*' || m[i]=='/') return i;
    return -1;   
}
   
int tim_congtru () { // tra ve vi tri cua dau +, -
    for (int i=0;i<m.size();i++)
        if (m[i]=='+' || m[i]=='-') return i;
    return -1;   
}

void convert() {// chuyen tu dang  1+3*3  =>  A+b*C, gia tri cua ABC dc luu trong ref, chuoi moi luu trong m
    m.clear();
    ref.clear();
    for (int i=0;i<strlen(s);i++)
        if(s[i]=='*' || s[i]=='/' ||s[i]=='+' ||s[i]=='-' ) m.push_back(s[i]);
        else {
              int tong=s[i]-'0';
              while (s[i+1]>='0' && s[i+1]<='9') { tong=tong*10+(s[i+1]-'0');  i++;}
              m.push_back(maxchar);
              giatri x;
              x.kitu=maxchar++;
              x.val=tong;
              ref.push_back(x);             
              }

    }


int get_giatri_cua_kitu(char c) { // lay gia tri cua ki tu trong mang luu tru
    for (int i=0;i<ref.size();i++) if (ref[i].kitu==c) return ref[i].val;   
    }
void set_giatri_cua_kitu(char c, int val) {  // dat lai gia tri cua 1 ki tu da luu tru
    for (int i=0;i<ref.size();i++) if (ref[i].kitu==c) { ref[i].val=val; return;} 
    }   


void in() { //in ra
      for (int i=0;i<m.size();i++)
              if(m[i]=='*' || m[i]=='/' ||m[i]=='+' ||m[i]=='-' ) cout<<m[i];
              else  cout<<get_giatri_cua_kitu(m[i]);
          cout<<endl;   
    }



int main () {
    maxchar = 'A';
    strcpy(s,"12 + 2 * 12 / 2 - 1");
   
    trim();   
 
    convert();

    in();
   
    while (1){
          int p = tim_nhanchia();
        // cout<<p<<endl;
          if (p==-1) break; 
          int kq;
          if (m[p]=='*') kq = get_giatri_cua_kitu(m[p-1])*get_giatri_cua_kitu(m[p+1]);
          else kq = get_giatri_cua_kitu(m[p-1])/get_giatri_cua_kitu(m[p+1]);
         
          set_giatri_cua_kitu(m[p-1],kq);
          m.erase(m.begin()+p);
          m.erase(m.begin()+p);
        in();
      }
      // cout<<"--------"<<endl;
    while (1){
          int p = tim_congtru();
          if (p==-1) break; 
          int kq;
          if (m[p]=='+') kq = get_giatri_cua_kitu(m[p-1])+get_giatri_cua_kitu(m[p+1]);
          else kq = get_giatri_cua_kitu(m[p-1])-get_giatri_cua_kitu(m[p+1]);
         
          set_giatri_cua_kitu(m[p-1],kq);
          m.erase(m.begin()+p);
          m.erase(m.begin()+p);
        in();
      }
     
     
    while(1); //dung lai de xem ket qua
    }

Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyFri Apr 01, 2011 7:27 pm

mừng quá.e cám ơn a Tân nhiều nhe.e sẽ ngâm cứu có j a giải thích thêm jum e nhe. bounce bounce
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyFri Apr 01, 2011 7:47 pm

a Tân ơi,nếu e muốn thêm tên biến vào bên phải thì làm sao???nếu mình tự nhập vào thì phải viết thêm hàm nhập nữa phải hok?còn thư viện vector.h có ý nghĩa j??anh giai thích jum e nhe.
Về Đầu Trang Go down
ddtan90
Admin
Admin
ddtan90


Tổng số bài gửi : 178
Join date : 30/12/2010
Age : 33
Đến từ : SE 3 - K34

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptySat Apr 02, 2011 12:18 pm

- Anh nghĩ là cho người dùng nhập nguyên chuỗi, sau đó mình viết hàm để tách riêng phần trước dấu = thành 1 chuỗi để xử lý, còn phần biến còn lại là biến rùi. Mỗi lần in ra thì in thêm dấu = và cái biến bên phải.
- Thư viện vector.h đúng như tên của nó, nó cho phép mình khai báo 1 vector.
ví dụ: vector v; //các kiểu khác tương tự
thì mình sẽ được 1 vector có kiểu int.
Vector thực chất chỉ là 1 dạng danh sách liên liên kết thui.
Một số phép toán dùng trên vector:
v.clear(); - Làm rỗng vector
v.push_back(x) - đưa x vào cuối vector
v.pop_back() - xóa phần tử cuối vector
v.erase(v.begin()+p) - xóa phần tử thứ p trong mảng
v.size() trả về số lượng phần tử của vector

Muốn lấy phần tử chổ nào thì chỉ cần v[i] ra thui, y chang bảng vậy đó.


Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptySun Apr 03, 2011 9:12 pm

a Tân ơi,sao mà e nhập chuỗi vô,in chuỗi đó ra đc.e viết hàm tách cho biến i chạy từ đầu đến cuối chuỗi,xét nếu m[i] =='=' thì tách chuỗi,mà tách k dc,sao ki z?
Về Đầu Trang Go down
ddtan90
Admin
Admin
ddtan90


Tổng số bài gửi : 178
Join date : 30/12/2010
Age : 33
Đến từ : SE 3 - K34

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptySun Apr 03, 2011 9:27 pm

Bạn tách bằng cách nào? có thể đưa code lên đây để mọi người xem không?
Mình không biết bạn code như thế nào nên cũng không biết giúp bạn thế nào nữa!
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyMon Apr 04, 2011 8:10 pm

e lấy code của a đưa trên diễn đàng.e viết thêm hàm tách.
void tach(){
for(int i=0;i<=m.size();i++){
if(m[i]=='=') cout<<"m.size()-'= '";
else cout< }
}

trong hàm int main() thì e thêm:
cout<<"nhap chuoi:";cin>>s;
cout<<"chuoi vua nhap:\n"<
Về Đầu Trang Go down
ddtan90
Admin
Admin
ddtan90


Tổng số bài gửi : 178
Join date : 30/12/2010
Age : 33
Đến từ : SE 3 - K34

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyTue Apr 05, 2011 9:55 am

À, em có một chổ sai trầm trọng! pale
Nói vậy cho ghê vậy chứ em chỉ sai ở chổ chưa hiểu vấn đề chổ này:
- trong bài của anh làm biến s đầu tiên có kiểu char[], còn biến m có kiểu vector.
- Khi tách dấu = thì bạn phải tách ở s chứ không phải ở m, vì s là chuỗi đầu tiên nhập vào, do đó có dấu = và tên biến, còn m là kết quả sau khi mình đã xử lý xong, chỉ còn các kí tự đại diện và toàn tử thôi.
- Các hàm size, push_bạk,.... chỉ có thể dùng trên vector chứ không dùng trên mảng được nhe Smile
-> nói chung là bạn viết lại hàm tách trên chuổi đầu tiên.
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyTue Apr 05, 2011 8:02 pm

huhu.e chưa hiểu lắm,a có thể đưa hàm tách lên e tham khảo đc hok?thank a nhiều.
mà cái vụ vecto đó e k0 có học nên ko hiểu lắm.
vd:1*2+2+2-1=x
s1=1*2+2+2-1
s2='=x'
roi moi lan xuat e xuat chuoi s1 da tinh +voi chuoi s2
gán giúp e nhe,e gần bcao ui.năn nỉ a đó.Crying or Very sad
Code:
#include <iostream.h>
#include <vector.h>
typedef struct giatri {char kitu; int val;};
vector <giatri> ref;
vector <char> m;
char s[100];
char maxchar;

void trim () {  //cat bo khoang trang trong chuoi
    for (int i=0;i<strlen(s);i++)
        if (s[i]==' ')
            for (int p=i;p<=strlen(s)-1;p++) s[p]=s[p+1];
    }


int tim_nhanchia () { // tra ve vi tri cua dau nhan, chia
    for (int i=0;i<m.size();i++)
        if (m[i]=='*' || m[i]=='/') return i;
    return -1; 
}
 
int tim_congtru () { // tra ve vi tri cua dau +, -
    for (int i=0;i<m.size();i++)
        if (m[i]=='+' || m[i]=='-') return i;
    return -1; 
}

void convert() {// chuyen tu dang  1+3*3  =>  A+b*C, gia tri cua ABC dc luu trong ref, chuoi moi luu trong m
    m.clear();
    ref.clear();
    for (int i=0;i<strlen(s);i++)
        if(s[i]=='*' || s[i]=='/' ||s[i]=='+' ||s[i]=='-' ) m.push_back(s[i]);
        else {
              int tong=s[i]-'0';
              while (s[i+1]>='0' && s[i+1]<='9') { tong=tong*10+(s[i+1]-'0');  i++;}
              m.push_back(maxchar);
              giatri x;
              x.kitu=maxchar++;
              x.val=tong;
              ref.push_back(x);           
              }

    }
int get_giatri_cua_kitu(char c) { // lay gia tri cua ki tu trong mang luu tru
    for (int i=0;i<ref.size();i++) if (ref[i].kitu==c) return ref[i].val; 
    }
void set_giatri_cua_kitu(char c, int val) {  // dat lai gia tri cua 1 ki tu da luu tru
    for (int i=0;i<ref.size();i++) if (ref[i].kitu==c) { ref[i].val=val; return;}
    } 


void in() { //in ra
      for (int i=0;i<m.size();i++)
              if(m[i]=='*' || m[i]=='/' ||m[i]=='+' ||m[i]=='-' ) cout<<m[i];
              else  cout<<get_giatri_cua_kitu(m[i]);
          cout<<endl; 
    }

void tach(){
   
    for(int i=0;i<strlen(s);i++){
        if(s[i] !='=' ) 
          cout<<s[i];//xuat ra chuoi truoc dau =, co the xuat vao chuoi khac
          else break;//thoat hoac cho cac ki tu phia sau vao chuoi khac
       
    }
}


int main () {
    //char ch
    maxchar = 'A';
    //strcpy(s,"12 + 2 * 12 / 2 - 1 ");
    cout<<"nhap chuoi:";cin>>s;
    cout<<"chuoi vua nhap:\n"<<s<<"\n" ;
    tach();
    trim(); 
 
    convert();

    in();
 
    while (1){
          int p = tim_nhanchia();
        // cout<<p<<endl;
          if (p==-1) break;
          int kq;
          if (m[p]=='*') kq = get_giatri_cua_kitu(m[p-1])*get_giatri_cua_kitu(m[p+1]);
          else kq = get_giatri_cua_kitu(m[p-1])/get_giatri_cua_kitu(m[p+1]);
       
          set_giatri_cua_kitu(m[p-1],kq);
          m.erase(m.begin()+p);
          m.erase(m.begin()+p);
        in();
      }
      // cout<<"--------"<<endl;
    while (1){
          int p = tim_congtru();

          if (p==-1) break;
          int kq;
          if (m[p]=='+') kq = get_giatri_cua_kitu(m[p-1])+get_giatri_cua_kitu(m[p+1]);
          else kq = get_giatri_cua_kitu(m[p-1])-get_giatri_cua_kitu(m[p+1]);
       
          set_giatri_cua_kitu(m[p-1],kq);
          m.erase(m.begin()+p);
          m.erase(m.begin()+p);
        in();
      }
       


  while(1); //dung lai de xem ket qua
    }


viết hàm tách được mà chưa có cộng chuỗi đc
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyThu Apr 07, 2011 8:58 am

huhu
Về Đầu Trang Go down
ddtan90
Admin
Admin
ddtan90


Tổng số bài gửi : 178
Join date : 30/12/2010
Age : 33
Đến từ : SE 3 - K34

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyThu Apr 07, 2011 11:35 am

Anh thấy em làm hàm tách vậy cũng được rùi, nhưng phải cho nó lưu vào một mảng khác chứ không phải in ra như vậy.
còn riêng hàm cộng, anh nghĩ đâu cần làm hàm gì đâu.
ví dụ :
em nhập vô chuỗi 1+2-3*4=x
thì em lưu s1="1+2-3*4" và s2="=x"
mỗi lần in ra em chỉ cần gọi in(), rùi sau đó gọi cout<
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyThu Apr 07, 2011 8:12 pm

sao mà e gọi hàm tách thì nó tách ra được dòng đó nhưng mà sau đó nó tính thì ra kèm theo mã ascii của dấu = với tên biến là sai ở chỗ nào z?a sửa code lại jum e nhe
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptySat Apr 09, 2011 8:26 pm

vẫn như z.k ra a Tân ui
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyWed Apr 13, 2011 12:03 am

sao mà e viết lại ở mảng mới mà nó cũng ko ra nữa.kì z?
Về Đầu Trang Go down
ngoclan22
Thành viên mới
Thành viên mới
ngoclan22


Tổng số bài gửi : 19
Join date : 31/03/2011

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyWed Apr 13, 2011 9:19 pm

a tân ơi, a có thể code cho e xin phần nhập tên biến đc hok?
sao e làm nhiều lần mà vẫn k dc. a cám ơn a nhiều.hi
Về Đầu Trang Go down
ddtan90
Admin
Admin
ddtan90


Tổng số bài gửi : 178
Join date : 30/12/2010
Age : 33
Đến từ : SE 3 - K34

nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh EmptyWed Apr 13, 2011 11:55 pm

Anh chỉ sợ nếu làm hết như vậy thì lúc em báo cáo sẽ gặp rắc rối đó.
Với lại em cũng nên rèn kỹ năng lập trình thêm một tí!
Dân IT thì kỹ năng lập trình quan trọng lắm dù cho bất kì chuyên ngành nào.

Trong code mới anh có sửa 3 chổ:
- thêm hàm tách biểu thức
- chỉnh lại hàm in() để nó in thêm biến
- trong main() , gọi thêm hàm tachbieuthuc() sau hàm trim();

Code:

#include <iostream.h>
#include <vector.h>
typedef struct giatri {char kitu; int val;};

vector <giatri> ref;
vector <char> m;
char s[100];
char maxchar;

char tenbien[10];

//luc dau s="2-6+4=x"
//sau ham nay s se chi con "2-6+4", con ten bien se la "=x"
void tachbieuthuc () {
    int k=0;//index ben mang tenbien
    int vitri_daubang=0;
    for ( vitri_daubang=0;vitri_daubang<strlen(s);vitri_daubang++)
        if (s[vitri_daubang]=='=') break;
   
    for (int i=vitri_daubang;i<=strlen(s);i++)//lay luon ki tu =, ten bien  va ki tu  '\0'
        tenbien[k++]=s[i];     
       
    s[vitri_daubang]='\0'; //bo phan sau dau = cua s
}



void trim () {  //cat bo khoang trang trong chuoi
    for (int i=0;i<strlen(s);i++)
        if (s[i]==' ')
            for (int p=i;p<=strlen(s)-1;p++) s[p]=s[p+1];
    }


int tim_nhanchia () { // tra ve vi tri cua dau nhan, chia
    for (int i=0;i<m.size();i++)
        if (m[i]=='*' || m[i]=='/') return i;
    return -1;   
}
   
int tim_congtru () { // tra ve vi tri cua dau +, -
    for (int i=0;i<m.size();i++)
        if (m[i]=='+' || m[i]=='-') return i;
    return -1;   
}

void convert() {// chuyen tu dang  1+3*3  =>  A+b*C, gia tri cua ABC dc luu trong ref, chuoi moi luu trong m
    m.clear();
    ref.clear();
    for (int i=0;i<strlen(s);i++)
        if(s[i]=='*' || s[i]=='/' ||s[i]=='+' ||s[i]=='-' ) m.push_back(s[i]);
        else {
              int tong=s[i]-'0';
              while (s[i+1]>='0' && s[i+1]<='9') { tong=tong*10+(s[i+1]-'0');  i++;}
              m.push_back(maxchar);
              giatri x;
              x.kitu=maxchar++;
              x.val=tong;
              ref.push_back(x);             
              }

    }


int get_giatri_cua_kitu(char c) { // lay gia tri cua ki tu trong mang luu tru
    for (int i=0;i<ref.size();i++) if (ref[i].kitu==c) return ref[i].val;   
    }
void set_giatri_cua_kitu(char c, int val) {  // dat lai gia tri cua 1 ki tu da luu tru
    for (int i=0;i<ref.size();i++) if (ref[i].kitu==c) { ref[i].val=val; return;} 
    }   


void in() { //in ra
      for (int i=0;i<m.size();i++)
              if(m[i]=='*' || m[i]=='/' ||m[i]=='+' ||m[i]=='-' ) cout<<m[i];
              else  cout<<get_giatri_cua_kitu(m[i]);
          cout<<tenbien<<endl;   
    }



int main () {
    maxchar = 'A';
  // strcpy(s,"12 + 2 * 12 / 2 - 1");
    gets(s);
    trim();   
    tachbieuthuc();/////////////////////
    convert();

    in();
   
    while (1){
          int p = tim_nhanchia();
        // cout<<p<<endl;
          if (p==-1) break; 
          int kq;
          if (m[p]=='*') kq = get_giatri_cua_kitu(m[p-1])*get_giatri_cua_kitu(m[p+1]);
          else kq = get_giatri_cua_kitu(m[p-1])/get_giatri_cua_kitu(m[p+1]);
         
          set_giatri_cua_kitu(m[p-1],kq);
          m.erase(m.begin()+p);
          m.erase(m.begin()+p);
        in();
      }
      // cout<<"--------"<<endl;
    while (1){
          int p = tim_congtru();
          if (p==-1) break; 
          int kq;
          if (m[p]=='+') kq = get_giatri_cua_kitu(m[p-1])+get_giatri_cua_kitu(m[p+1]);
          else kq = get_giatri_cua_kitu(m[p-1])-get_giatri_cua_kitu(m[p+1]);
         
          set_giatri_cua_kitu(m[p-1],kq);
          m.erase(m.begin()+p);
          m.erase(m.begin()+p);
        in();
      }
     
     
    while(1); //dung lai de xem ket qua
    }

Về Đầu Trang Go down
Sponsored content





nien luan1 giai phuong trinh Empty
Bài gửiTiêu đề: Re: nien luan1 giai phuong trinh   nien luan1 giai phuong trinh Empty

Về Đầu Trang Go down
 
nien luan1 giai phuong trinh
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Chương trình giải hệ phương trình tuyến tính bằng phương pháp Crammer.
» Chương trình nén và giải nén tập tin văn bản txt bằng thuật toán Huffman.
» Giải hệ phương trình tuyến tính
» nl 1 giai phương trình bằng stack
» Tìm hiểu phương pháp chia đôi để tính nghiệm thực gần đúng của phương trình.

Permissions in this forum:Bạn không có quyền trả lời bài viết
Câu lạc bộ Hỗ Trợ Học Tập :: NIÊN LUẬN - TIỂU LUẬN - LUẬN VĂN TỐT NGHIỆP :: NIÊN LUẬN :: >>NIÊN LUẬN 1-
Chuyển đến