Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Lập trình C++ | Một số kĩ thuật cơ bản.

  1. #1
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mặc định Lập trình C++ | Một số kĩ thuật cơ bản.

    * Câu hỏi : làm sao để set và reset trạng thái của kiểu ouput thông qua hàm flags ?

    answer :
    C++ Code:
    1. #include <iostream>
    2.  
    3. int main(){
    4.   int integer_value = 1000;
    5.   double double_value = 0.334343;
    6.  
    7.   //display flags value in original format
    8.   std::cout << "-- Original format --\n";
    9.   std::cout << "The value of flags variable is : " << std::cout.flags() << "\n";
    10.   std::cout << "integer value " << integer_value << "\n";
    11.   std::cout << "double value " << double_value << "\n";  
    12.  
    13.   //use cout flags function to save original format
    14.   std::ios_base::fmtflags original_format = std::cout.flags();
    15.   //change format
    16.   std::cout << std::showbase << std::oct << std::scientific << "\n";
    17.  
    18.   std::cout << "-- New format --\n";
    19.   std::cout << "The value of flags variable is : " << std::cout.flags() << "\n";
    20.   std::cout << "integer value " << integer_value << "\n";
    21.   std::cout << "double value " << double_value << "\n";  
    22.  
    23.   //now, restore format
    24.   std::cout.flags(original_format);
    25.   std::cout << "-- Restore --\n";
    26.   std::cout << "The value of flags variable is : " << std::cout.flags() << "\n";
    27.   std::cout << "integer value " << integer_value << "\n";
    28.   std::cout << "double value " << double_value << "\n";  
    29.  
    30.   return 0;
    31. }

    Output :
    Code:
    -- Original format --
    The value of flags variable is : 4098
    integer value 1000
    double value 0.334343
    
    -- New format --
    The value of flags variable is : 011500
    integer value 01750
    double value 3.343430e-01
    -- Restore --
    The value of flags variable is : 4098
    integer value 1000
    double value 0.334343
    * Câu hỏi : làm sao in ra kết quả của việc cấp phát lỗi ?
    answer :
    C++ Code:
    1.      #include <iostream>
    2.  
    3. int main(){
    4.   double* alloc_arry[5];
    5.   for(int x = 0; x < 5; ++x){
    6.     alloc_arry[x] = new double[5000000];
    7.     if(alloc_arry[x] == 0){
    8.       std::cout << "Fail allocating memory...\n" << x << "\n";
    9.       break;
    10.     }
    11.     else{
    12.       std::cout << "Successfully allocating new memory for alloc_arry"
    13.                    << "at " << x << "\n";
    14.     }
    15.     delete[] alloc_arry[x];
    16.   }
    17.  
    18.   return 0;
    19. }



    Output :
    Code:
    Successfully allocating new memory for alloc_arryat 0
    Successfully allocating new memory for alloc_arryat 1
    Successfully allocating new memory for alloc_arryat 2
    Successfully allocating new memory for alloc_arryat 3
    Successfully allocating new memory for alloc_arryat 4
    * Câu hỏi : làm sao catch fail allocate memory ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <new>
    3.  
    4. int main(){
    5.   double* alloc_arry[5];
    6.   try{
    7.     for(int x = 0; x < 5; ++x){
    8.       alloc_arry[x] = new double[99999999];
    9.       std::cout << "Allocating memory...\n" << x << "\n";
    10.     }
    11.   }
    12.   //handle exception
    13.   catch(std::bad_alloc &memory_allocation_exception){
    14.       std::cout << "Exception occurs !!"
    15.                    << memory_allocation_exception.what() << "\n";
    16.   }
    17.  
    18.   return 0;
    19. }



    Output
    Code:
    Allocating memory...
    0
    Allocating memory...
    1
    Allocating memory...
    2
    Exception occurs !!std::bad_alloc

    * Câu hỏi : làm sao để set new handler cho fail allocating memory.

    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <new>
    3.  
    4. void custom_new_handler(){
    5.   std::cerr << "handle, abort...!";
    6.   abort();
    7. }
    8.  
    9. int main(){
    10.   double* alloc_arry[5];
    11.   std::set_new_handler(custom_new_handler);
    12.   for(int x = 0; x < 5; ++x){
    13.       alloc_arry[x] = new double[99999999];
    14.       std::cout << "Allocating memory...\n" << x << "\n";
    15.   }
    16.  
    17.   return 0;
    18. }


    Output :

    Code:
    Allocating memory...
    0
    Allocating memory...
    1
    Allocating memory...
    2
    handle, abort...!
    Đã được chỉnh sửa lần cuối bởi rox_rook : 05-04-2008 lúc 06:17 PM.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    * Câu hỏi : làm sao dùng auto_ptr để allocate memory ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <memory>
    3.  
    4. class Integer{
    5. public :
    6.   Integer(int x = 0):value(x){
    7.     std::cout << "construct an integer(..) " << value << "\n";
    8.   }
    9.   ~Integer(){
    10.     std::cout << "Destructor an integer..." << value << "\n";
    11.   }
    12.   void set(int x){
    13.     value = x;
    14.   }
    15.   int get() const{
    16.     return value;
    17.   }
    18. private :
    19.   int value;
    20. };
    21.  
    22. int main(){
    23.   std::auto_ptr<Integer> super_pointer(new Integer(99));
    24.   super_pointer->set(777);
    25.   std::cout << "Integer now : " << (*super_pointer).get() << '\n';
    26.   return 0;
    27. }
    Ouput :
    Code:
    construct an integer(..) 99
    Integer now : 777
    Destructor an integer...777
    * Câu hỏi : làm sao convert to C-style string ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3.  
    4. int main(){
    5.   std::string first("STRINGS");
    6.   const char* fir_ptr = 0;
    7.   int m_length = first.length();
    8.   char* sec_ptr = new char[m_length + 1];
    9.  
    10.   first.copy(sec_ptr, m_length, 0);
    11.   sec_ptr[m_length] = '\0';
    12.  
    13.   std::cout << "string first is = " << first
    14.               << "\n -> convert to C-style " << first.c_str();
    15.   std::cout << "\n";
    16.   fir_ptr = first.data();
    17.  
    18.   for(int x = 0; x < m_length; ++x){
    19.     std::cout << *(fir_ptr + x);
    20.   }  
    21.   std::cout << "second pointer = " << sec_ptr << "\n";
    22.   delete[] sec_ptr;
    23.  
    24.   return 0;
    25. }
    Output
    Code:
    string first is = STRINGS
     -> convert to C-style STRINGS
    STRINGSsecond pointer = STRINGS
    * Câu hỏi, làm sao dùng các algorithm đơn giản của STL : binary_seach, find, find_if ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <algorithm>
    3. #include <vector>
    4.  
    5. template <typename C>
    6. inline void print_container(C& container, const char* con_name = ""){
    7.   typename C::const_iterator iter;
    8.   std::cout << con_name << "\n";
    9.   for(iter = container.begin(); iter != container.end(); ++iter){
    10.     std::cout << *iter << " - ";
    11.   }
    12.   std::cout << "\n";
    13. }
    14.  
    15. bool greater_than_10(int value){
    16.   return value > 10;
    17. }
    18.  
    19. int main(){
    20.   const int SIZE = 10;
    21.   int arr[SIZE] = {10,2,17,5,16,8,13,11,20,7};
    22.  
    23.   std::vector<int> vect(arr, arr + SIZE);
    24.   std::cout << "vector vect contains : ";
    25.   print_container(vect, "vector");
    26.  
    27.   std::vector<int>::iterator location;
    28.   location = std::find(vect.begin(), vect.end(), 16);
    29.  
    30.   if(location != vect.end())
    31.     std::cout << "\n Found 16 at location " << (location - vect.begin()) << "\n";
    32.   else
    33.     std::cout << "\n 16 not found.\n";
    34.  
    35.  
    36.   location = std::find(vect.begin(), vect.end(), 100);
    37.   if(location != vect.end())
    38.     std::cout << "\nFound 100 at location " << (location - vect.begin()) << "\n";
    39.   else
    40.     std::cout << "\n 100 not found ";
    41.    
    42.   location = std::find_if(vect.begin(), vect.end(), greater_than_10);
    43.   if(location != vect.end()){
    44.     std::cout << "\nThe first value greater than 10 is : ";
    45.     std::cout << *location << " found at location " << (location - vect.begin());
    46.   }
    47.   else{
    48.     std::cout << "No values greater than 10 were found.";
    49.   }
    50.  
    51.   std::sort(vect.begin(), vect.end());
    52.   std::cout << "\nAfter sort :\n";
    53.   print_container(vect, "vector");
    54.  
    55.   if(std::binary_search(vect.begin(), vect.end(), 13))
    56.     std::cout << "\n 13 was found in vect.\n";
    57.   else
    58.     std::cout << "\n 13 was not found in vect.\n";
    59.    
    60.    if(std::binary_search(vect.begin(), vect.end(), 100))
    61.     std::cout << "\n 100 was found in vect.\n";
    62.   else
    63.     std::cout << "\n 100 was not found in vect.\n";
    64.    
    65.   return 0;
    66. }

    Output :
    Code:
    vector vect contains : vector
    10 - 2 - 17 - 5 - 16 - 8 - 13 - 11 - 20 - 7 - 
    
     Found 16 at location 4
    
     100 not found 
    The first value greater than 10 is : 17 found at location 2After sort :
    vector
    2 - 5 - 7 - 8 - 10 - 11 - 13 - 16 - 17 - 20 - 
    
     13 was found in vect.
    
     100 was not found in vect.
    Đã được chỉnh sửa lần cuối bởi rox_rook : 05-04-2008 lúc 08:38 AM.

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    * Câu hỏi : Làm sao dùng function object in ra các phần tử trong 1 container của STL ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <vector>
    3. #include <algorithm>
    4.  
    5. class print_single_element{
    6. public :
    7.   void operator()(int elem) const{
    8.     std::cout << elem << " ";
    9.   }
    10. };
    11.  
    12. int main(){
    13.   std::vector<int> vect;
    14.   for(int x = 0; x < 10; ++x){
    15.     vect.push_back(x);
    16.   }
    17.  
    18.   for_each(vect.begin(), vect.end(), print_single_element());
    19.  
    20.   return 0;
    21. }
    Output :
    Code:
    0 1 2 3 4 5 6 7 8 9
    *Câu hỏi : Làm sao dùng function object để tìm trong 1 dãy xem coi số nào là số nguyên tố ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <list>
    3. #include <algorithm>
    4. #include <cstdlib>
    5. #include <cmath>
    6.  
    7. bool is_prime(int num){
    8.     if(num <= 1) return false;
    9.     if (num == 2 || num == 3) return true;
    10.     if (num % 2 == 0 || num % 3 == 0) return 0;
    11.  
    12.     int variable = 5,
    13.         factor = 2,
    14.         _limitFactor = static_cast<int>(sqrt(static_cast<double>(num)));
    15.     while(variable <= _limitFactor){
    16.         if(num % variable == 0)
    17.             return false;
    18.         variable += factor;
    19.         factor = 6 - factor;
    20.     }
    21.     return true;
    22. }
    23.  
    24. int main(){
    25.   std::list<int> numbers;
    26.  
    27.   for(int x = 13; x < 49; ++x){
    28.     numbers.push_back(x);
    29.   }
    30.  
    31.   std::list<int>::iterator position;
    32.   position = find_if(numbers.begin(), numbers.end(), is_prime);
    33.   if(position != numbers.end()){
    34.     std::cout << *position << " is prine number.!!\n";
    35.   }
    36.   else{
    37.     std::cout << "No prime number found.\n";
    38.   }
    39.  
    40.   return 0;
    41. }
    Output :
    Code:
    13 is prine number.!!


    * Câu hỏi : Làm sao shift 1 chuỗi lên n units, ví dụ abc->bcd ?


    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3.  
    4. int main() {
    5.   std::string text;
    6.   std::cout << "Please enter a string : \n";
    7.   std::cin >> text;
    8.  
    9.   int units;
    10.   std::cout << "\nHow many units would you like to shift: ";
    11.   std::cin >> units;
    12.  
    13.   for(std::size_t x = 0; x < text.size(); ++x){
    14.     char c = text[x] + units;
    15.     std::cout << c;
    16.   }
    17.   std::cout << "\n";
    18.   return 0;
    19. }

    Ouput :
    Code:
    Please enter a string : 
    abcdef
    
    How many units would you like to shift: 2
    cdefgh
    *Câu hỏi : làm sao cắt chuỗi bằng 1 chuỗi cho trước ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <cstring>
    3. #include <string>
    4. #include <vector>
    5.  
    6. std::vector<std::string> tokenize_string_by_delims(std::string line, std::string delims) {
    7.   std::vector<std::string> word;
    8.   char *str = new char[line.size()];
    9.   std::memcpy(str, line.c_str(), line.size());
    10.  
    11.   for(char *token = std::strtok(str, delims.c_str()); token != 0;
    12.         token = std::strtok(0, delims.c_str())){
    13.     word.push_back(token);
    14.   }
    15.  
    16.   delete[] str;
    17.   return word;
    18. }
    19.  
    20. int main(){
    21.   std::string sentence = " first  second  third  fourth ";
    22.   std::string delims(" ");
    23.   std::vector<std::string> tokens = tokenize_string_by_delims(sentence, delims);
    24.  
    25.   for(unsigned i = 0; i < tokens.size(); ++i)
    26.     std::cout << tokens[i] << "\n";
    27.    
    28.   return 0;
    29. }

    Output :
    Code:
    first
    second
    third
    fourth
    * Câu hỏi : làm sao dùng va_list, va_start, va_end, va_arg trong C bên C++ ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <iomanip>
    3. #include <cstdarg>
    4.  
    5. double average(int count, ...){
    6.   double total = 0;
    7.   va_list list;
    8.   va_start(list, count);
    9.  
    10.   for(int x = 1; x <= count; ++x){
    11.     total += va_arg(list, double);
    12.   }  
    13.   va_end(list);
    14.  
    15.   return total/count;
    16. }
    17.  
    18. int main(){
    19.   double first = 35.7;
    20.   double second = 123.55;
    21.   double third = 13.33;
    22.   double fourth = 10.2;
    23.  
    24.   std::cout << "\nAverage of first and second :";
    25.   std::cout << average(2, first, second);
    26.   std::cout << "\nAverage of first, second and third : \n";
    27.   std::cout << average(3, first, second, third);
    28.   std::cout << "\nAverage of first, second, third and fourth: \n";
    29.   std::cout << average(4, first, second, third, fourth);
    30.  
    31.   return 0;
    32. }

    Output :
    Code:
    Average of first and second :79.625
    Average of first, second and third : 
    57.5267
    Average of first, second, third and fourth:
    * Câu hỏi : làm sao dùng atexit và exit để kết thúc chương trình ?
    answer :
    C++ Code:
    1. #include <iostream>
    2. #include <cstdlib>
    3.  
    4. void print_message(){
    5.   std::cout << "Terminating by atexit...\n";
    6. }
    7.  
    8. int main(){
    9.   atexit(print_message);
    10.  
    11.   std::cout << "\t 1 to terminate with atexit.\n";
    12.   std::cout << "\t 2 to terminate normally.\n";
    13.  
    14.   int user_choice;
    15.   std::cin >> user_choice;
    16.  
    17.   if(user_choice == 1){
    18.     exit(EXIT_SUCCESS);
    19.   }
    20.  
    21.   std::cout << "Normal termination...";
    22.  
    23.   return 0;
    24. }

    Output
    Code:
             1 to terminate with atexit.
             2 to terminate normally.
    1
    Terminating by atexit...
    Đã được chỉnh sửa lần cuối bởi rox_rook : 05-04-2008 lúc 09:52 AM.

Các đề tài tương tự

  1. Dịch thuật, công ty dịch thuật, dịch vụ dịch thuật chuyên nghiệp
    Gửi bởi vecvn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 4
    Bài viết cuối: 18-11-2012, 10:44 PM
  2. Dịch vụ kế toán: Báo cáo thuế, dịch vụ tư vấn thuế, báo cáo thuế tncn vnnp
    Gửi bởi ecomvnnp01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 16-02-2012, 11:07 AM
  3. Bài tập C++ Viết chương trình nhập số lượng hàng hóa, giá cả, thuế, xuất ra tổng giá, thuế, tổng cộng
    Gửi bởi seit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 04-03-2011, 09:04 AM
  4. Hướng dẫn kê khai thuế thu nhập cá nhân, thuế doanh nghiệp 0903034381
    Gửi bởi thngxanhcty trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 19-05-2010, 02:33 PM

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