👉 Giải Thuật 👈

Tìm tên học sinh có điểm toán và lý lớn nhất có trong lớp

Ở đây mình sẽ hướng dẫn các bạn tìm kiếm. Với giải thuật căn bản nhất.
js_masterGiải Thuật
cau-truc-du-lieu-va-giai-thuat.jpg

Chào các bạn nhé

Trong bài viết này mình sẽ hướng dẫn bạn tìm kiếm. Tìm kiếm ở đây bây giờ là học sinh có điểm toán và điểm lý lớn nhất có trong lớp.

Trước khi bắt đầu thì việc đầu tiên chúng ta cần làm là

  1. Tạo danh sách học sinh

Ở đây mình sẽ tạo class random nó cho nhanh, Random danh sách học sinh theo số lượng. Tùy cơ ứng biến.

Và đây là mã của nó.

1class Student {
2    // Tao hoc sinh
3    constructor(name, toan, ly) {
4        this.name = name;
5        this.toan = toan;
6        this.ly = ly;
7    }
8
9    /**
10     * Phương pháp tỉnh tạo danh sách học sinh
11     * @param {number} number - Số lượng danh sách học sinh cần tạo
12     * @returns [{ name, toan, ly }, ...etc]
13     */
14    static createStudent(number) {
15        let arrStudent = [];
16        for (let i = 0; i < number; i++) {
17            arrStudent.push(
18                new this(
19                    "Hồ quang trí " + i,
20                    parseInt(Math.random() * 11), // Random điểm toán
21                    parseInt(Math.random() * 11)  // Random điểm lý
22                )
23            );
24        }
25        return arrStudent; // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc]
26    }
27}
28
29
30let arrStudent = Student.createStudent(10);
31
32// Đến đây là chúng ta có danh sách học sinh theo số lượng chúng ta truyền vào.
33// Log nó ra thử
34console.log(arrStudent); // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc]
  1. Tạo phương pháp tìm điểm học sinh
1     /**
2     * Phương pháp tỉnh tìm điểm học sinh lớn
3     * @param {array} arrStudent - Mảng các học sinh 
4     * @returns  {toan: 0, ly: 0}
5     */
6    static getDiemStudent(arrStudent) {
7        let objDiem = {
8            toan: 0,
9            ly: 0,
10        };
11        for (let student of arrStudent) {
12            let { toan, ly } = student;
13            console.log(toan, ly);
14            if (toan >= objDiem.toan && ly >= objDiem.ly) {
15                objDiem = {
16                    toan: toan,
17                    ly: ly,
18                };
19            }
20        }
21        return objDiem;
22    }
  • Đến đây code của chúng ta nó như thế này
1class Student {
2    // Tao hoc sinh
3    constructor(name, toan, ly) {
4        this.name = name;
5        this.toan = toan;
6        this.ly = ly;
7    }
8
9    /**
10     * Phương pháp tỉnh tạo danh sách học sinh
11     * @param {number} number - Số lượng danh sách học sinh cần tạo
12     * @returns [{ name, toan, ly }, ...etc]
13     */
14    static createStudent(number) {
15        let arrStudent = [];
16        for (let i = 0; i < number; i++) {
17            arrStudent.push(
18                new this(
19                    "Hồ quang trí " + i,
20                    parseInt(Math.random() * 11), // Random điểm toán
21                    parseInt(Math.random() * 11) // Random điểm lý
22                )
23            );
24        }
25        return arrStudent; // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc]
26    }
27
28    /**
29     * Phương pháp tỉnh tìm điểm học sinh lớn
30     * @param {array} arrStudent - Mảng các học sinh 
31     * @returns  {toan: 0, ly: 0}
32     */
33    static getDiemStudent(arrStudent) {
34        let objDiem = {
35            toan: 0,
36            ly: 0,
37        };
38        for (let student of arrStudent) {
39            let { toan, ly } = student;
40            console.log(toan, ly);
41            if (toan >= objDiem.toan && ly >= objDiem.ly) {
42                objDiem = {
43                    toan: toan,
44                    ly: ly,
45                };
46            }
47        }
48        return objDiem;
49    }
50}
51
52let arrStudent = Student.createStudent(10);
53
54// Đến đây là chúng ta có danh sách học sinh theo số lượng chúng ta truyền vào.
55// Log nó ra thử
56console.log(arrStudent); // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc]
57
58let objDiem = Student.getDiemStudent(arrStudent);
59
60// objDiem ở đây là ngẩu nhiên tạo điểm nhé.
61console.log(objDiem); // {toan: 9, ly: 10}
  1. Tạo phương pháp tìm tên học sinh dựa trên điểm số
1     /**
2     * Phương pháp tỉnh tìm tên học sinh
3     * @param {array} arrStudent - Mảng học sinh
4     * @param {object} objDiem - Object điểm để so sánh
5     * @returns ["Hồ quang trí 1", ...etc]
6     */
7    static getNamesHocSinh(arrStudent, objDiem) {
8        let arrNameStudents = [];
9        for (let student of arrStudent) {
10            if (student.toan === objDiem.toan && student.ly === objDiem.ly) {
11                arrNameStudents.push(student.name);
12            }
13        }
14        return arrNameStudents;
15    }

Và đây là code hoàn chỉnh của nó

1class Student {
2    // Tao hoc sinh
3    constructor(name, toan, ly) {
4        this.name = name;
5        this.toan = toan;
6        this.ly = ly;
7    }
8
9    /**
10     * Phương pháp tỉnh tạo danh sách học sinh
11     * @param {number} number - Số lượng danh sách học sinh cần tạo
12     * @returns [{ name, toan, ly }, ...etc]
13     */
14    static createStudent(number) {
15        let arrStudent = [];
16        for (let i = 0; i < number; i++) {
17            arrStudent.push(
18                new this(
19                    "Hồ quang trí " + i,
20                    parseInt(Math.random() * 11), // Random điểm toán
21                    parseInt(Math.random() * 11) // Random điểm lý
22                )
23            );
24        }
25        return arrStudent; // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc]
26    }
27
28    /**
29     * Phương pháp tỉnh tìm điểm học sinh lớn
30     * @param {array} arrStudent - Mảng các học sinh
31     * @returns  {toan: 0, ly: 0}
32     */
33    static getDiemStudent(arrStudent) {
34        let objDiem = {
35            toan: 0,
36            ly: 0,
37        };
38        for (let student of arrStudent) {
39            let { toan, ly } = student;
40            console.log(toan, ly);
41            if (toan >= objDiem.toan && ly >= objDiem.ly) {
42                objDiem = {
43                    toan: toan,
44                    ly: ly,
45                };
46            }
47        }
48        return objDiem;
49    }
50
51    /**
52     * Phương pháp tỉnh tìm tên học sinh
53     * @param {array} arrStudent - Mảng học sinh
54     * @param {object} objDiem - Object điểm để so sánh
55     * @returns ["Hồ quang trí 1", ...etc]
56     */
57    static getNamesHocSinh(arrStudent, objDiem) {
58        let arrNameStudents = [];
59        for (let student of arrStudent) {
60            if (student.toan === objDiem.toan && student.ly === objDiem.ly) {
61                arrNameStudents.push(student.name);
62            }
63        }
64        return arrNameStudents;
65    }
66}
67
68let arrStudent = Student.createStudent(100);
69
70// Đến đây là chúng ta có danh sách học sinh theo số lượng chúng ta truyền vào.
71// Log nó ra thử
72console.log(arrStudent); // [{name: "Hồ quang trí 0", toan: 0, ly: 0}, ...etc]
73
74let objDiem = Student.getDiemStudent(arrStudent);
75
76// objDiem ở đây là ngẩu nhiên tạo điểm nhé.
77console.log(objDiem); // {toan: 9, ly: 10}
78
79let nameHocSinhToanLy = Student.getNamesHocSinh(arrStudent, objDiem);
80
81// Vì mình đang dùng random nên tên cũng sẽ ngẩu nhiên nhé
82console.log(nameHocSinhToanLy); // ['Hồ quang trí 51']

Lưu ý: vì điều kiện tìm điểm lớn nhất ở đây cả toán và lý

Nên chúng có thể xảy ra 3 trường hợp.

  1. Điểm toán lớn nhất nhưng điểm lý thì chưa chắc lớn nhất
  2. Điểm lý lớn nhất nhưng điểm toán chưa chắc lớn nhất
  3. Hoặc cả điểm toán và điểm lý điều lớn nhất

Tất cả điều trên điều thuộc vào cách bạn tìm kiếm điểm số. Số lượng học sinh ít quá nên mình tăng lên 100.

Cuối cùng tùy cách bạn giải quyết. Cũng không có gì khó. Chúng ta cứ lần theo từng bước một. Ngành nào cũng vậy thôi. Lắp ghép với nhau lại cả.

Tất cả các ví dụ từ trước đến nay mình đều chưa tính đến lỗi.

Nên mọi thứ khi chạy xãy ra lỗi là đều có thể [😇😇😇😇😇😇]

  • tìm kiếm
  • học sinh
  • giải thuật
  • điểm
  • js
  • javascript

OFFJS.COM - Blog học tập giải trí - 🐲

Chia sẻ nhiều kiến thức thú vị trong lập trình cũng như cuộc sống.

Giới thiệu


Trang web này mình sẽ nói về kiến thức lập trình và cuộc sống mà các bạn mới học hay đang dự định học. Có một bước đi đầu đời vững chắc.

Hồ Quang Trí.jpg

Đi kèm với đó là những lý thuyết và các dòng code minh họa. Để các bạn dễ hình dung.

Đơn nhiên cũng không dễ dàng ngày một ngày hai mà học hết được.

Học Tập Là Một Con Đường Dài Vô Tận

Nó sẽ nuốt các bạn vô số thời gian nhưng bù lại khi đã biết thì mọi thứ thật là tuyệt.

1console.log("Hồ Quang Trí");

Nếu có ai nói bạn học lập trình trong vòng 3 đến 6 tháng thì mình xin nói thật không bao giờ có chuyện đó nhé.

Chúc các bạn thành công.

Chân trang

phone-toan-phat.png

0353210168

address-toan-phat.png

Việt Nam