Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 18 kết quả

Đề tài: Viết hàm đệ quy để đảo ngược một xâu trong C?

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

    Mặc định Viết hàm đệ quy để đảo ngược một xâu trong C?

    cho em hỏi để viết một hàm đệ quy để đảo ngược một xâu kí tự thì làm sao ạ. mọi người chỉ cho em cách làm với.

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Làm vầy nè bạn :

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. void DaoChuoi(const char *s1, char *&s2)
    5. {
    6.     if ((*s1) == 0) return;
    7.  
    8.     DaoChuoi(s1 + 1,s2);
    9.     (*s2) = (*s1);
    10.     s2++;
    11. }
    12.  
    13. void main()
    14. {
    15.     char s1[100];
    16.     char s2[100];
    17.  
    18.     printf("Nhap chuoi : ");
    19.     gets(s1);
    20.  
    21.     DaoChuoi(s1,s2);
    22.     printf("Chuoi dao : %s\n",s2);
    23.  
    24.     getch();
    25. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Làm vầy nè bạn :

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. void DaoChuoi(const char *s1, char *&s2)
    5. {
    6.     if ((*s1) == 0) return;
    7.  
    8.     DaoChuoi(s1 + 1,s2);
    9.     (*s2) = (*s1);
    10.     s2++;
    11. }
    12.  
    13. void main()
    14. {
    15.     char s1[100];
    16.     char s2[100];
    17.  
    18.     printf("Nhap chuoi : ");
    19.     gets(s1);
    20.  
    21.     DaoChuoi(s1,s2);
    22.     printf("Chuoi dao : %s\n",s2);
    23.  
    24.     getch();
    25. }
    ~~~> meonconlongvang: mình thanks nhé. mình đã chạy thành công.

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

    Bạn meoconlongvang có thể giải thích rõ hơn một tí về đoạn mã sau không? Mình đọc mà không hiểu gì cả. Thank!!!!!!!!!!!!!!!!!!!!!!!!
    Code:
    void DaoChuoi(const char *s1, char *&s2)
     {
        if ((*s1) == 0) return;
    
        DaoChuoi(s1 + 1,s2);
        (*s2) = (*s1);
        s2++;
    }
    Đã được chỉnh sửa lần cuối bởi studylanguageC : 18-09-2008 lúc 04:19 PM.

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

    Cái này chắc dễ hơn nè
    C Code:
    1. #include <cstdio>
    2.  
    3. void pr( const char* s )
    4. {
    5.     *s && ( pr( s + 1 ), printf( "%c", *s ) );
    6. }
    7.  
    8. int main()
    9. {
    10.     const char* s = "I love you !\n";
    11.     pr( s );
    12.  
    13.     return 0;
    14. }

    Code của meocon anh compile không được ? Em dùng compiler nào vậy ? Với lại s2 chưa có kí tự NULL.

  6. #6
    Ngày gia nhập
    09 2008
    Bài viết
    2

    Mặc định Viết hàm đệ quy để đảo ngược một xâu trong C?

    À em mới nghiên cứu môn này,nên kiến thức còn yếu mong R_R giúp đỡ. Em không có máy tính chỉ ra mạng học thôi!!!!!!!
    Code:
    #include <cstdio>
    
    void pr( const char* s )
    {
        *s && ( pr( s + 1 ), printf( "%c", *s ) );
    }
    
    int main()
    {
        const char* s = "I love you !\n";
        pr( s );
    
        return 0;
    }
    Cái này cũng không hiểu luôn. R_R ở đâu?

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

    Không hiểu chỗ nào thì hỏi, đừng copy code và run ! Có hại chứ không có lợi ! Code trên của meocon có lẽ có bug, vì quả thật anh compile không được ! Còn code anh thắc mắc gì post lên anh sẽ giải thích !

  8. #8
    Ngày gia nhập
    09 2008
    Bài viết
    328

    những bài như thế này tìm ở diễn đàn nào cũng có,tìm ở đâu cũng thấy,học trường nào cũng cho không kiểm tra thì là các bài tập về nhà,vậy mà mọi người hỏi vẫn hỏi trả lời vẫn trả lời,người hỏi cần có tinh thần tự giác cao hơn chứ

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

    C++ Code:
    1. *s && ( pr( s + 1 ), printf( "%c", *s ) );
    - Toán tử và chỉ thực thi vế phải khi nào vế trải sai ! Trick là chỗ này.
    - s là chuỗi -> khử tham chiếu nó *s tức là kí tự, trong khi trong C/C++
    + 1 = true
    + 0 = false
    Mà code của tui *s &&... thằng *s chỉ false khi mà nó là kí tự '\0' ( hay là 0 ), cái này qui ước trong C và C++ nó là vậy.
    Hàm pr(...) là hàm đệ qui và cụ thể là nó gọi chính nó :
    pr( s + 1 ) tức là kí tự thứ 2 ( s[ 1 ] ), chỗ này là dùng phép + con trỏ
    Giả sử s = "abcdef";
    s + 1 = "..bcdef";
    Cứ truyền vào lên dầng 1 kí tự cho tới khi nó là NULL.
    Đệ qui viết code rất đẹp nhưng mới học thì có lẽ cũng hơi khó hiểu, từ từ rồi sẽ quen.
    Tiếp theo là dấu , : trong C/C++ dấu phảy chẳng có ý nghĩa gì cả, nó chỉ phân cách các lệnh thôi, trong TH này, sau khi đệ qui gọi sẽ tới phiên nó, tức là in ra kí tự cuối, kế cuối, kế kế cuối.....

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

    những bài như thế này tìm ở diễn đàn nào cũng có,tìm ở đâu cũng thấy,học trường nào cũng cho không kiểm tra thì là các bài tập về nhà,vậy mà mọi người hỏi vẫn hỏi trả lời vẫn trả lời,người hỏi cần có tinh thần tự giác cao hơn chứ
    mình nghĩ bạn này nói đúng đấy,người post bài nên chủ động hơn đi
    1 bài đơn giản thía này có nhiều cách lắm,đóng góp 1 cách nông dân nè
    PHP Code:
    #include<iostream.h>
    #include<stdlib.h>
    #include<string.h>
    void daochuoi(char chuoi[100])
    {
        
    std::cout<<"\n";
        
    int n=strlen(chuoi);
        for(
    int i=n-1;i>=0;i--)
        {
             
    std::cout<<chuoi[i];
        }
    }
    int main()
    {
        
    char chuoi[100];
        
    std::cout<<"NHAP CHUOI:";
        
    std::cin.getline(chuoi,100);
        
    daochuoi(chuoi);
        return 
    0;

    Đã được chỉnh sửa lần cuối bởi AlexF : 18-09-2008 lúc 04:51 PM.

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

  1. Lập trình C hai cách viết trong bài viết này có gì khác không, nếu khác mọi người giải thích giúp với
    Gửi bởi letung94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 02-01-2013, 07:29 AM
  2. Bài tập C++ Hàm chuyển chữ viết thường thành chữ viết hoa trong C++?
    Gửi bởi monkey_92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 08-11-2011, 03:47 PM
  3. muốn viết code cho 1 button nằm trong girdview thì viết ở đâu
    Gửi bởi thuan trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 14-09-2011, 01:08 PM
  4. Viết code trên Form và viết code trong class có gì khác nhau.
    Gửi bởi hocCsharp trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 21
    Bài viết cuối: 21-01-2011, 10:37 PM
  5. [visual basic]Viết lệnh trong sự kiện timer là viết ở đâu?
    Gửi bởi thuan trong diễn đàn Thắc mắc chung
    Trả lời: 2
    Bài viết cuối: 21-09-2010, 12:53 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