30/09/2018, 17:13

Lỗi chạy không đúng kết quả

Em sử dụng khuôn mẫu lớp để tính a^b .Nhưng khi chạy kiểu int cho kết quả đúng nhưng khi chuyển sang kiểu float nó cũng ra kết quả nhưng mà không đúng!

#include "iostream"
using namespace std;
template<class T>
     class bai4
    {
        T a ;
        T b ;
    public :
        void nhap()
        {
            cout<<"
Nhap a:";
            cin>>a;
            cout<<"
Nhap b :";
            cin>>b;
        }
        void somu()
        {
            T c;
            c=1;
            for(int i = 0 ;i<b;i++)
            {
                c=a*c;
            }
            cout<<""<<a<<"^"<<b<<" = "<<c;
        }
    };
  main()
        {
            /*bai4<int> b1;
            b1.nhap();
            b1.somu();*/
            bai4<float> b2;
            b2.nhap();
            b2.somu();
        }
*grab popcorn* viết 19:20 ngày 30/09/2018

b là float thì sao for chạy đúng được hả bạn?

Gió viết 19:27 ngày 30/09/2018

ab với b không phải số nguyên thì chạy sai là đúng

BigZero viết 19:18 ngày 30/09/2018

vậy sửa sao để đúng bạn !! cũng biết là sai vậy mà k biết sửa

Gió viết 19:28 ngày 30/09/2018

Viết thêm trường hợp đặc biệt cho template

 template<>
     class bai4<float>
    {
        float a ;
        float b ;
    public :
        void nhap()
        {
            cout<<"\nNhap a:";
            cin>>a;
            cout<<"\nNhap b :";
            cin>>b;
        }
        void somu()
        {
            float c=pow(a,b);
            cout<<""<<a<<"^"<<b<<" = "<<c;
        }
    };
Bài liên quan
0