C++
  • Home
  • Học lập trình
    • All
    • Học C++
    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

    Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

    học lập trình c++ thì làm được gì

    Học Lập Trình C++ Thì Làm Được Gì?

    Sự khác nhau giữa struct và class trong C++

    Sự Khác Nhau Giữa Struct Và Class Trong C++

    Sự khác nhau giữa tham chiếu và con trỏ c++

    Sự Khác Nhau Giữa Tham Chiếu Và Con Trỏ Trong C++

    • Học C++
  • Reviews
    Top 7 công cụ tạo website không cần code

    Top 7 Công Cụ Tạo Website Không Cần Code Miễn Phí

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips
No Result
View All Result
  • Home
  • Học lập trình
    • All
    • Học C++
    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Lập trình Backend là gì? Những điều Backend Developer nên biết

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

    Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

    học lập trình c++ thì làm được gì

    Học Lập Trình C++ Thì Làm Được Gì?

    Sự khác nhau giữa struct và class trong C++

    Sự Khác Nhau Giữa Struct Và Class Trong C++

    Sự khác nhau giữa tham chiếu và con trỏ c++

    Sự Khác Nhau Giữa Tham Chiếu Và Con Trỏ Trong C++

    • Học C++
  • Reviews
    Top 7 công cụ tạo website không cần code

    Top 7 Công Cụ Tạo Website Không Cần Code Miễn Phí

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

    Top 7 website luyện thuật toán chất lượng nhất năm 2023 cho IT

  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips
No Result
View All Result
C++
No Result
View All Result
Home Học lập trình Học C++

Một mảng đối tượng trong C++

admin by admin
July 6, 2023
in Học C++
0 0
0
0
SHARES
0
VIEWS
Share on FacebookShare on Twitter

Chương trình này dựa trên mảng các ví dụ đối tượng của C ++, Nếu khái niệm mảng đối tượng của bạn rõ ràng, thì bạn có thể dễ dàng hiểu nó.

Như đã đề cập trước đó, trong mảng đối tượng, mỗi phần tử của mảng là một đối tượng và đối tượng là một tập hợp các thành viên dữ liệu và thành viên hàm.

Như được đưa ra trong sơ đồ dưới đây, đối tượng của lớp “student” được khai báo là mảng đối tượng, vì vậy ở đây các đối tượng khác nhau (obj [0], obj [1], obj [2], obj [3], obj [4]) sẽ tạo ra. Sẽ lưu trữ 5 hồ sơ học sinh, có nghĩa là một yếu tố sẽ liên quan đến một học sinh.

 

Một mảng cú pháp đối tượng được đưa ra dưới đây,

cú pháp

class-name array-variable[size];

chẳng hạn

student obj[4];

Hãy thử ví dụ này ở đây,

#include<iostream> 
using namespace std;
class student
{
    char name[20],fname[20];
public:
    void getdata(void);  
    void putdata(void);
}

void student::getdata() 
{ 
   cout<<"Enter the student Rno: "; 
   cin>>no; 
   cout<<"Enter the student name: "; 
   gets(name); cout<<"Enter the student Fname: "; 
   gets(fname);
}
void student::putdata() 
 { 
   cout<<"===============================n";
   cout<<"Rollno : ";  cout<<no<<endl;
   cout<<"Name : ";    puts(name); 
   cout<<"FName : ";   puts(fname); 
   cout<<"Age : "<<ag<<endl; 
   cout<<"===============================n"; 
}

int main()
{
 student obj[2]; // for 2 students
 obj[0].getdata(); // 1st student
 obj[0].getdata(); // 2nd student

 obj[1].putdata(); // 1st student
 obj[1].putdata(); // 2nd student
 return 0;
}

Chương trình trên được đưa ra chi tiết dưới đây, trong đó nhiều nhiệm vụ đã được đưa ra –

#include<iostream>
#include<stdio>
#include<stdlib>
using namespace std;
  class student
  {
   // member by default are private
    char name[20],fname[20],sub[5][20],grade;
    int no,age,av,ag, mark[5];
    public:
// member declared as public
       void getdata(void);     // to get student record from user
       void putdata(void);   // for displaying student record
       void calculate();   //  calculate result like percentage and division     
       void result(void); // displaying result
       void sub_marks(void);   // storing subject marks
       int retno(void);    // return a specific student roll no
       void sub_name(void);    // store subject name
       void class_re(void);     // display class result
  };
void student::getdata()
{
    cout<<"Enter the student Rno: ";
    cin>>no; 
    cout<<"Enter the student name: ";
    gets(name);
    cout<<"Enter the student Fname: ";
    gets(fname);
    cout<<"Enter the student Age: ";
    cin>>ag;
    sub_name();
}
int student::retno()
{
    return (no);
}
void student::putdata()
{
   cout<<"===============================n";
   cout<<"Rollno : ";cout<<no<<endl;
   cout<<"Name : ";puts(name);
   cout<<"FName : ";puts(fname);
   cout<<"Age : "<<ag<<endl;
   cout<<"===============================n";
}
void student::sub_marks()
{
   cout<<"Enter the subject marks according to subjectn";
   cout<<"++++++++++++++++++++++++++++++++++++++++++++n";
   for(int i=0;i<5;i++)
   {
     cin>>mark[i];
   }
   calculate();
}
void student::result()
{
   cout<<"Student Rollno: "<<no<<"n";
   cout<<"tSno.ttNamettMarksn";
   cout<<"=============================================n";
   for(int i=0;i<5;i++) 
   {
     cout<<"\t"<<i;
     cout<<"\t\t"<<sub[i];
     cout<<"\t\t"<<mark[i];
     cout<<endl;
   }
   cout<<"==============================================nn";
   cout<<"______________________________________________n";
   cout<<" ";
    calculate();
    cout<<"n";
   
}
void student::class_re()
{
   cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++n";
   cout<<"Rollno: "<<no<<"tName: "<<name<<"n";
   cout<<"--------------------------------n";
   calculate();
   cout<<"n";
   cout<<"___________________________________________________n";
   cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n";
}
void student::sub_name()
{ 
   cout<<"nEnter the subject namen";
   cout<<"++++++++++++++++++++++n";
   for(int i=0;i<5;i++)
   {
      cout<<"subject: "<<i+1<<" = ";
      gets(sub[i]);
    }
   sub_marks();
}
void student::calculate()
{
   int sum=0;
   for(int i=0;i<5;i++)
   {
      sum=sum+mark[i];
   }
   av=sum/5;
   {
     cout<<"TOTAL: "<<sum<<"t"<<"PERCENTAGE: "<<av<<"%"<<"t";
     {
        if(av>=60)
         {
             cout<<"FIRSTn";
          }
          else if(av>=45)
          {
             cout<<"SECONDn";
          }
          else if(av>=33)
          {
             cout<<"THIRDn";
           }
      }
  }
}
int main()
{
   
   int x,s;  
    student ar[10]; // array of object
  do{ 
         start:
         cout<<"nnnnn";
         int j=0;
         while(j<80)
         {
             cout<<"%";
             j++;
         }
          cout<<"/t/t/t/t***OPTION MENU***n";
          cout<<"/n/t/t/t/t1.EDITn";
          cout<<"/n/t/t/t/t2.RESULTn";
          cout<<"/n/t/t/t/t3.PERSONAL INFORMATIONn";
          cout<<"/n/t/t/t/t4.SEARCH RECORDn";
          cout<<"/n/t/t/t/t5.CLASS RESULTn";
          cout<<"/n/t/t/t/t0.EXITn";
          int l=0;
          while(l<80)
          {
             cout<<"%";
             l++;
          }
           cout<<"/n/n/n/n/t/t/t/tselect a option(EDIT,first): ";
           cout<<"t/t/t/t/t/t/t";
           cin>>s;
           switch(s)
           {
            case 1:
                         cout<<"How many student's record you want to store: ";
                         cin>>x;
                         for(int i=0;i<x;i++)
                         {
                             
                             cout<<i+1<<". STUDENTn";
                             ar[i].getdata();
                             cout<<"nn";
                             cout<<"record created ";
                         }
                         break;
          case 3:
                       cout<<"display the student informationn";
                       for(int j=0;j<x;j++)
                       {
                          if(ar[j].retno()==0)
                               goto start;
                           cout<<j+1<<" STUDENTn";
                           ar[j].putdata();
                           
                           }
                           break;
            case 2:
                         cout<<"DISPLAY THE RESULTn";
                         for(int k=0;k<x;k++)
                         {
                             if(ar[k].retno()==0)goto start;
                              cout<<k<<".";
                              ar[k].result();
                              cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n";
                           }
                          
                            break;
           case 4:
                        cout<<"SEARCHn";
                         int found, true=0;
                         cout<<"Enter the Rollno to be search: ";
                         cin>>found;
                         for(int l=0;l<x;l++)
                         {
                           if(ar[l].retno()==found)
                           {
                               true=1;
                              cout<<"PERSONAL INFORMATIONn";
                             ar[l].putdata();
                              cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n";
                              cout<<"RESULT INFORMATIONn";
                              ar[l].result();;goto start;}
                            }
                          if(!true){
                           cout<<"record not found";
                          
                           goto start; 
                         }
                        break;
             case 5:
                           for(int a=0;a<x;a++)
                          {
                             if(ar[a].retno()==0)goto start;
                             ar[a].class_re();
                              
                           }
                          
                           break;
             case 0:   exit(0);
                           break;
              default: cout<<"/t/t/t/t/t/t/tInvalid choicen";
                          
                          goto start;
           }
   }while(s!=0);
return 0;
}

RA

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            ***OPTION MENU***
                  1.EDIT
                  2.RESULT
                  3.PERSONAL INFORMATION
                  4.SEARCH RECORD
                  5.CLASS RESULT
                  0.EXIT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Lời giải thích

Bởi vì, xử lý tệp không được sử dụng trong chương trình, sau khi chương trình chấm dứt, nó sẽ xóa thông tin do người dùng cung cấp. Tuy nhiên, trong quá trình thực hiện, chúng ta có thể thực hiện nhiều tác vụ.

Ví dụ, trong một mảng đối tượng, chúng ta khai báo một đối tượng là một kiểu mảng của đối tượng, nghĩa là kích thước của một mảng càng cao, càng nhiều đối tượng của lớp sẽ được tạo, chẳng hạn như,

student obj[4];

Nó có 5 đối tượng được tạo ra để nó có thể lưu trữ 5 hồ sơ học sinh. Nhưng trong quá trình thực hiện, chúng tôi có thể lưu trữ ít hơn 5 sinh viên trong đó và đồng thời chúng tôi không phải gọi cùng một hàm nhiều lần để lưu trữ 5 hồ sơ học sinh. như-

obj[index-value].getdata();

trong đó giá trị chỉ mục tự động tăng

Điều này sẽ tạo ra 4 đối tượng sẽ lưu trữ hồ sơ của 4 học sinh khác nhau (trong chương trình 10 đối tượng sẽ được khai báo theo sinh viên obj [10] nhưng chúng tôi chỉ sử dụng 4 đối tượng ở đây vì vậy loại bỏ lãng phí bộ nhớ này sử dụng phân bổ bộ nhớ động).

Khi index-value của mảng thay đổi trong quá trình thực thi, hàm getdata() gọi hàm này sẽ lấy đầu vào từ -user.

for(int i = 0; i<student; i++)
  {
    obj[i].getdata();
  }

Một bản ghi của một sinh viên mới sẽ được lưu trữ ngay khi giá trị của biến i tăng lên. Các chức năng khác của sẽ được gọi theo cách tương tự-

obj [i]. putdata(); 
obj [i] .result ();

cũng sẽ được gọi.

Điều gì hạnh phúc khi nếu mảng đối tượng sẽ không được sử dụng ở đây

student x, b, z;

Nhưng bằng cách này, chúng tôi sẽ chỉ có thể lưu trữ hồ sơ của 3 học sinh (mỗi đối tượng lưu trữ hồ sơ của mỗi học sinh) và ngoài ra câu lệnh bổ sung sẽ tăng lên trong chương trình. Tức là để lưu trữ mỗi hồ sơ học sinh, chúng ta phải gọi cùng một hàm nhiều lần với các đối tượng khác nhau. Như

x.getdata(); // for 1st student
y.getdata(); // for 2nd student
z.getdata(); // for 3rd student

Khi chương trình này được thực thi, chúng ta sẽ bắt buộc phải lưu trữ hồ sơ 3 học sinh, tức là trong quá trình thực hiện chúng ta không thể lưu trữ ít hơn 3 sinh viên trong khi điều này không xảy ra khi chúng ta sử dụng mảng đối tượng.

Bạn có biết

Lớp là phiên bản cập nhật của cấu trúc, vì vậy khái niệm mảng đối tượng sẽ thực hiện tương tự với cấu trúc.

Nếu các giá trị của tất cả các phần tử trong mảng đối tượng không được lấy, thì sẽ có mất bộ nhớ không được coi là thực hành lập trình tốt. Vì vậy, để khắc phục vấn đề này, phân bổ bộ nhớ động sẽ được sử dụng . C++ phân bổ bộ nhớ động trong mảng.

Dưới đây là một ví dụ khác về một mảng đối tượng, Hệ thống quản lý ngân hàng

Hệ thống quản lý sinh viên

Các dự án liên quan trong C++ là:

  • Hệ thống quản lý ngân hàng trong C++
  • In bảng điểm học sinh trong C++
  • Hệ thống quản lý thanh toán trong C++
  • Hệ thống quản lý khách sạn bằng C++
Previous Post

Xử lý tệp tin trong C++

Next Post

Chuỗi kí tự trong C++

admin

admin

Next Post

Chuỗi kí tự trong C++

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Trending
  • Comments
  • Latest
cách code hình trái tim bằng c++

Cách code hình trái tim giống với nhân vật Thủ Khoa Lý

December 7, 2023
hướng dẫn cài đặt visual studio code lập trình c++ chi tiết

Cài Đặt Visual Studio Code Lập Trình C++ Chi Tiết Đơn Giản 2024

October 3, 2023
Office 2019 full crack

Cách Crack Office 2019 Đơn Giản, Dễ Hiểu Thành Công 100%

September 19, 2023
Top 10 ứng dụng mua hàng Trung Quốc uy tín nhất hiện nay

Top 10 ứng dụng mua hàng Trung Quốc uy tín nhất hiện nay

January 18, 2025

Các lớp lưu trữ trong cpp

0

Câu lệnh if else trong cpp

0

Chức năng của switch trong cpp

0

Mảng đối tượng trong C++

0
Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

October 23, 2023
Top 7 website bán túi xách nữ chính hãng, uy tín nhất

Top 7 website bán túi xách nữ chính hãng, uy tín nhất

October 12, 2023
Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

October 7, 2023
Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

October 5, 2023

Recommended

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

Quick Sort – Thuật toán sắp xếp đột phá trong thế kỉ XX

October 23, 2023
Top 7 website bán túi xách nữ chính hãng, uy tín nhất

Top 7 website bán túi xách nữ chính hãng, uy tín nhất

October 12, 2023
Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

Hướng dẫn Cài Đặt Và Sử Dụng AutoCAD 2024 Full Crack 

October 7, 2023
Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

Hướng Dẫn Tải Và Sử Dụng GS Auto Clicker 3.1.2 Full Crack

October 5, 2023
Hướng dẫn học C++

© 2023 Hướng dẫn học C++ - Website thuộc bản quyền của Hướng dẫn học C++.

Liên kết

  • Home
  • Học lập trình
  • Reviews
  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn

Theo dõi chúng tôi

No Result
View All Result
  • Home
  • Học lập trình
    • Học C++
  • Reviews
  • Phần mềm PC
  • App/Ứng dụng
  • Game
  • Hướng dẫn
    • PC
    • Mobile Tips

© 2023 Hướng dẫn học C++ - Website thuộc bản quyền của Hướng dẫn học C++.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In