Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 22 kết quả

Đề tài: đề bài là viết hàm chuyển đổi chữ hoa thành chừ thường và ngược lại. mình viết code rồi, nó chạy nhưng in ra thành chừ thường.

  1. #1
    Ngày gia nhập
    01 2018
    Bài viết
    9

    Question đề bài là viết hàm chuyển đổi chữ hoa thành chừ thường và ngược lại. mình viết code rồi, nó chạy nhưng in ra thành chừ thường.

    #include<stdio.h>
    #include<conio.h>
    #define MAX 100
    char chuoi[MAX];
    void nhap();
    void chuyendoi();
    void xuat();
    void nhap()
    {
    printf("Nhap chuoi cua ban\n");
    gets(chuoi);
    }
    void chuyendoi()
    {
    int i;
    for(i=0; ; i++)
    {
    if(chuoi[i]>='97'&&chuoi[i]<='122') chuoi[i]=chuoi[i]-32;
    if(chuoi[i]>='65'&&chuoi[i]<='90') chuoi[i]=chuoi[i]+32;
    if(chuoi[i]=='\0') break;
    }
    }
    void xuat()
    {
    puts(chuoi);
    }
    int main(void)
    {
    nhap();
    chuyendoi();
    xuat();
    getch();
    return 0;
    }
    thạnk you các bạn, mong các bạn giải đáp cho mình

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    483

    Code mình đã fix:
    C Code:
    1. /*====================================================================*/
    2. /*
    3.  *
    4.  *
    5.  */
    6. /*====================================================================*/
    7. #include<stdio.h>
    8. #include<conio.h>
    9. /*====================================================================*/
    10. #define MAX 100
    11. /*====================================================================*/
    12. char chuoi[MAX];
    13. void nhap();
    14. void chuyendoi();
    15. void xuat();
    16. /*====================================================================*/
    17. void nhap()
    18. {
    19.     printf("Nhap chuoi cua ban\n");
    20.     gets(chuoi);
    21. }
    22. /*====================================================================*/
    23. void chuyendoi()
    24. {
    25.     int i;
    26.     for(i=0; chuoi[i]; i++)
    27.     {
    28.         if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    29.         {
    30.             chuoi[i] -= 'a' - 'A';
    31.         }
    32.         else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    33.         {
    34.             chuoi[i] += 'a' - 'A';
    35.         }
    36.     }
    37. }
    38. /*====================================================================*/
    39. void xuat()
    40. {
    41.     puts(chuoi);
    42. }
    43. /*====================================================================*/
    44. int main(void)
    45. {
    46.     nhap();
    47.     chuyendoi();
    48.     xuat();
    49.     getch();
    50.     return 0;
    51. }
    52. /*====================================================================*/
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  3. #3
    Ngày gia nhập
    01 2018
    Bài viết
    9

    cảm ơn bạn nhé . mình cũng đã làm lại được trong lúc chờ đợi các bạn. nhưng mình vẫn còn thắc mắc, chưa hiểu đoạn code của bạn. Đoạn này đây:
    for(i=0; chuoi[i]; i++) /*đoạn này sao đặt ở biểu thức thứ 2 là: chuoi[i]. Đây là biểu thức để dừng, thoát vòng lặp mà. mình vẫn chưa rõ
    {
    if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    {
    chuoi[i] -= 'a' - 'A'; /*đoạn này chuoi[i]-='a'-'A' .nghĩa là gì bạn?
    }
    else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    {
    chuoi[i] += 'a' - 'A';
    }
    }

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:41 PM - - -

    cảm ơn bạn nhé . mình cũng đã làm lại được trong lúc chờ đợi các bạn. nhưng mình vẫn còn thắc mắc, chưa hiểu đoạn code của bạn. Đoạn này đây:
    for(i=0; chuoi[i]; i++) /*đoạn này sao đặt ở biểu thức thứ 2 là: chuoi[i].Đây là biểu thức để dừng, thoát vòng lặp mà. mình vẫn chưa rõ
    {
    if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    {
    chuoi[i] -= 'a' - 'A'; /*đoạn này chuoi[i]-= nghĩa là gì bạn?
    }
    else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    {
    chuoi[i] += 'a' - 'A';
    }
    }

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:44 PM - - -

    mình cảm ơn sự nhiệt tình của các bạn. mình mới đăng kí vào trang này chưa thạo lắm.
    đoạn code sau khi mình sửa và đã chạy được:
    #include<stdio.h>
    #include<conio.h>
    #define MAX 100
    char chuoi[MAX];
    void nhap();
    void chuyendoi();
    void xuat();
    void nhap()
    {
    printf("Nhap chuoi cua ban\n");
    gets(chuoi);
    }
    void chuyendoi()
    {
    int i;
    for(i=0; ; i++)
    {
    if(chuoi[i]>='a'&&chuoi[i]<='z') chuoi[i]=chuoi[i]-32;
    else if(chuoi[i]>='A'&&chuoi[i]<='Z') chuoi[i]=chuoi[i]+32;
    else if(chuoi[i]==' ') continue;
    else break;
    }
    }
    void xuat()
    {
    puts(chuoi);
    }
    int main(void)
    {
    nhap();
    chuyendoi();
    xuat();
    getch();
    return 0;
    }

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:58 PM - - -

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Cu giỏi tiếng nước lạ quá !
    C Code:
    1. void chuyendoi(){
    2.     int i;
    3.     for(i=0; ; i++){
    4.         if(chuoi[i]>='97'&&chuoi[i]<='122') //ký tự - một ký tự thôi, khác với chuỗi, ex 'a' .. 'z'
    5.             chuoi[i]=chuoi[i]-32;
    6.         if(chuoi[i]>='65'&&chuoi[i]<='90') //.. 'A' .. 'Z'
    7.             chuoi[i]=chuoi[i]+32;
    8.         if(chuoi[i]=='\0') break;
    9.     }
    10. }

    hoặc viết bằng số (code - mã của ký tự)
    C Code:
    1. void chuyendoi(){
    2.     int i;
    3.     for(i=0; chuoi[i]; i++){
    4.         if(chuoi[i] >= 97 && chuoi[i] <= 122) //a .. z
    5.             chuoi[i] = chuoi[i] - 32;
    6.         else
    7.         if(chuoi[i] >= 65 && chuoi[i] <= 90) // A .. Z
    8.             chuoi[i] = chuoi[i] + 32;
    9.     }
    10. }

    Nếu nhập tiếng Việt có dấu thì cu thấy thế nào ?
    Nhập xuất tiếng Việt trong Console
    cảm ơn bạn nhiều nhé.

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:59 PM - - -

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Code mình đã fix:
    C Code:
    1. /*====================================================================*/
    2. /*
    3.  *
    4.  *
    5.  */
    6. /*====================================================================*/
    7. #include<stdio.h>
    8. #include<conio.h>
    9. /*====================================================================*/
    10. #define MAX 100
    11. /*====================================================================*/
    12. char chuoi[MAX];
    13. void nhap();
    14. void chuyendoi();
    15. void xuat();
    16. /*====================================================================*/
    17. void nhap()
    18. {
    19.     printf("Nhap chuoi cua ban\n");
    20.     gets(chuoi);
    21. }
    22. /*====================================================================*/
    23. void chuyendoi()
    24. {
    25.     int i;
    26.     for(i=0; chuoi[i]; i++)
    27.     {
    28.         if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    29.         {
    30.             chuoi[i] -= 'a' - 'A';
    31.         }
    32.         else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    33.         {
    34.             chuoi[i] += 'a' - 'A';
    35.         }
    36.     }
    37. }
    38. /*====================================================================*/
    39. void xuat()
    40. {
    41.     puts(chuoi);
    42. }
    43. /*====================================================================*/
    44. int main(void)
    45. {
    46.     nhap();
    47.     chuyendoi();
    48.     xuat();
    49.     getch();
    50.     return 0;
    51. }
    52. /*====================================================================*/
    cảm ơn bạn nhé . mình cũng đã làm lại được trong lúc chờ đợi các bạn. nhưng mình vẫn còn thắc mắc, chưa hiểu đoạn code của bạn. Đoạn này đây:
    for(i=0; chuoi[i]; i++) /*đoạn này sao đặt ở biểu thức thứ 2 là: chuoi[i]. Đây là biểu thức để dừng, thoát vòng lặp mà. mình vẫn chưa rõ
    {
    if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    {
    chuoi[i] -= 'a' - 'A'; /*đoạn này chuoi[i]-='a'-'A' .nghĩa là gì bạn?
    }
    else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    {
    chuoi[i] += 'a' - 'A';
    }
    }

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 06:09 PM - - -

    Trích dẫn Nguyên bản được gửi bởi nicolaitesla Xem bài viết
    cảm ơn bạn nhé . mình cũng đã làm lại được trong lúc chờ đợi các bạn. nhưng mình vẫn còn thắc mắc, chưa hiểu đoạn code của bạn. Đoạn này đây:
    for(i=0; chuoi[i]; i++) /*đoạn này sao đặt ở biểu thức thứ 2 là: chuoi[i]. Đây là biểu thức để dừng, thoát vòng lặp mà. mình vẫn chưa rõ
    {
    if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    {
    chuoi[i] -= 'a' - 'A'; /*đoạn này chuoi[i]-='a'-'A' .nghĩa là gì bạn?
    }
    else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    {
    chuoi[i] += 'a' - 'A';
    }
    }

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:41 PM - - -

    cảm ơn bạn nhé . mình cũng đã làm lại được trong lúc chờ đợi các bạn. nhưng mình vẫn còn thắc mắc, chưa hiểu đoạn code của bạn. Đoạn này đây:
    for(i=0; chuoi[i]; i++) /*đoạn này sao đặt ở biểu thức thứ 2 là: chuoi[i].Đây là biểu thức để dừng, thoát vòng lặp mà. mình vẫn chưa rõ
    {
    if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    {
    chuoi[i] -= 'a' - 'A'; /*đoạn này chuoi[i]-= nghĩa là gì bạn?
    }
    else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    {
    chuoi[i] += 'a' - 'A';
    }
    }

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:44 PM - - -

    mình cảm ơn sự nhiệt tình của các bạn. mình mới đăng kí vào trang này chưa thạo lắm.
    đoạn code sau khi mình sửa và đã chạy được:
    #include<stdio.h>
    #include<conio.h>
    #define MAX 100
    char chuoi[MAX];
    void nhap();
    void chuyendoi();
    void xuat();
    void nhap()
    {
    printf("Nhap chuoi cua ban\n");
    gets(chuoi);
    }
    void chuyendoi()
    {
    int i;
    for(i=0; ; i++)
    {
    if(chuoi[i]>='a'&&chuoi[i]<='z') chuoi[i]=chuoi[i]-32;
    else if(chuoi[i]>='A'&&chuoi[i]<='Z') chuoi[i]=chuoi[i]+32;
    else if(chuoi[i]==' ') continue;
    else break;
    }
    }
    void xuat()
    {
    puts(chuoi);
    }
    int main(void)
    {
    nhap();
    chuyendoi();
    xuat();
    getch();
    return 0;
    }

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:58 PM - - -



    cảm ơn bạn nhiều nhé.

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 05:59 PM - - -



    cảm ơn bạn nhé . mình cũng đã làm lại được trong lúc chờ đợi các bạn. nhưng mình vẫn còn thắc mắc, chưa hiểu đoạn code của bạn. Đoạn này đây:
    for(i=0; chuoi[i]; i++) /*đoạn này sao đặt ở biểu thức thứ 2 là: chuoi[i]. Đây là biểu thức để dừng, thoát vòng lặp mà. mình vẫn chưa rõ
    {
    if(chuoi[i] >= 'a' && chuoi[i] <= 'z')
    {
    chuoi[i] -= 'a' - 'A'; /*đoạn này chuoi[i]-='a'-'A' .nghĩa là gì bạn?
    }
    else if(chuoi[i] >= 'A' && chuoi[i] <= 'Z')
    {
    chuoi[i] += 'a' - 'A';
    }
    }
    A. mình biết rồi. 'a'-'A'=32. chuoi[i]=chuoi[i]+32; hoặc -32. còn for(i=0; chuoi[i]; i++) vẫn chưa hiểu tại sao đặt chuoi[i] làm biểu thức điều kiện.
    Đã được chỉnh sửa lần cuối bởi nicolaitesla : 14-01-2018 lúc 05:57 PM.

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    483

    Biểu thức thứ hai của lệnh for là điều kiện để thi hành (chứ không phải là điều kiện để dừng, thoát) thân vòng lặp. Và điều kiện ấy là chuoi[i], nghĩa là chuoi[i] != 0, nghĩa là chuoi[i] != '\0'.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  5. #5
    Ngày gia nhập
    01 2018
    Bài viết
    9

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Biểu thức thứ hai của lệnh for là điều kiện để thi hành (chứ không phải là điều kiện để dừng, thoát) thân vòng lặp. Và điều kiện ấy là chuoi[i], nghĩa là chuoi[i] != 0, nghĩa là chuoi[i] != '\0'.
    thank you bạn. mà tiện cho mình hỏi bạn đang dùng phần mềm (IDE) nào để viết code C đấy cho mình hỏi. tại mình thấy bạn viết code đẹp. Mình dùng tubo C nó có một số nhược điểm là khi chạy vòng lặp nếu viết sai chương trình. vòng lặp chạy bất tận thì coi như mất phần bài làm trước đó, sau này không xem và sửa lại được. phải viết lại.
    Đã được chỉnh sửa lần cuối bởi nicolaitesla : 14-01-2018 lúc 07:14 PM.

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

    Mặc định đề bài là viết hàm chuyển đổi chữ hoa thành chừ thường và ngược lại. mình viết code rồi, nó chạy nhưng in ra thành chừ thường.

    .. viết code rồi, nó chạy - chạy không đúng là chuyện thường xảy ra ở huyện.

    Chạy không đúng là lỗi nguy hiểm, tai họa hơn là lỗi cú pháp (không biên dịch được).

    + Một trong những nguyên nhân thường gặp là coi thường các cảnh báo (warnings).

    + Nguyên nhân khác là sáng tạo quá sớm, vì sao trong TBD có những hàm rất đơn giản như isUpper, isLower, toUpper, toLower ?
    http://www.cplusplus.com/reference/cctype/isupper/

    + Một thói xấu là không viết chú thích trước khi làm, sa vào cốt kiếc mà quên các điều cơ bản, chuộng tiếng tây, tàu (không tư duy bằng ngôn ngữ mẹ đẻ - ngôn ngữ thứ nhất)

    Không đủ điều kiện có thể dùng codeblocks làm IDE:
    http://diendan.congdongcviet.com/threads/t400748::codeblocks-ide-for-c-cpp.cpp

  7. #7
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    483

    Trích dẫn Nguyên bản được gửi bởi nicolaitesla Xem bài viết
    thank you bạn. mà tiện cho mình hỏi bạn đang dùng phần mềm (IDE) nào để viết code C đấy cho mình hỏi. tại mình thấy bạn viết code đẹp. Mình dùng tubo C nó có một số nhược điểm là khi chạy vòng lặp nếu viết sai chương trình. vòng lặp chạy bất tận thì coi như mất phần bài làm trước đó, sau này không xem và sửa lại được. phải viết lại.
    Mình dùng Code::Blocks. http://www.codeblocks.org/downloads/26

    Code::Blocks chỉ là môi trường phát triển (IDE), không phải là bộ biên dịch (compiler). Để tiện dùng, bạn nên download codeblocks-17.12mingw-setup.exe là phiên bản đã đóng gói sẵn 1 bộ biên dịch.

    Turbo C có chương trình soạn thảo hay, với tính năng thụt lề (indent) bằng phím Tab và tự động thụt lề (auto-indent) bằng phím Enter được làm rất thông minh. Nhược điểm mà bạn mô tả, mình chưa bao giờ gặp.

    Để viết code "đẹp", nguyên tắc cơ bản nhất là phải diễn đạt rõ ràng code của bạn làm gì (what) và làm sao (how).

    Làm gì, phải diễn đạt bằng lời (comment). Trong bài tập này, bước đầu tiên, ở mỗi khai báo hàm bạn nên viết 1 câu nói hàm này làm việc gì.

    Còn làm sao, hãy cố không dùng lời, chỉ dùng code. Trong bài tập này, bước đầu tiên, bạn nên tránh dùng tràn lan các hằng số như 65, 97, 32, v.v. Hãy thay chúng bằng những hằng ký tự và biểu thức của chúng, như 'A', 'a', 'a' - 'A', v.v.

    - - - Nội dung đã được cập nhật ngày 14-01-2018 lúc 09:13 PM - - -

    Mình đồng ý với Monre. Giữa làm gìlàm sao, làm gì là việc lớn hơn cần ưu tiên nói trước. Đó là trình tự tư duy đúng đắn để giải quyết mọi vấn đề.
    Đã được chỉnh sửa lần cuối bởi Ada : 14-01-2018 lúc 09:02 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  8. #8
    Ngày gia nhập
    02 2016
    Bài viết
    284

    Nếu là mã ASCII thuần thì dùng bit XOR 32 chứ +-32 làm quái gì.

    tb. vào diễn đàn này họ hỏi được nhiều điều mới lạ ghê. Hôm này học được câu "thank you các bạn".

  9. #9
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    483

    Đúng vậy. Bảng mã ASCII được thiết kế để hỗ trợ tối đa các phép toán bit.

    Mình còn từng nghe 1 người nói "thank you you" cơ. Ngày nay các doanh nghiệp, kể cả doanh nghiệp chuyên CNTT, cũng nói và viết trên đài, trên báo những cụm từ còn buông thả hơn: "mã nguồn biên dịch", "dung lượng đường truyền", "dung lượng dữ liệu", "cập nhật mới", hay "đăng ký check-in", "mã code", hay thậm chí "mật mã password", "hộ chiếu passport".

    Và gần đây nhất, 1 cụm từ mới toanh: "thực hành suy đoán" (speculative execution). Lẫn lộn thi hành (execution) với thực hành (practice). Cẩu thả đến thế, chắc chỉ có người Việt ta.
    Đã được chỉnh sửa lần cuối bởi Ada : 15-01-2018 lúc 01:03 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

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

    Tại anh tại ả. Thầy chẳng ra thầy, trò chẳng ra trò là phải.

    Thầy ra đề bó hẹp trong ASCII thì trò nào khá được.
    Tiếng mẹ đẻ chưa thạo, học hòi hòa nhập cuốc té

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