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

Đề tài: chưa hiểu về nhập dữ liệu vào getline

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    15

    Mặc định chưa hiểu về nhập dữ liệu vào getline

    [FIXED]
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3.  
    4. int main()
    5. {
    6. using namespace std;
    7.  
    8. float balance = 0;
    9. float newBalance = 0;
    10. float adjustment = 0;
    11. char response[256];
    12. string moreBankingBusiness;
    13.  
    14. cout << "Do you want to do some banking? ";
    15. cin >> moreBankingBusiness;
    16.  
    17. for (int i = 0; i < moreBankingBusiness.length(); i++) {
    18. moreBankingBusiness[i] = toupper (moreBankingBusiness[i]);
    19. }
    20.  
    21. while (moreBankingBusiness == "YES") {
    22.  
    23. //What type of business are we doing?
    24. cout << "What would you like to do? " <<
    25. "(1=Deposit, 2=Withdraw, 3=Get Balance): ";
    26. cin.getline(response,256);
    27.  
    28. if (strlen(response) == 0) {
    29. cout << "You must make a selection";
    30. return 1;
    31. }
    32. else
    33. if (atoi(response) < 1 ||
    34. atoi(response) > 3) {
    35. cout << response << " - is not a valid banking function";
    36. return 1;
    37. }
    38.  
    39. //1 is a Deposit
    40. if (atoi(response) == 1) {
    41. cout << "Enter the Deposit Amount: ";
    42. cin >> adjustment;
    43. newBalance = balance + adjustment;
    44. cout << endl << endl << "*** SMILEY NATIONAL BANK ***" << endl << endl;
    45. cout << "Old Balance is: " << balance << endl;
    46. cout << "Adjustment is: +" << adjustment << endl;
    47. cout << "New Balance is: " << newBalance << endl <<endl;
    48. }
    49.  
    50. //2 is a Withdrawal
    51. if (atoi(response) == 2) {
    52. cout << "Enter the Withdrawal Amount: ";
    53. cin >> adjustment;
    54. newBalance = balance - adjustment;
    55. cout << endl << endl << "*** SMILEY NATIONAL BANK ***" << endl << endl;
    56. cout << "Old Balance is: " << balance << endl;
    57. cout << "Adjustment is: -" << adjustment << endl;
    58. cout << "New Balance is: " << newBalance << endl <<endl;
    59. }
    60.  
    61. // 3 is a Balance Inquiry
    62. if (atoi(response) == 3) {
    63. cout << endl << endl << "*** SMILEY NATIONAL BANK ***" << endl << endl;
    64. cout << "Your current Balance is: " << newBalance << endl <<endl;
    65. }
    66.  
    67. balance = newBalance;
    68. cout << "Do you have more banking business? ";
    69. cin >> moreBankingBusiness;
    70.  
    71. for (int i = 0; i < moreBankingBusiness.length(); i++) {
    72. moreBankingBusiness[i] = toupper (moreBankingBusiness[i]);
    73. }
    74.  
    75. } // end of while
    76.  
    77. cout << endl << endl << "Thanks for banking with us!";
    78. return 0;
    79. }
    [/FIXED]
    Đã được chỉnh sửa lần cuối bởi hahakk : 10-03-2008 lúc 11:21 PM.

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

    Chưa hiểu chỗ nào vậy cậu ?

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    15

    tại sao phải thêm đoạn code này trước cin.getline(response,256);
    cin.ignore(80, '\n'); //1 phím enter còn lại sẽ dính vào thằng
    thì chương trình mới chạy đựoc mặc giù không báo lỗi nhưng strlen trong response sẽ vẫn bằng 0? lỗi này là do cuốn sách mình đọc quá cũ (vì nó bảo chỉ cần một cái cin.getline là đủ hay là do sự không tương thích giữa các compiler
    ***nó có ý nghĩa gì vậy ?
    ***cho mình hỏi nên học C++ theo Standard hay học visual C++ của M$ mình học qua sách thấy một số ví dụ không compile rất khó chịu hay là đã theo kiểu này rồi thì chơi quách M$ nhỉ ?
    *** ah` mà muốn code post lên có màu dễ nhìn như mod làm thế nào thế up theo dạng image ah`
    thanks
    Đã được chỉnh sửa lần cuối bởi hahakk : 10-03-2008 lúc 10:06 PM.

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    78

    Mình hiểu cin.getline(char *buffer,int n) thế này.Có jì các member góp ý thêm nhé.
    - Nghĩa là "đọc một dãy các kí tự từ bàn phím vào và lưu vào mảng các kí tự buffer với kích thước mảng là n.Khi đó thì nó sẽ dừng khi bạn Enter (\n).
    Code:
    char response[256];
    cin.getline(response,256);
    - Đó! buffer lúc này chính là mảng char response[256] mà bạn khai báo đó bạn.
    - Thêm nữa:khi sử dụng cin >> để input một chuỗi thì bạn nhập khoảng trắng hay dấu Tab là nó ngắt luôn.Còn khi sử dụng cin.getline() như trên thì nó chỉ ngắt khi bạn Enter.
    - Nên khi sử dụng chuỗi nên cin.getline() là hay nhất.Nhiều khi mình thấy nhiều chương trình nhập số và vẫn xài cin.getline đó nha.Tại vì họ sợ người dùng nhập lộn nên họ getline sau đó dùng hàm đổi qua số __ bẫy lỗi đó mà.
    - Còn cin.ignore mình chưa thông.Bạn để code vào tag CODE đó {#} trong màn hình soạn thảo hay xem kĩ hướng dẫn ở trên cùng đó.
    Đã được chỉnh sửa lần cuối bởi hacker_mubaohiem : 10-03-2008 lúc 10:13 PM.
    No way, No success..

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

  1. Bài tập C Lỗi nhập dữ liệu cin.getline
    Gửi bởi delta3105 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 12
    Bài viết cuối: 13-10-2013, 11:05 PM
  2. Lập trình C++ Lệnh cin.getline() không thể nhập chuỗi kế tiếp khi trước đó đã nhập 1 chuỗi vượt quá số kí tự tối đa khi khai báo
    Gửi bởi alonesnail025 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 23-06-2013, 11:34 AM
  3. Trả lời: 0
    Bài viết cuối: 13-05-2012, 10:51 AM
  4. Đa thừa kế trong class! lỗi xuất ra mặt cười và hàm cin.getline() không nhập được!
    Gửi bởi code_c trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 19-11-2011, 12:36 AM
  5. Cách nhập dữ liệu cin.getline như thế nào?
    Gửi bởi ichat_91 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 05-10-2010, 01:34 AM

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