1. Hãy dành vài giây Đăng nhập hoặc Đăng ký tài khoản để truy cập và sử dụng TBit hiệu quả nhất.
    Ẩn thông báo
  2. Bạn hãy like trang Facebook của TBit để nhận được tin tức công nghệ nhanh nhất từ chúng tôi.
    Ẩn thông báo

[C/C++] - Bài 10: Dữ liệu cấu trúc (struct)

Thảo luận trong 'Lập trình C/C++' bắt đầu bởi Admin, 21/4/15.

0/5, 0 phiếu

    1. Admin Founder

      * TÓM TẮT LÝ THUYẾT

      1. Khái niệm về dữ liệu cấu trúc (struct)
      Một cấu trúc dữ liệu là một tập hợp của những kiểu dữ liệu khác nhau được gộp lại với một cái tên duy nhất.

      Ví dụ: Nếu coi sinh viên là một biến thì biến sinh viên chứa nhiều kiểu dữ liệu khác nhau như:
      - Họ tên: char
      - Tuổi: int
      - Địa chỉ: char
      - Điểm thi: float,...
      Như vậy, sinh viên có thể coi như một biến cấu trúc.

      2. Khai báo struct
      // Định nghĩa cấu trúc
      // Khai báo biến cấu trúc
      Ví dụ:
      Mã (C++):
      1.  
      2. // Định nghĩa cấu trúc SV
      3.    struct SV{
      4.      char hoTen[30];
      5.      char diaChi[50];
      6.      int tuoi;
      7.      float diem;  
      8.    };
      9.  
      10.    // Khai báo các biến VS
      11.    SV a,b; //a,b là biến cấu trúc SV
      12.    SV dhTin[4]; //dhTin là biến mảng cấu trúc SV
      13.  
      3. Sử dụng struct
      - Mỗi trường trong cấu trúc như một biến thông thường.
      - Khi sử dụng các trường ta dùng toán tử "."

      Ví dụ:
      // sử dụng biến điểm của sinh viên a
      a.diem;


      ** VÍ DỤ
      ---------------------------------

      Ví dụ 1:
      + Yêu cầu: Viết chương trình thực hiện
      - Nhập vào tạo độ 3 điểm A,B,C trong không gian.
      - Tính độ dài 3 đoạn thẳng AB,AC,BC.
      - Kiểm tra xem A,B,C có thẳng hàng không?
      + Code:
      Mã (C++):
      1. #include <iostream>
      2. #include <conio.h>
      3. #include <math.h>
      4.  
      5. using namespace std;
      6.  
      7. int main() {
      8.   // truc TaoDo
      9.    struct ToaDo{
      10.      float x, y, z;
      11.    };
      12.  
      13.   // khai bao bien ToaDo
      14.    ToaDo A, B, C;
      15.    // Nhap toa do 3 diem
      16.    cout<<"\n Nhap toa do 3 diem: ";
      17.    cout<<"\n A: ";
      18.    cin>>A.x>>A.y>>A.z;
      19.   cout<<"\n B: ";
      20.    cin>>B.x>>B.y>>B.z;
      21.    cout<<"\n C: ";
      22.    cin>>C.x>>C.y>>C.z;     
      23.   // Tinh do dai doan thang
      24.    float d1; // AB
      25.    float d2; // AC
      26.    float d3; // BC
      27.    d1=sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)+(A.z-B.z)*(A.z-B.z));
      28.    d2=sqrt((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y)+(A.z-C.z)*(A.z-C.z));
      29.    d3=sqrt((C.x-B.x)*(C.x-B.x)+(C.y-B.y)*(C.y-B.y)+(C.z-B.z)*(C.z-B.z));
      30.   // In do dai 3 doan thang
      31.   cout<<"\n Do dai 3 doan thang: \n";
      32.   cout<<"\n AB : "<<d1;
      33.   cout<<"\n AC : "<<d2;
      34.   cout<<"\n BC : "<<d3;
      35.  
      36.   // Kiem tra tinh thang hang
      37.    if(d1+d2==d3||d1+d3==d2||d2+d3==d1)  
      38.       cout<<"\n 3 diem A,B,C thang hang";
      39.    else  
      40.        cout<<"\n 3 diem A,B,C khong thang hang";       
      41.   return 0;
      42. }
      Ví dụ 2:
      + Yêu cầu: Viết các hàm thực hiện
      - Nhập thông tin SV gồm: họ tên, địa chỉ, tuổi, điểm toán, lý, hóa
      - Tính điểm tổng kết
      - In thông tin sinh viên

      + Code:
      /* Chương trình này sử dụng hàm (phần hàm sẽ được trình bày ở bài sau) */
      Mã (C++):
      1. #include<iostream>
      2. #include<stdio.h>
      3. #include<conio.h>
      4. #include<string.h>
      5.  
      6. using namespace std;
      7.  
      8. // Dinh nghia cau truc SV
      9. struct SV{
      10. char ht[30],dc[50];
      11. int tuoi;
      12. float dT,dL, dH;
      13. };
      14. // Khai bao bien cau truc
      15. SV a;
      16. // Ham nhap thong tin
      17. void NhapTT(){
      18.   // xu ly bo dem cho viec nhap mot xau
      19.   fflush(stdin);
      20.   cout<<"\n Nhap Sinh vien: ";
      21.   cout<<"\n - Ho ten: ";
      22.   gets(a.ht); // nhap mot xau
      23.   cout<<"\n - Dia chi: ";
      24.   gets(a.dc);
      25.   cout<<"\n - Tuoi: ";
      26.   cin>>a.tuoi;
      27.   cout<<"\n - Diem toan: ";
      28.   cin>>a.dT;
      29.   cout<<"\n - Diem ly: ";
      30.   cin>>a.dL;
      31.   cout<<"\n - Diem hoa: "; cin>>a.dH;
      32. }
      33.  
      34. // Ham Tinh diem
      35. float TinhDiem(){
      36. return (a.dT+a.dL+a.dH)/3;
      37. }
      38.  
      39. // Ham In thong tin
      40. void InTT(){
      41. // tim xep loai
      42. char xepLoai[10];
      43. float dtk=TinhDiem();
      44. // Xep loai sinh vien
      45. if (dtk<5)
      46.    strcpy(xepLoai,"Truot"); // copy xau
      47. else
      48.    if (dtk<6)  
      49.      strcpy(xepLoai,"TB");
      50.      else  
      51.        if (dtk<7)    
      52.          strcpy(xepLoai,"TBK");
      53.      else
      54.        if (dtk<8)    
      55.          strcpy(xepLoai,"Kha");  
      56.        else  
      57.          if (dtk<9)    
      58.            strcpy(xepLoai,"Gioi");   
      59.          else if (dtk<=10)     
      60.            strcpy(xepLoai,"XS");  
      61.        else  
      62.          strcpy(xepLoai,"");
      63. // in thong tin sinh vien
      64. cout<<"\n In sinh vien: ";
      65. cout<<"\n - Ho ten: "<<a.ht;
      66. cout<<"\n - Dia chi: "<<a.dc;
      67. cout<<"\n - Tuoi: "<<a.tuoi;
      68. cout<<"\n - Diem tong ket: "<<dtk;
      69. cout<<"\n - Xep loai: "<<xepLoai;
      70. }
      71.  
      72. // Ham main
      73. int main(){
      74.   NhapTT();
      75.   InTT();
      76.   getch() ;
      77.   return 0;
      78. }
      Ví dụ 3:
      + Yêu cầu: Viế chương trình thực hiện
      1. Nhập vào thông tin của một nhân viên IT:
      - Ho ten
      - Tuoi
      - Vi tri lam viec
      - He so luong
      - So nam cong tac
      2. In thông tin của nhân viên vừa nhập
      3. Tính lương cho nhân viên
      luong = he so luong * luong co ban + phu cap.
      Trong đó:
      phụ cấp = 1.2 lương cơ bản nếu số năm công tác > 3,
      ngược lại phụ cấp băng 1 lương cơ bản.
      4. Tính thuế thu nhập mà nhân viên phải trả.
      Nếu lương > 5.000.000 thì thuế = 10% lương, ngược lại thuế = 0.

      + Code:
      /* Lưu ý:
      Chương trình được viết bằng ngôn ngữ C
      Các bạn hoàn toàn có thể chuyển đổi sang C++
      Đổi printf -> cout; scanf -> cin.
      */
      Mã (C++):
      1. #include<stdio.h>
      2. #include<conio.h>
      3. #include<string.h>
      4. // khai bao hang LCB
      5. #define LCB 1050000
      6. using namespace std;
      7. // Dinh nghia struc NV
      8. struct NV{
      9.   char hoTen[30], viTriLV[30];
      10.   int tuoi, soNamCT;
      11.   float heSoLuong;
      12. };
      13. // khai bao bien
      14. NV t;
      15. // Nhap thong tin nhan vien
      16. void NhapTT(){
      17. printf("\n Nhap nhan vien: \n");
      18. printf("\n Ho ten: ");
      19. fflush(stdin);
      20. gets(t.hoTen);
      21. printf("\n Vi tri lam viec: ");
      22. fflush(stdin);
      23. gets(t.viTriLV);
      24. do{
      25.    printf("\n Tuoi nhan vien: ");
      26.    scanf("%d",&t.tuoi);
      27.    if (t.tuoi<18||t.tuoi>65)
      28.        printf("\n Tuoi khong hop le, nhap lai tuoi");
      29.   } while(t.tuoi<18||t.tuoi>65);
      30. do{
      31.    printf("\n So nam cong tac: ");
      32.    scanf("%d",&t.soNamCT);
      33.    if (t.soNamCT<0|| t.soNamCT>t.tuoi-18)
      34.        printf("\n So nam cong tac khong hop le, nhap lai nam cong tac");
      35.   } while (t.soNamCT<0|| t.soNamCT>t.tuoi-18);
      36. do{
      37.    printf("\n He so luong: ");
      38.    scanf("%f",&t.heSoLuong);
      39.    if (t.heSoLuong<=0||t.heSoLuong>15)
      40.        printf("\n He so luong khong hop le, nhap lai he so luong.");
      41.   } while (t.heSoLuong<=0||t.heSoLuong>15);
      42. }
      43.  
      44. // In thong tin nhan vien
      45. void InTT(){
      46.    printf("\n IN THONG TIN NHAN VIEN: \n");
      47.    printf("\n - Ho ten: %s",t.hoTen);
      48.    printf("\n - Vi tri lam viec: %s",t.viTriLV);
      49.    printf("\n - Tuoi: %d",t.tuoi);
      50.    printf("\n - So nam cong tac: %d",t.soNamCT);
      51.    printf("\n - He so luong: %f",t.heSoLuong);
      52. }
      53.  
      54. // Tinh luong
      55. float TinhLuong(){
      56.    float phuCap;
      57.    if(t.soNamCT>=3)
      58.      phuCap=1.2*LCB;
      59.    else
      60.      phuCap=LCB;
      61.  
      62.    return (t.heSoLuong*LCB+phuCap);
      63. }
      64.  
      65. // Tinh thue thu nhap
      66. float ThueTN(){
      67.    float thue=0;
      68.    if (TinhLuong()>=5000000)
      69.      thue=0.1*TinhLuong();
      70.    return thue;
      71. }
      72.  
      73. // ham main
      74. int main(){
      75.    NhapTT();
      76.    InTT();
      77.    printf("\n Luong nhan vien: %f",TinhLuong() );
      78.    printf("\n Thue thu nhap: %f",ThueTN() );
      79.      getch();
      80.    return 0;
      81. }
       

      Các file đính kèm:

      Đang tải...
Từ khóa:

Chia sẻ trang này

Đang tải...