Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: tính tổng các phần tử có tận cùng bằng 3

  1. #1
    Ngày gia nhập
    09 2021
    Bài viết
    0

    Mặc định tính tổng các phần tử có tận cùng bằng 3

    ai giải thích cho em vòng for chỗ tính tổng các phần tử có tận cùng bằng 3 được không ạ

    #include<iostream>
    using namespace std;
    class mangMotChieu{
    protected:
    int spt;
    int n;
    int* arr = new int[n];
    public :
    mangMotChieu() //hàm tao
    {
    }
    ~mangMotChieu() // ham huy
    {
    }
    mangMotChieu(int spt) // contructor co tham so la spt co kieu du lieu la int
    {
    this->spt = spt;//con tro den doi tuong cua lop

    }
    friend istream& operator >> (istream &is , mangMotChieu &mc) // nap chong toan tu nhap *

    {
    cout << "Nhap so luong pt : ";
    is >> mc.spt;
    for(int i=0 ; i<mc.spt ; i++){
    cout << "arr["<<i+1<<"]=";
    is >> mc.arr[i];
    }
    return is;//tra ve is
    }
    friend ostream& operator << (ostream &os , mangMotChieu mc) // nap chong toan tu xuat *

    {
    for(int i=0 ; i<mc.spt ; i++){
    os << mc.arr[i] << " ";
    }
    return os;//tra ve os
    }

    };
    class mangMotChieu2:public mangMotChieu // khai bao lop mangMotChieu2 ke thua tu lop mangMotChieu
    {

    public:
    mangMotChieu2()
    {
    }
    mangMotChieu2(int spt):mangMotChieu(spt)
    {
    }
    void tong() // ham tinh tong cac phan tu co tan cung = 3 *
    {
    int sum=0;
    for(int i=0 ; i<spt ; i++){
    if(arr[i]%10==3){
    sum+= arr[i];
    }
    }
    cout << sum << endl;
    }
    void inCacSoChankhongAm() //ham in ra cac so chan khong am *

    {
    for(int i=0 ; i<spt ; i++){ // dung vong for duyet tung phan tu trong mang
    if(arr[i]%2==0&& arr[i]>0){ // arr--> la mang ,co so phan tu la i
    cout<<arr[i] << " "; // kt dieu kien xem so nao chia het cho 2 va lon hon 0 thi in ra
    }
    }
    }
    void timSoLonNhat() //ham tim so lon nhat *

    {
    int max = arr[0]; // gan bien max cho phan tu dau tien cua mang
    for(int i=1 ; i<spt ; i++){ // dung vong for de duyet tung phan tu cua mang
    if(max < arr[i]) // neu phan tu hien tai > max
    max = arr[i]; // gan max cho phan tu do
    }
    cout << max;
    }
    };
    int main()
    {
    mangMotChieu2 mc2;//khai bao bien doi doi tuong dat la mc2
    cout << "Nhap Mang \n";
    cin >> mc2;
    cout << "Mang vua nhap la : \n";
    cout << mc2;
    cout << "\nTong cac so co tan cung bang 3 la :\n";
    mc2.tong();
    cout << "Cac so chan khong am la :\n";
    mc2.inCacSoChankhongAm();
    cout << "\nPhan tu lon nhat trong mang la :\n";
    mc2.timSoLonNhat();

    }

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    656

    Trích dẫn Nguyên bản được gửi bởi dang1402 Xem bài viết
    ai giải thích cho em vòng for chỗ tính tổng các phần tử có tận cùng bằng 3 được không ạ

    #include<iostream>
    using namespace std;
    class mangMotChieu{
    protected:
    int spt;
    int n;
    int* arr = new int[n];
    public :
    mangMotChieu() //hàm tao
    {
    }
    ~mangMotChieu() // ham huy
    {
    }
    mangMotChieu(int spt) // contructor co tham so la spt co kieu du lieu la int
    {
    this->spt = spt;//con tro den doi tuong cua lop

    }
    friend istream& operator >> (istream &is , mangMotChieu &mc) // nap chong toan tu nhap *

    {
    cout << "Nhap so luong pt : ";
    is >> mc.spt;
    for(int i=0 ; i<mc.spt ; i++){
    cout << "arr["<<i+1<<"]=";
    is >> mc.arr[i];
    }
    return is;//tra ve is
    }
    friend ostream& operator << (ostream &os , mangMotChieu mc) // nap chong toan tu xuat *

    {
    for(int i=0 ; i<mc.spt ; i++){
    os << mc.arr[i] << " ";
    }
    return os;//tra ve os
    }

    };
    class mangMotChieu2:public mangMotChieu // khai bao lop mangMotChieu2 ke thua tu lop mangMotChieu
    {

    public:
    mangMotChieu2()
    {
    }
    mangMotChieu2(int spt):mangMotChieu(spt)
    {
    }
    void tong() // ham tinh tong cac phan tu co tan cung = 3 *
    {
    int sum=0;
    for(int i=0 ; i<spt ; i++){
    if(arr[i]%10==3){
    sum+= arr[i];
    }
    }
    cout << sum << endl;
    }
    void inCacSoChankhongAm() //ham in ra cac so chan khong am *

    {
    for(int i=0 ; i<spt ; i++){ // dung vong for duyet tung phan tu trong mang
    if(arr[i]%2==0&& arr[i]>0){ // arr--> la mang ,co so phan tu la i
    cout<<arr[i] << " "; // kt dieu kien xem so nao chia het cho 2 va lon hon 0 thi in ra
    }
    }
    }
    void timSoLonNhat() //ham tim so lon nhat *

    {
    int max = arr[0]; // gan bien max cho phan tu dau tien cua mang
    for(int i=1 ; i<spt ; i++){ // dung vong for de duyet tung phan tu cua mang
    if(max < arr[i]) // neu phan tu hien tai > max
    max = arr[i]; // gan max cho phan tu do
    }
    cout << max;
    }
    };
    int main()
    {
    mangMotChieu2 mc2;//khai bao bien doi doi tuong dat la mc2
    cout << "Nhap Mang \n";
    cin >> mc2;
    cout << "Mang vua nhap la : \n";
    cout << mc2;
    cout << "\nTong cac so co tan cung bang 3 la :\n";
    mc2.tong();
    cout << "Cac so chan khong am la :\n";
    mc2.inCacSoChankhongAm();
    cout << "\nPhan tu lon nhat trong mang la :\n";
    mc2.timSoLonNhat();

    }
    C++ Code:
    1. void tong() // ham tinh tong cac phan tu co tan cung = 3 *
    2. {
    3. int sum=0;
    4. for(int i=0 ; i<spt ; i++){
    5. if(arr[i]%10==3){
    6. sum+= arr[i];
    7. }
    8. }
    9. cout << sum << endl;
    10. }
    Code:
    Giả sử mảng arr là { 1,3,4,5,6,23,63,21,43,19}
    Kết quả vòng lặp trên là
      i    arr[i]    arr[i]%10       sum
      0         1            1         0
      1         3            3         3
      2         4            4         3
      3         5            5         3
      4         6            6         3
      5        23            3        26
      6        63            3        89
      7        21            1        89
      8        43            3       132
      9        19            9       132
    
    Chú ý cột thứ 3, chỗ nào = 3 sẽ cộng arr[i] vào sum

  3. #3
    Ngày gia nhập
    07 2011
    Nơi ở
    Moscow-Russia
    Bài viết
    154

    Trích dẫn Nguyên bản được gửi bởi dang1402 Xem bài viết
    int* arr = new int[n];
    Mình không hiểu cách khai báo thuộc tính này cho class. Nếu mặc định khởi tạo n=0 thì việc cấp phát die ngay. Tại sao bạn không thao tác nó trong hàm tạo và hàm hủy của class?
    A good beginning and a good ending !

  4. #4
    Ngày gia nhập
    02 2016
    Bài viết
    337

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    C++ Code:
    1. void tong() // ham tinh tong cac phan tu co tan cung = 3 *
    2. {
    3. int sum=0;
    4. for(int i=0 ; i<spt ; i++){
    5. if(arr[i]%10==3){
    6. sum+= arr[i];
    7. }
    8. }
    9. cout << sum << endl;
    10. }
    Theo tinh thần "việc nào ra việc đó" thì hàm tính tổng chỉ tính tổng và trả về kết quả cho code gọi nó. Việc đưa kết quả ra màn hình là của nơi nhận chứ đâu phải của hàm.
    int tong() // ham tinh tong cac phan tu co tan cung = 3 *
    {
    int sum=0;
    for(int i=0 ; i<spt ; i++) if(arr[i]%10==3) sum+= arr[i];
    return sum;
    }

    Code trong main:
    cout << "\nTong cac so co tan cung bang 3 la :\n" << mc2.tong() << endl;

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