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

Đề tài: mình hỏi về chuỗi

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

    Mặc định mình hỏi về chuỗi

    cho một chuối gồm nhiều từ bài toán đặt ra là có một từ cho trước và một số k xác định ta cần chèn từ cho trước vào trước vị trí k
    ví dụ có một chuỗi các từ "thoi gian cu troi " và từ cho trước là "van " và k=3 kết quả nhận được sẽ là "thi gian van cu troi

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Có nhìu cách lắm.
    Gợi ý bạn một số cách như:
    1.Chạy từ đầu đến vị trí k ( kiểm tra bằng ký tự blank ) cứ ghép vào môt chuỗi _tmpStr. Rồi gán chuỗi cần thêm vào. Sau đó tiếp tục chạy từ k đến hết chuỗi gốc và gán vào _tmpStr.
    2.Kiểm tra xem chuỗi gốc có bi nhiu từ ( bằng kiểm tra bằng ký tự blank, khi duyệt nên loại bỏ nếu rank có nhiều hơn 2 blank). -> được _count;
    Cái này nên kiểm tra ban đầu rồi còn so sánh với k nữa.
    OK, thỏa mãn điều kiện k. Tiến hành rời chuỗi về sau tới khi (_count-- ) = k.
    Chèn vào là ok.
    3.Với C# thì không khó lắm với câu lệnh
    Visual C# Code:
    1. foreach(String _subStr in _str.Split(' '))
    2.         if(_count == k)
    3.         {
    4.                 _tmpStr+= _inputStr;
    5.                 _tmpStr+= _subStr;
    6.                 // chu ý + với blank nữa nhé sao cho hợp lý, cái này bạn tự làm nhé ^^!
    7.                
    8.         }
    9.         else _tmpStr+=subStr;
    _count++;
    Bạn cố gắng code, và hiểu nó như mảng vậy.
    Sau đó thao tác như với mảng là OK ^^!
    Thân!
    Đã được chỉnh sửa lần cuối bởi NT_OnlyLove : 22-04-2008 lúc 01:19 AM. Lý do: [chú thích thêm cho rõ ràng]
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

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

    Example
    C Code:
    1. #include <cctype>
    2. #include <cstdio>
    3. #include <cstdlib>
    4. #include <cstring>
    5.  
    6. char* insert_word(const char* src,
    7.                  const char* inst,
    8.              int position
    9.             )
    10. {
    11.     char* dest = (char* )malloc(strlen(src) + strlen(inst) + 3);
    12.     char* to_dest = dest;
    13.     const char* to_src = src;
    14.     const char* to_inst = inst;
    15.     int space = 0;
    16.     for(;*to_src != '\0'; ++to_src, ++to_dest)
    17.     {
    18.         *to_dest = *to_src;
    19.         if(isspace(*to_src))
    20.             ++space;
    21.         if(space == position)
    22.         {
    23.             *(++to_dest) = ' ';
    24.             space = position + 1;      
    25.             for(;*to_inst != '\0'; ++to_inst, ++to_dest)
    26.             {
    27.                 *to_dest = *to_inst;
    28.             }
    29.             ++(*to_dest) = ' ';
    30.         }
    31.     }
    32.     *to_dest = '\0';
    33.     return dest;
    34. }
    35.  
    36. bool valid_position(const char* src, const int& pos)
    37. {
    38.     int cnt = 0;
    39.     for(; *src != 0; ++src)
    40.     {
    41.         if(isspace(*src))
    42.             cnt++;
    43.     }
    44.     if(pos > cnt)
    45.     {
    46.         printf("...invalid position !!!\n");
    47.         return false;
    48.     }
    49.     return true;
    50. }
    51.  
    52. void read_string(char str[], unsigned len)
    53. {
    54.   fflush(stdin);
    55.   printf("\n..Not over len %d character pls !\n", len);
    56.   int toke, x = 0;
    57.   while((toke = getchar()) != EOF && toke != '\n')
    58.     {
    59.     str[x++] = toke;
    60.     if(x == len)
    61.         {
    62.       printf("...buffer overflow.\n");
    63.       return;
    64.     }
    65.   }
    66.   str[x] = '\0';
    67. }  
    68.  
    69. bool aks_user(const char* quest = "\n\n[Continue (y, n)]?")
    70. {
    71.     while(true)
    72.     {
    73.         printf("%s", quest);
    74.         char answ[2];
    75.         read_string(answ, 2);
    76.         if(answ[0] == 'y' || answ[0] == 'Y')
    77.             return true;
    78.         if(answ[0] == 'n' || answ[0] == 'N')
    79.             return false;
    80.         else
    81.             printf("\n...Invalid answer, try again.!\n");
    82.     }
    83. }
    84.  
    85. int main()
    86. {
    87.     const char* src = "I love you";
    88.     const char* inst = "really";
    89.     char user_input[80];
    90.     char inserter[10];
    91.  
    92.     int pos;
    93.     do
    94.     {
    95.         char* new_str;
    96.         if(aks_user("Do you want to use default string ?(y, n)\n"))
    97.         {
    98.             printf("Enter position : ");
    99.             scanf("%d", &pos);
    100.             if(valid_position(src, pos))
    101.             {
    102.                 new_str = insert_word(src, inst, pos);
    103.                 printf("After insert : %s", new_str);
    104.                 free(new_str);
    105.             }
    106.         }
    107.         else
    108.         {
    109.             printf("\nEnter your input string : ");
    110.             read_string(user_input, 80);
    111.             printf("\nEnter your inserter string : ");
    112.             read_string(inserter, 10);
    113.             printf("\nEnter position : ");
    114.             scanf("%d", &pos);
    115.             if(valid_position(user_input, pos))
    116.             {
    117.                 new_str = insert_word(user_input, inserter, pos);
    118.                 printf("After insert : %s\n\n", new_str);
    119.                 free(new_str);
    120.             }
    121.         }
    122.     }while(aks_user() != false);
    123.     return 0;
    124. }
    ps: không hiểu sao tag cod C/C++ bị lỗi hoài, code văng búa xua T_T !
    Đã được chỉnh sửa lần cuối bởi rox_rook : 22-04-2008 lúc 06:51 AM.

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Example

    ps: không hiểu sao tag cod C/C++ bị lỗi hoài, code văng búa xua T_T !
    chắc tại bạn dùng IE nên nó bị lỗi. mình dùng FF có bị bao rờ đâu ?
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

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

    chắc tại bạn dùng IE nên nó bị lỗi. mình dùng FF có bị bao rờ đâu ?
    Đúng thật, do ngồi ở trường nó ko cài FF T_T, hèn gì code văng búa xua T_T ! Thanks langman !

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

  1. Bài tập C++ Cách để so sánh 2 chuỗi kí tự giữa chuỗi nhập từ phím và chuỗi từ file xem có giống nhau không?
    Gửi bởi davilson18 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-06-2012, 09:47 AM
  2. Lập trình C Thay thế chuỗi s1 trong chuỗi s bằng chuỗi s
    Gửi bởi duytue trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 23-09-2011, 04:16 PM
  3. thay thế chuỗi con thứ i trong chuỗi mẹ bằng 1 chuỗi khác
    Gửi bởi nhat1811 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: 06-08-2011, 08:25 AM
  4. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  5. xem một từ trong chuỗi là một chuỗi con, sắp xếp các chuỗi con theo thứ tự tăng dần
    Gửi bởi qpkdct1101 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 20-01-2011, 08:22 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