HinhTron


/*
   Bài 16(lthdtbai16.cpp): Đọc vào bán kính và màu nền (Xanh, Đỏ, Tím, Vàng    ) của n hình tròn
   từ tệp văn bản "hinhtron.txt". Đưa ra màn hình bán kính, màu nền, diện t    ích và chu vi
   của các hình tròn. Tính tổng diện tích và chu vi của n hình tròn.
   Đếm số lượng hình tròn có nền màu Xanh, Đỏ, Tím, Vàng.
 */
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string.h>

using namespace std;

// Khai bao lop doi tuong hinh tron
class HinhTron
{
private:
    float r;
    char mauNen[7];

public:
    void thietLapR(float r);
    void thietLapMauNen(const char *mauNen);
    void hien();
    float tinhDT();
    float tinhCV();
    int layMaMau();
};

//===chuong trinh chinh===
int main()
{
    // Tao doi tuong tep doc vao
    ifstream fin("hinhtron.txt"); // Khai bao bien
    int n;
    float r, tongDT = 0, tongCV = 0;
    char mauNen[7];
    int dem[4] = {0};

    // Dua ra tieu de chuong trinh
    cout << "Chương trình tính tổng diện tích và chu vi của n hình tròn đọ    c vào từ tệp\n";

    // Doc so luong hinh tron tu tep
    fin >> n;

    // Tao n doi tuong hinh tron de chua n hinh tron tu tep
    HinhTron *a = new HinhTron[n];

    // Doc danh sach n hinh tron tu tep vao n doi tuong hinh tron
    for (int i = 0; i < n; i++)
    {
        // Doc ban kinh va mau nen cua hinh tron thu i
        fin >> r >> mauNen;

        // Dua ban kinh va mau nen doc duoc vao doi tuong hinh tron i
        a[i].thietLapR(r);
        a[i].thietLapMauNen(mauNen);
    }

    // Dua danh sach hinh tron ra man hinh, tinh tong dt, cv va dem
    cout << "Danh sách hình tròn đọc được từ tệp là:";
    for (int i = 0; i < n; i++)
    {
        cout << "\nHình tròn thứ " << i + 1 << ":\n";
        a[i].hien();
        cout << endl;

        // Tinh tong dt va cv
        tongDT += a[i].tinhDT();
        tongCV += a[i].tinhCV();
    }
}
//===dinh nghia ham===

void HinhTron::thietLapR(float r)
{
    this->r = r;
}

void HinhTron::thietLapMauNen(const char *mauNen)
{
    strcpy(this->mauNen, mauNen);
}

void HinhTron::hien()
{
    cout << "Hình tròn có:";
    cout << "\n\tBán kính: " << r;
    cout << "\n\tMàu nền: " << mauNen;
    printf("\n\tDiện tích: %0.1f", 3.14 * r * r);
    printf("\n\tChu vi: %0.1f", 2 * 3.14 * r);
}

float HinhTron::tinhDT()
{
    return 3.14 * r * r;
}

float HinhTron::tinhCV()
{
    return 2 * 3.14 * r;
}

int HinhTron::layMaMau()
{
    if (strcasecmp(mauNen, "Xanh") == 0)
        return 0;
    if (strcasecmp(mauNen, "Đỏ") == 0)
        return 1;
    if (strcasecmp(mauNen, "Tím") == 0)
        return 2;
    if (strcasecmp(mauNen, "Vàng") == 0)
        return 3;
}
```

Last updated