Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4

Chủ đề: Về class

  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Về class

    Mình có 1 bài tập như sau: xây dựng lớp phân số gồm các thuộc tính : tử số & mẫu số, các phương thức là: nhập phân số, kiểm tra tính hợp lệ của phân số, in phân số ra màn hình, cộng, trừ, nhân, chia, hai phân số bất kì trong n phân số được nhập vào.
    Mình làm 1 hồi xong bài này rồi build thì thấy 25 lỗi. các dạng lỗi là:
    (lỗi 1) 'in' : function does not take 1 parameters.
    (lỗi 2) '-=' : left operand must be l-value.
    (lỗi 3) '/=' : illegal, right operand has type 'int (__thiscall ps::*)(void)'.
    (lỗi 4) '=' : left operand must be l-value.
    Bấy nhiêu lỗi đó thui, mình sửa không được. Các bạn sửa giúp mình và giải thích tại sao lại sửa như thế nhá!
    Dưới đây là các file:

    class.h

    Mã:
    #pragma once  class ps {    int ts_,ms_;public:    ps(void);    ~ps(void);    void tm(int ts,int ms);    int tuso();    int mauso();};
    class.cpp

    Mã:
    #include "class.h"#include <iostream>  ps::ps(void) {    ts_,ms_;}ps::~ps(void) {}void ps::tm(int ts,int ms) {    this->ts_ = ts;    this->ms_ = ms;}int ps::tuso() {    return this->ts_;}int ps::mauso() {    return this->ms_;}
    file.cpp

    Mã:
    #include <iostream>#include <conio.h>#include "class.h"  void nhap(ps *pS, int n);void in(ps *pS, int n);ps rutgon(ps Ps);ps operator+(ps ps1,ps ps2);ps operator-(ps ps1,ps ps2);ps operator*(ps ps1,ps ps2);ps operator/(ps ps1,ps ps2);  int main() {    int n,a,b;    aa:std::cout << "Nhap vao so luong phan so: "; std::cin >> n;    ps *Ps = new ps[n+1];    if (Ps == NULL) {        std::cout << "Cap phat bo nho bi loi! ";        getch();        system("cls");        goto aa;    }    nhap(Ps,n);    std::cout << "
    Cac phan so vua nhap:
    ";    for (int i = 1; i <= n; i++) {        in(Ps[i]);// (lỗi 1)        std::cout << '
    ';    }    std::cout << "
    Ban muon thuc hien phep tinh voi cac phan so nao? (<Gia tri ps1><dau cach><gia tri ps2>) ";    std::cin >> a >> b;    in(Ps[a]); std::cout << " + "; in(Ps[b]); std::cout << " = "; in(Ps[a] + Ps[b]); std::cout << '
    ';//(lỗi 1)    in(Ps[a]); std::cout << " - "; in(Ps[b]); std::cout << " = "; in(Ps[a] - Ps[b]); std::cout << '
    ';//(lỗi 1)    in(Ps[a]); std::cout << " * "; in(Ps[b]); std::cout << " = "; in(Ps[a] * Ps[b]); std::cout << '
    ';//(lỗi 1)    if (Ps[b].tuso() == 0)         std::cout << "Phep chia bi loi
    ";    else{        in(Ps[a]); std::cout << " / "; in(Ps[b]); std::cout << " = "; in(Ps[a] / Ps[b]); std::cout << '
    ';//(lỗi 1)}    getch();    return 0;}  void nhap(ps *pS, int n) {    int t,m;    for (int i = 1; i <= n; i++) {        t:std::cout << "Nhap phan so thu " << i << "<tu so><dau cach><mauso> : ";        std::cin >> t >> m;        while (m == 0) {            std::cout << "Mau so khong the bang 0 vui long nhap lai.
    ";            goto t;        }        pS[i].tm(t,m);    }}void in(ps &pS) {        std::cout << pS.tuso() << "/" << pS.mauso();}ps rutgon(ps Ps) {    ps ps1 = Ps;    while (ps1.tuso() != ps1.mauso()) {        if (ps1.tuso() > ps1.mauso()) ps1.tuso() -=ps1.mauso();// (lỗi 2)        else ps1.mauso() -= ps1.tuso();// (lỗi 2)    }    Ps.tuso() /= ps1.tuso();// (lỗi 3)    Ps.mauso() /= ps1.mauso(); //(lỗi 3)    return Ps;}ps operator+ (ps ps1, ps ps2) {    ps Ps;    Ps.tuso() = ps1.tuso() * ps2.mauso() + ps2.tuso() * ps1.mauso();// (lỗi 4)    Ps.mauso() = ps1.mauso() * ps2.mauso(); // (lỗi 4)    return rutgon(Ps);}ps operator- (ps ps1, ps ps2) {    ps Ps;    Ps.tuso() = ps1.tuso() * ps2.mauso() - ps2.tuso() * ps1.mauso();// (lỗi 4)    Ps.mauso() = ps1.mauso() * ps2.mauso(); // (lỗi 4)    return rutgon(Ps);}ps operator* (ps ps1, ps ps2) {    ps Ps;    Ps.tuso() = ps1.tuso() * ps2.tuso();// (lỗi 4)    Ps.mauso() = ps1.mauso() * ps2.tuso(); // (lỗi 4)    return rutgon(Ps);}ps operator/ (ps ps1, ps ps2) {    ps Ps;    Ps.tuso() = ps1.tuso() * ps2.mauso(); // (lỗi 4)    Ps.mauso() = ps1.mauso() * ps2.tuso();// (lỗi 4)    return rutgon(Ps);}
    Mong các bạn giúp mình.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    (lỗi 1) 'in' : function does not take 1 parameters.
    void in(ps *pS, int n);// 2 parameters
    void in(ps &pS) {// sao chỗ này lại có 1
    std::cout << pS.tuso() << "/" << pS.mauso();
    }
    mấy cái kia thì ...

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Lỗi 1: Thực ra bạn không cần đến đối số n trong hàm nhap và in.
    Lỗi 2, 3, 4: Các phương thức của class vẫn có thể truy nhập biến private của class đó.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ô, hóa ra là mình khi ghi khai báo định nghĩa thì ghi nhầm

    Mã:
    void in(ps *pS, int n);
    lúc sửa lại mình quên sửa phần đó, chỉ sửa phần định nghĩa

    Mã:
    void in(ps &pS) {        std::cout << pS.tuso() << "/" << pS.mauso();}
    còn mấy chỗ kia thì mình sửa được rồi.
    Vậy mà cũng làm phiền các bạn.
    Thanks nhiều nha

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •