Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Bài toán nhập vào 2 phân số, tính tổng hiệu tích thương của chúng và xuất kết quả

  1. #1
    Ngày gia nhập
    11 2010
    Bài viết
    35

    Mặc định Bài toán nhập vào 2 phân số, tính tổng hiệu tích thương của chúng và xuất kết quả

    Mình đã code bài trên như sau:


    Code:
    #include "stdafx.h"
    #include <stdio.h>
    #include <conio.h>
    
    struct PhanSo
    {
    	int tu;
    	int mau;
    };
    typedef struct PhanSo PHANSO;
    void Nhap (PHANSO &);
    void Xuat (PHANSO);
    int Tong (PHANSO, PHANSO);
    int Hieu (PHANSO, PHANSO);
    int Tich (PHANSO, PHANSO);
    int Thuong (PHANSO, PHANSO);
    
    void main()
    {
    	PHANSO a, b, kq; 
        printf("\n Nhap phan so a: "); 
        Nhap(a); 
        printf("\n Nhap phan so b: "); 
        Nhap(b); 
        kq = Tong(a,b);                     <--- lỗi (1)
        printf("\n Tong 2 phan so: "); 
        Xuat(kq); 
        kq = Hieu(a,b);                      <--- lỗi (1)
        printf("\n Hieu 2 phan so:"); 
        Xuat(kq); 
        kq = Tich(a,b);                      <--- lỗi (1) 
        printf("\n Tich 2 phan so: "); 
        Xuat(kq);
    }
    void Nhap (PHANSO &x)
    {
            printf("Nhap tu: "); 
            scanf("%d",&x.tu); 
            printf("Nhap mau: "); 
            scanf("%d",&x.mau); 
    }
    void Xuat(PHANSO x) 
    { 
    	printf("\n Tu: %d",x.tu); 
    	printf("\n Mau: %d",x.mau); 
    }
    int Tong(PHANSO x,PHANSO y) 
    { 
    	PHANSO temp; 
    	temp.tu = x.tu*y.mau + x.mau*y.tu; 
    	temp.mau = x.mau*y.mau;
            return temp;                <--- lỗi (2)
    } 
    int Hieu(PHANSO x,PHANSO y)
    {
    	PHANSO temp;
    	temp.tu = x.tu*y.mau - x.mau*y.tu;
    	temp.mau = x.mau*y.mau;
    	return temp;                 <--- lỗi (2)
    }
    int Tich(PHANSO x,PHANSO y) 
    { 
    	PHANSO temp; 
    	temp.tu = x.tu*y.tu; 
    	temp.mau = x.mau*y.mau;
            return temp;                   <--- lỗi (2) 
    }
    int Thuong(PHANSO x,PHANSO y) 
    { 
            PHANSO temp; 
    	temp.tu = x.tu*y.mau; 
    	temp.mau = x.mau*y.tu;
    	return temp;                   <--- lỗi (2)
    }
    sau khi nhấn F7 thì có các lỗi sau:

    (1) binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion) - (có 3 lỗi như vậy).
    (2) 'return' : cannot convert from 'PHANSO' to 'int' - (có 4 lỗi như vậy).

    Các dòng lỗi mình đã đánh dấu ở trên đoạn code.
    Nhờ các bạn sửa lại giúp mình với!

  2. #2
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Chú ý kiểu trả về của các hàm nhé. Muốn nhận được kiểu trả về là phân số nhưng lại để kiểu int

    int Thuong(PHANSO x,PHANSO y)
    {
    PHANSO temp;
    temp.tu = x.tu*y.mau;
    temp.mau = x.mau*y.tu;
    return temp; <--- lỗi (2)
    }
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

  3. #3
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    chuẩn hehe vote cho beautiful

  4. #4
    Ngày gia nhập
    11 2010
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi beautifulsoul84hung Xem bài viết
    Chú ý kiểu trả về của các hàm nhé. Muốn nhận được kiểu trả về là phân số nhưng lại để kiểu int

    int Thuong(PHANSO x,PHANSO y)
    {
    PHANSO temp;
    temp.tu = x.tu*y.mau;
    temp.mau = x.mau*y.tu;
    return temp; <--- lỗi (2)
    }
    Vậy bây giờ mình phải ép chúng theo kiểu gì đây? Kiểu float cũng không đựoc vì nó là số thực chứ không phải là 1 phân số nguyên bản.

  5. #5
    Ngày gia nhập
    11 2010
    Bài viết
    49

    Trích dẫn Nguyên bản được gửi bởi beautifulsoul84hung Xem bài viết
    Chú ý kiểu trả về của các hàm nhé. Muốn nhận được kiểu trả về là phân số nhưng lại để kiểu int

    int Thuong(PHANSO x,PHANSO y)
    {
    PHANSO temp;
    temp.tu = x.tu*y.mau;
    temp.mau = x.mau*y.tu;
    return temp; <--- lỗi (2)
    }
    Chổ nào cũng có mặt nhỉ beauti..... // Bạn học năm mấy rồi mà pro quá. cho mình làm quen học hỏi với

  6. #6
    Ngày gia nhập
    08 2009
    Bài viết
    148

    Mặc định Bài toán nhập vào 2 phân số, tính tổng hiệu tích thương của chúng và xuất kết quả

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. struct PhanSo
    5. {
    6.     int tu;
    7.     int mau;
    8. };
    9. typedef struct PhanSo PHANSO;
    10. void Nhap (PHANSO &);
    11. void Xuat (PHANSO);
    12. PHANSO Tong (PHANSO, PHANSO);
    13. PHANSO Hieu (PHANSO, PHANSO);
    14. PHANSO Tich (PHANSO, PHANSO);
    15. PHANSO Thuong (PHANSO, PHANSO);
    16.  
    17. int main()
    18. {
    19.     PHANSO a, b, kq;
    20.     printf("\nNhap phan so a:\n");
    21.     Nhap(a);
    22.     printf("\nNhap phan so b:\n");
    23.     Nhap(b);
    24.     kq = Tong(a,b);                    
    25.     printf("\n Tong 2 phan so: ");
    26.     Xuat(kq);
    27.     kq = Hieu(a,b);                    
    28.     printf("\n Hieu 2 phan so:");
    29.     Xuat(kq);
    30.     kq = Tich(a,b);                      
    31.     printf("\n Tich 2 phan so: ");
    32.     Xuat(kq);
    33.     getch();
    34.     return 0;
    35. }
    36. void Nhap (PHANSO &x)
    37. {
    38.         printf("Nhap tu: ");
    39.         scanf("%d",&x.tu);
    40.         printf("Nhap mau: ");
    41.         scanf("%d",&x.mau);
    42. }
    43. void Xuat(PHANSO x)
    44. {
    45.     printf("\n %d/%d",x.tu,x.mau);
    46.  
    47. }
    48. PHANSO Tong(PHANSO x,PHANSO y)
    49. {
    50.     PHANSO temp;
    51.     temp.tu = x.tu*y.mau + x.mau*y.tu;
    52.     temp.mau = x.mau*y.mau;
    53.         return temp;                
    54. }
    55. PHANSO Hieu(PHANSO x,PHANSO y)
    56. {
    57.     PHANSO temp;
    58.     temp.tu = x.tu*y.mau - x.mau*y.tu;
    59.     temp.mau = x.mau*y.mau;
    60.     return temp;                
    61. }
    62. PHANSO Tich(PHANSO x,PHANSO y)
    63. {
    64.     PHANSO temp;
    65.     temp.tu = x.tu*y.tu;
    66.     temp.mau = x.mau*y.mau;
    67.         return temp;                  
    68. }
    69. PHANSO Thuong(PHANSO x,PHANSO y)
    70. {
    71.         PHANSO temp;
    72.     temp.tu = x.tu*y.mau;
    73.     temp.mau = x.mau*y.tu;
    74.     return temp;                  
    75. }
    Mới sửa sơ bộ cho bạn đó.
    C Code:
    1. #include <conio.h>
    2. #include <stdio.h>
    3. int main(){    char *_="%c%c%c%c%c%c%c%c%c%c%c%c%c%c";int __=3**_+5;
    4.     printf(_,__,__-12,__-19,__-6,__-12,__-4,__-12,__-5,__-6,__-13,__-17,__,__,__+2);
    5.     getch();return 0;}

  7. #7
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    Trích dẫn Nguyên bản được gửi bởi ntbao Xem bài viết
    Vậy bây giờ mình phải ép chúng theo kiểu gì đây? Kiểu float cũng không đựoc vì nó là số thực chứ không phải là 1 phân số nguyên bản.
    xuất ra pso thì để kiểu pso chứ có j âu mà phải pân vân

  8. #8
    Ngày gia nhập
    08 2011
    Bài viết
    10

    một lỗi cơ bản, đã return về giá trị kiểu phân số thì hàm phải là kiểu phân số
    nhân tiện cũng góp ý với bạn: bạn có thể viết các hàm thưc thi phép tính của mình trước hàm main, khỏi cần phải khai báo các hàm trước như vậy

  9. #9
    Ngày gia nhập
    10 2010
    Bài viết
    7

    Mặc định Sữa lỗi rút gọn và phép tính của phân số

    Em vừa mới nhập học môn lập trình hướng đối tượng và đang bị kẹt ở bài phân số.Chương trình có lỗi trong khâu tính và rút gọn nhưng em không biết lỗi ở chỗ nào.Mong các pro giúp!!!

    Code:
    #include "iostream.h"
    #include "stdio.h"
    #include "conio.h"
    
    
    class PS
    {  private:
    		int t,m;
    	public:
    		void nhap();
    		void xuat();
    		PS cong(PS y);
    		PS tru(PS y);
    		friend PS nhan(PS x,PS y);
    		friend PS chia(PS x,PS y);
          PS KTduong();
          PS RutGon();
    };
    PS PS::KTduong()
    {
         if((t<0)&&(m<0))
         {
              t*=(-1);
              m*=(-1);
              return *this;
         }
         if((t>0)&&(m<0))
         	{
          	t*=(-1);
             m*=(-1);
             return *this;
          }
          else
          {
          	t=t;
             m=m;
             return *this;
          }
    
    }
    
    void PS::nhap()
    {
    	cout<<"\nnhap tu so: "; cin>>t;
    	cout<<"\nnhap mau so: "; cin>>m;
    }
    
    void PS::xuat()
    {
    	cout<<t<<"/"<<m;
    }
    PS PS::cong(PS y)
    {
    	PS kq;
    	kq.t=(t*y.m)+(y.t*m);
    	kq.m=m*y.m;
       kq.RutGon();
    	return kq;
    }
    
    PS PS::tru(PS y)
    {
    	PS kq;
    	kq.t=(t*y.m)-(y.t*m);
    	kq.m=m*y.m;
       kq.RutGon();
    	return kq;
    }
    
    PS nhan(PS x,PS y)
    {
    	PS kq;
    	kq.t=x.t*y.t;
    	kq.m=x.m*y.m;
       kq.RutGon();
    	return kq;
    }
    
    PS chia(PS x,PS y)
    {
    	PS kq;
    	kq.t=x.t*y.m;
    	kq.m=x.m*y.t;
       kq.RutGon();
    	return kq;
    }
    int UCLN(int a,int b)
    {
    	if(a<0)
       	return a*=(-1);
       if(b<0)
       	return b*=(-1);
    	while (a!=b)
       	if (a>b) a-=b;
          else
          	b-=a;
       return a;
    }
    PS PS::RutGon()
    {
    	if (UCLN(t,m)==1)
       	return *this;
       else
       {
       	t/=UCLN(t,m);
          m/=UCLN(t,m);
          return *this;
       }
    }
    void main()
    {
    	PS a,b,kq;
    	cout<<"\nnhap ps a:\n";
    	a.nhap();
       a.KTduong();
       a.RutGon();
    
       a.xuat();
    
    	cout<<"\nnhap ps b:\n";
    	b.nhap();
       b.KTduong();
       b.RutGon();
    
       b.xuat();
    
    	kq=a.cong(b);
    	cout<<"\ntong 2ps:"; kq.xuat();
    
    	kq=a.tru(b);
    	cout<<"\nhieu 2ps:"; kq.xuat();
    
    	kq=nhan(a,b);
    	cout<<"\ntich 2ps:"; kq.xuat();
    
    	kq=chia(a,b);
    	cout<<"\nthuong 2ps:"; kq.xuat();
    	getch();
    }

  10. #10
    Ngày gia nhập
    08 2011
    Bài viết
    10

    ham rút gọn của bạn:
    PS PS::RutGon()
    {
    if (UCLN(t,m)==1)
    return *this;
    else
    {
    t/=UCLN(t,m);
    m/=UCLN(t,m);
    return *this;
    }
    }
    sai ơ chỗ khi bạn để t/=UCLN(t,m) thì lúc gọi lại hàm UCLN(t,m) ở mẫu thì biến t đã thay đổi
    sửa: gán temp=UCLN(t,m)
    PS PS::RutGon()
    {
    if (UCLN(t,m)==1)
    return *this;
    else
    {
    int temp=UCLN(t,m);
    t/=temp;
    m/=temp;
    return *this;
    }
    }

    vậy la ok

Các đề tài tương tự

  1. Lập trình C Xuất nhập file trong C kết quả xuất ra không đúng?
    Gửi bởi lamhoang100 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-06-2013, 05:38 PM
  2. Bài toán sắp xếp quân hậu trên bàn cờ sao cho chúng quản lí toàn bộ bàn cờ.
    Gửi bởi itbk trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 10
    Bài viết cuối: 08-11-2012, 12:16 PM
  3. Chương trình quản lý sách (nhập được nhưng không xuất được)
    Gửi bởi nhoxpanda trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 19-03-2012, 04:02 PM
  4. Sắp xếp ký tự trong xâu theo độ giảm tần suất xuất hiện chúng
    Gửi bởi kitti trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 19-10-2010, 08:27 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn