Thứ Hai, 6 tháng 5, 2024

45. Chương trình tào lao phiên bản 3 trong C++ phần 2

Tương tự như với phiên bản 2, chúng ta sẽ thử với giả định 2 hàm nhập đã làm tròn phận sự.
Chúng ta sẽ tạo sẵn một mảng cấu trúc.


    struct SinhVien sv[3] = {
               {"Tran Van A", "tranvanA@email.com","123 HV Da Nang", "CNTT", 6.80},
               {"Le Van B", "levanB@email.com","456 HV Da Nang", "CNTT", 7.80},
               {"Nguyen Thi C", "nguyenthiC@email.com","789 HV Da Nang", "CNTT", 8.80}
    };
    


Chúng ta có thể thay bằng SinhVien sv[3] = {....cũng được, tức là không cần lệnh struct phía trước. Bấm Run để chạy thử


 

Muốn in thông tin của 1 sinh viên ta sẽ định nghĩa hàm xuat(SinhVien x) như sau


void xuat(SinhVien x){
    
    cout <<"Ho ten : " << x.hoten << endl;
    cout <<"Email : "<< x.email << endl;
    cout <<"Dia chi : " << x.diaChi << endl;
    cout <<"Chuyen nganh : " << x.chuyenNganh << endl;
    cout <<"Diem trung binh : " << x.diemTrungBinh << endl;
    
}



Để chạy thử với 1 sinh viên, giả sử ta muốn in sinh viên đầu tiên tức là in thông tin của sv[0], ta sẽ khai báo một biến x như sau

SinhVien x = sv[0];

Sau đó đơn giản ta gọi hàm xuat(SinhVien x) như sau

xuat(x);

Bây giờ chương trình của chúng ta sẽ thế này

#include <iostream>
#include <string>

using namespace std;
struct SinhVien{
    string hoten;
    string email;
    string diaChi;
    string chuyenNganh;
    double diemTrungBinh;
};
typedef struct SinhVien SinhVien;

void nhap(SinhVien x);
void nhapSinhVien(SinhVien a[], int n);
void xuat(SinhVien x);
void xuatSinhVien(SinhVien a[], int n);

int main()
{
        struct SinhVien sv[3] = {
               {"Tran Van A", "tranvanA@email.com","123 HV Da Nang", "CNTT", 6.80},
               {"Le Van B", "levanB@email.com","456 HV Da Nang", "CNTT", 7.80},
               {"Nguyen Thi C", "nguyenthiC@email.com","789 HV Da Nang", "CNTT", 8.80}
        };
    SinhVien x = sv[0];
    xuat(x);
    return 0;
}

void nhap(SinhVien x){
}
void nhapSinhVien(SinhVien a[], int n){
}
void xuat(SinhVien x){
    cout <<"Ho ten : " << x.hoten << endl;
    cout <<"Email : "<< x.email << endl;
    cout <<"Dia chi : " << x.diaChi << endl;
    cout <<"Chuyen nganh : " << x.chuyenNganh << endl;
    cout <<"Diem trung binh : " << x.diemTrungBinh << endl;
}

void xuatSinhVien(SinhVien a[], int n){
}




Bấm Run để chạy thử, mọi thứ rất ổn. 

Hàm xuatSinhVien(SinhVien a[], int n) cũng sẽ được viết theo phong cách...tào lao giống phiên bản 2. Chúng ta tạm cho biến int n là một số cho sẵn, ví dụ 3, sau đó chúng ta sử dụng vòng lặp For để duyệt qua mảng cấu trúc đã cho sẵn, mỗi vòng sẽ gọi hàm xuat(SinhVien x) một lần để in thông tin từng sinh viên. Hình dạng của hàm sẽ rất đơn giản.

void xuatSinhVien(SinhVien a[], int n){

for(int i = 0; i < n; i++){
        cout <<"Thong tin sinh vien thu: " << i + 1<< endl;
        xuat(a[i]);
    }
}


Bấm Run để chạy chương trình


Bây giờ chúng ta sẽ xóa hai dòng lệnh sau


//SinhVien x = sv[0];

//xuat(x);


Để thử 2 hàm xuất thông tin vừa viết, chúng ta tạm coi đã có thông tin từ hàm nhập, đó là mảng cấu trúc SinhVien sv[3].

Trong main(), chúng ta sẽ gọi hàm xuatSinhVien(SinhVien a[], int n) với tham số n sẽ tạm cho bằng 3 và tham số đầu sẽ là sv.

Chương trình sẽ như sau

#include <iostream>
#include <string>

using namespace std;
struct SinhVien{
    string hoten;
    string email;
    string diaChi;
    string chuyenNganh;
    double diemTrungBinh;
};
typedef struct SinhVien SinhVien;

void nhap(SinhVien x);
void nhapSinhVien(SinhVien a[], int n);
void xuat(SinhVien x);
void xuatSinhVien(SinhVien a[], int n);

int main()
{
        struct SinhVien sv[3] = {
               {"Tran Van A", "tranvanA@email.com","123 HV Da Nang", "CNTT", 6.80},
               {"Le Van B", "levanB@email.com","456 HV Da Nang", "CNTT", 7.80},
               {"Nguyen Thi C", "nguyenthiC@email.com","789 HV Da Nang", "CNTT", 8.80}
        };
     xuatSinhVien(sv, 3);    
    //SinhVien x = sv[0];
    //xuat(x);

    return 0;
}

void nhap(SinhVien x){
}
void nhapSinhVien(SinhVien a[], int n){
}
void xuat(SinhVien x){
    cout <<"Ho ten : " << x.hoten << endl;
    cout <<"Email : "<< x.email << endl;
    cout <<"Dia chi : " << x.diaChi << endl;
    cout <<"Chuyen nganh : " << x.chuyenNganh << endl;
    cout <<"Diem trung binh : " << x.diemTrungBinh << endl;
}
void xuatSinhVien(SinhVien a[], int n){
    for(int i = 0; i < n; i++){
        cout <<"Thong tin sinh vien thu: " << i + 1<< endl;
        xuat(a[i]);
    }
}


Bấm Run để chạy chương trình


 

Mọi thứ đều ổn, nhưng thông tin các sinh viên không tách biệt, vì vậy chúng ta sửa lại hàm xuat(SinhVien x) như sau:


void xuat(SinhVien x){
    cout <<"------------------------" << endl;
   
cout <<"Ho ten : " << x.hoten << endl;
    cout <<"Email : "<< x.email << endl;
    cout <<"Dia chi : " << x.diaChi << endl;
    cout <<"Chuyen nganh : " << x.chuyenNganh << endl;
    cout <<"Diem trung binh : " << x.diemTrungBinh << endl;

    cout <<"------------------------" << endl;
}


Bây giờ nếu chạy lại chương trình, mọi thứ đã rõ ràng hơn.


 

Phần tiếp theo

 

Phần trước

Không có nhận xét nào:

Đăng nhận xét