Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: CTDL & Giải thuật dùng để làm gì ?

  1. #1
    Ngày gia nhập
    08 2017
    Bài viết
    3,355

    Mặc định CTDL & Giải thuật dùng để làm gì ?

    Đọc topic
    code bị lỗi không chạy được (...)
    làm gợi lại khúc mắc bấy lâu nay : CTDL & Giải thuật dùng để làm gì ?

    Bạn có thể giúp tôi, những người như tôi ? Tôi đã tốn nhiều thời gian - nhiều năm - học nó mà chưa có dịp sử dụng, chẳng biết dụng vào chỗ nào.

    CTDL & Giải thuật dùng để làm gì !
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    904

    Các phân tích của Monre về giải thuật là rất rõ ràng có cả đệ quy lẫn vòng lặp. Có ý nhỏ muốn trao đổi thêm.
    Theo như tôi thấy, cách dùng mảng trong main của bạn hơi gượng ép, dù MinGW hay Embarcadero chấp nhận khai báo mảng với số phần tử là biến, nhưng để phổ thông hơn sao bạn không dùng con trỏ hay <vector> nhỉ, mất thêm dòng lệnh nhưng rõ ràng hơn.
    C++ Code:
    1. int main(){
    2.     int i = 0, n;  
    3.     cout << "Nhap so phan tu: "; cin>> n;
    4.     // int a[n]; //biên dịch với MinGW hoặc Embarcadero
    5.     int * a = new int[n]; // mã theo C++
    6.  
    7.     nhap(n, a);
    8.     selectionsort(a, n, i);
    9.     xuat(n, a);
    10.     //
    11.     delete[] a; // Dùng xong
    12.     return 0;
    13. }

  3. #3
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    453

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Tham khảo:
    http://diendan.congdongcviet.com/threads/t407322::nho-cac-su-huynh-chi-em-cho-sai-bai-selection-sort-de-quy.cpp

    C++ Code:
    1. #define used_HQ
    2.  
    3. #include<iostream>
    4. using namespace std;
    5.  
    6. void nhap( int n, int a[]){
    7.     for(int i = 0; i < n; i++){
    8.         cout<< "Nhap phan tu thu ["<< i <<"]: "; cin>> a[i];
    9.     }
    10. }
    11. void xuat( int n, int a[]){
    12.     for(int i = 0; i < n; i++)
    13.         cout<< a[i]<<" ";
    14.     cout<< endl;
    15. }
    16.  
    17. void selectionsort( int a[], int n, int i){
    18. #ifdef used_HQ 
    19.     //cout<< "Hoi quy!\n";
    20.     if(i == n - 1) return;
    21.    
    22.     int min = a[i]; //min
    23.     for(int j = i + 1; j < n; j++){
    24.         if(a[j] < min){
    25.             min = a[j];
    26.             swap(a[j], a[i]);
    27.         }
    28.     }          
    29.     selectionsort(a, n, i + 1);
    30. #else
    31.     //cout<< "Loop - for!\n";
    32.     for (i = 0; i < n - 1; i++) {
    33.         int min = a[i]; //min
    34.         for (int j = i + 1; j < n; j++)
    35.             if (a[j] < min) {
    36.                 min = a[j];            
    37.                 swap(a[j], a[i]);
    38.             }
    39.     }                    
    40. #endif
    41. }
    42.  
    43. int main(){
    44.     int i = 0, n;  
    45.     cout << "Nhap so phan tu: "; cin>> n;
    46.     int a[n]; //biên dịch với MinGW hoặc Embarcadero
    47.  
    48.     nhap(n, a);
    49.     selectionsort(a, n, i);
    50.     xuat(n, a);
    51.     //
    52.     return 0;
    53. }

    Xem thêm - có tiếng Việt:
    https://en.wikipedia.org/wiki/Selection_sort
    code trên chưa tối ưu, với mỗi i nó swap tới mấy lần trong khi chỉ cần swap 1 lần

  4. #4
    Ngày gia nhập
    08 2017
    Bài viết
    3,355

    Preprocessor directives

    http://www.cplusplus.com/doc/tutorial/preprocessor/
    https://docs.microsoft.com/en-us/cpp/preprocessor/preprocessor-directives?view=vs-2019

  5. #5
    Ngày gia nhập
    08 2017
    Bài viết
    3,355

    Tôi chưa là người tốt; mỗi mong con cháu hơn người - như những bậc trên mong ước cho tôi.

  6. #6
    Ngày gia nhập
    11 2014
    Bài viết
    85

    Mặc định CTDL & Giải thuật dùng để làm gì ?

    CTDL & Giải thuật dùng để làm gì?
    Để trả lời cho câu hỏi này của Monre, tôi xin phép được hỏi lại bạn vài câu:
    - Bạn dùng CTDL nào để lưu trữ 1 cuốn từ điển Anh - Việt?
    - Bạn dùng CTDL nào để lưu trữ danh sách users (ID, name, pass...)?
    - Bạn dùng CTDL nào để lưu trữ cây thư mục Windows?
    ....
    Rõ ràng đối với mỗi trường hợp trong bạn sẽ chọn 1 CTDL khác nhau. Việc chọn đúng CTDL để lưu trữ nó sẽ ảnh hưởng đến giải thuật của bạn.
    Một hệ thống tốt, hay một phần mềm tốt không phải chỉ chạy được, không bị lỗi. Mà còn phải đáp ứng rất nhiều tiêu chí khác như tộc độ truy xuất
    dữ liệu, độ ổn định, dung lượng........
    Cho nên việc chọn đúng CTDL và giải thuật hợp lý sẽ giúp phần mềm bạn viết ra tối ưu hóa và hoàn chỉnh rất nhiều.

    Ví dụ: Nếu tôi là 1 thằng mới ra trường thì tôi sẽ chọn mảng để lưu danh sách users.
    Nhưng nếu tôi là người có nhiều năm kinh nghiệm làm việc thì tôi sẽ chọn linked list.
    Ở đây tôi không đi giải thích tại sao tôi lại chọn array mà chọn là linked list. Mà tôi chỉ tập trung giải thích để bạn
    hiểu được việc bạn chọn CTDL nó sẽ quyết định đến kiến trúc phần mềm của bạn. Giống một kỹ sư xây dựng lành nghề họ sẽ biết
    chọn những loại vật liệu gì để chon ngôi nhà được bền, đẹp. Cũng vậy 1 thằng kỹ sư phần mềm cũng phải biết chọn cho mình
    CTDL và giải thuật hợp lý để hoàn thiện sản phẩm phần mềm của mình.
    Nếu cuộc sống chỉ đơn giản là chỉ tính s = 1 + 2; thì không có gì để nói
    Nhưng khi va chạm vào thực tế thì rất nhiều dữ liệu, được tổ chức lưu trữ rất phức tạp
    Đòi hỏi người lập trình phải vận dụng những kiến thức mình đã học để vào sản phẩm của mình
    Chính vì vậy mà bộ môn CTDL và giải thuật ra đời

    Tôi chỉ chia sẽ 1 phần nhỏ những gì tôi biết. Hy vọng sẽ phần nào giải đáp thắc mắc của bạn
    Học lập trình bắt đầu từ đâu ?

    https://www.youtube.com/HWStudio2019

  7. #7
    Ngày gia nhập
    08 2017
    Bài viết
    3,355

    Cấu trúc dữ liệu + Giải thuật = Chương trình, được xuất bản từ năm 1976.

    Algorithms + Data Structures = Programs[1] is a 1976 book written by Niklaus Wirth covering some of the fundamental topics of computer programming, particularly that algorithms and data structures are inherently related. For example, if one has a sorted list one will use a search algorithm optimal for sorted lists.

    The book was one of the most influential computer science books of the time and, like Wirth's other work, was extensively used in education.


    https://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_%3D_Programs

  8. #8
    Ngày gia nhập
    08 2017
    Bài viết
    3,355

    C++ Program to Check Whether Number is Even or Odd
    + Check Whether Number is Even or Odd using Modulus
    + Check Whether Number is Even or Odd Using Bitwise AND

    https://www.tutorialspoint.com/cplusplus-program-to-check-whether-number-is-even-or-odd
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn