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

Đề tài: sao mình không tìm được vị trí của ký tự nhập vào

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

    Red face sao mình không tìm được vị trí của ký tự nhập vào

    mình muốn tìm vị trị của 1 ký tự nhpaaj vào từ bàn phím ở trong chuỗi nhưng sao mình khai báo hàm thế này mà khi nhập x vào nó không ra. bạn nào giúp mình với
    Code:
    void tim(char *st)
    {
    	int i;
       char ch;
       printf("\nNhap x: ");
       scanf("%c",&ch);
       for(i=0;i<strlen(st);i++)
    		if(ch==st[i])
          printf("\no vi tri thu %d",i+1);
    
    }

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

    Oạch.
    Thuật toán thì coi bộ đúng rùi đó. còn sao không chạy ra thì bạn đưa cả project lên đây mọi người xem cho. chứ chưa chi mà đã khóc nhè rùi, nín đi. cái này chắc là do bạn chưa nhập vào thằng st đó.

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

    đây là code của cả bài các bạn xem hộ mình
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    void nhapchuoi(char *st);
    void  chuyen(char *st);
    void daochuoi(char *st);
    int kt(char *st);
    void tim(char *st);
    void main()
    {
    	char string[100];
       nhapchuoi(string);
       chuyen(string);
       daochuoi(string);
       if(kt(string)==0)printf("\nchuoi khong doi xung");
       else printf("\nchuoi doi xung");
       tim(string);
       getch();
    
    }
    void nhapchuoi(char *st)
    {
    	printf("\nNhap chuoi: ");
       gets(st);
       printf("\nChuoi vua nhap la: %s ",st);
    
    }
    void chuyen(char *st)
    {
       	int i,dem=0,dem2=0;
    		for(i=0;i<strlen(st);i++)
    			if(st[i]>=65 && st[i]<=90)
          		st[i]+=32;
       		else if(st[i]>=97 && st[i]<=123)
          		st[i]-=32;
          		printf("\nchuoi sau khi chuyen la: %s",st);
    		for(i=0;i<strlen(st);i++)
          	if(st[i]>=65 && st[i]<=90)
             	dem++;
             else if (st[i]>=97 && st[i]<=123)
             	dem2++;
             printf("\nSo ki tu hoa la: %d",dem);
             printf("\nSo ki tu thuong la: %d",dem2);
    }
    void daochuoi(char *st)
    {
    	int i,j;
       char tg;
       for(i=0,j=strlen(st)-1;i<(strlen(st)-1)/2;i++,j--)
       	{
          	tg=st[i];
             st[i]=st[j];
             st[j]=tg;
          }
    
       printf("\nChuoi sau khi doa nguoc la: %s",st);
    }
    int kt(char *st)
    {
    	int i,j;
       for(i=0,j=strlen(st)-1;i<strlen(st)/2;i++,j--)
    
       	if(st[i]!=st[j])
         return 0;
         return 1;
    }
    void tim(char *st)
    {
    	int i;
       char ch;
       printf("\nNhap x: ");
       scanf("%c",&ch);
       for(i=0;i<strlen(st);i++)
    		if(ch==st[i])
          printf("\no vi tri thu %d",i+1);
    
    }

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

    Bạn sửa hàm Tim lại như vầy là xong ngay :

    C Code:
    1. void tim(char *st)
    2. {
    3.     int i;
    4.     char ch;
    5.     printf("\nNhap x: ");
    6.     scanf("%c",&ch);
    7.  
    8.     ch = ch - 'a' + 'A';
    9.  
    10.     for(i=0;i<strlen(st);i++)
    11.     {
    12.         if(ch==st[i])
    13.             printf("\no vi tri thu %d",strlen(st)-i);
    14.     }
    15.  
    16. }
    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.

  5. #5
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mình sửa chữa cháy cho bạn nè
    C Code:
    1. #include <stdio.h>
    2. #include <string.h>
    3. #include <conio.h>
    4.  
    5. void nhapchuoi(char *st);
    6. void  chuyen(char *st);
    7. void daochuoi(char *st);
    8. int kt(char *st);
    9. void tim(char *st);
    10. void main()
    11. {
    12.     char string[100];
    13.    nhapchuoi(string);
    14.     chuyen(string);
    15.  
    16.    daochuoi(string);
    17.  
    18.    if(kt(string)==0)
    19.        printf("\nchuoi khong doi xung");
    20.    else printf("\nchuoi doi xung");
    21.    tim(string);
    22.  
    23.    
    24.    getch();
    25.  
    26. }
    27. void nhapchuoi(char *st)
    28. {
    29.     printf("\nNhap chuoi: ");
    30.     gets(st);
    31.     printf("\nChuoi vua nhap la: %s ",st);
    32.  
    33. }
    34. void chuyen(char *st)
    35. {
    36.     char* kq;
    37.     kq = new char[strlen(st)];
    38.  
    39.     strcpy(kq,st);
    40.     int i,dem=0,dem2=0;
    41.  
    42.     for(i=0;i<strlen(kq);i++)
    43.         if(kq[i]>=65 && kq[i]<=90)
    44.             kq[i]+=32;
    45.         else if(kq[i]>=97 && kq[i]<=123)
    46.             kq[i]-=32;
    47.         printf("\nchuoi sau khi chuyen la: %s",kq);
    48.  
    49.     for(i=0;i<strlen(kq);i++)
    50.     if(kq[i]>=65 && kq[i]<=90)
    51.         dem++;
    52.      else if (kq[i]>=97 && kq[i]<=123)
    53.         dem2++;
    54.      printf("\nSo ki tu hoa la: %d",dem);
    55.      printf("\nSo ki tu thuong la: %d",dem2);
    56.      delete[] kq;  
    57. }
    58. void daochuoi(char *st)
    59. {
    60.     char *dao = new char[strlen(st)];
    61.     strcpy(dao,st);
    62.     int i,j;
    63.    char tg;
    64.    for(i=0,j=strlen(st)-1;i<(strlen(st)-1)/2;i++,j--)
    65.     {
    66.         tg=st[i];
    67.          dao[i]=dao[j];
    68.          dao[j]=tg;
    69.      }
    70.  
    71.    printf("\nChuoi sau khi doa nguoc la: %s",dao);
    72.    delete[] dao;
    73. }
    74. int kt(char *st)
    75. {
    76.     int i,j;
    77.    for(i=0,j=strlen(st)-1;i<strlen(st)/2;i++,j--)
    78.     if(st[i]!=st[j])
    79.         return 0;
    80.     return 1;
    81. }
    82. void tim(char *st)
    83. {
    84.     int i;
    85.    char ch;
    86.    printf("\nNhap x: ");
    87.    scanf("%c",&ch);
    88.    for(i=0;i<strlen(st);i++)
    89.         if(ch==st[i])
    90.             printf("\no vi tri thu %d",i+1);
    91.  
    92. }

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

    Mặc định sao mình không tìm được vị trí của ký tự nhập vào

    @meoconlongvang: tại sao lại là ch = ch - 'a' + 'A'; giải thích dùm mình được không
    @zkday2686: chương trình của mình si ở chỗ nào chỉ giúp mình được không

  7. #7
    Ngày gia nhập
    09 2007
    Bài viết
    724

    chương trình của bạn sai ở chổ bạn truyền vào con trỏ và thao tác trược tiếp trên nó --> nó sẽ thay đổi sau các lời gọi hàm
    giả sử bạn nhập:
    trantrui sau khi hàm tạo đổi thành chữ hoa thì chuổi của bạn thành TRANTRUI và các lời gọi khác.
    ==
    bạn nhập vào ký tự u để kiếm tất nhiên là không thấy -> vì C/C++ phân biệt chữ hoa và thường.
    ==

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

    cám ơn nhé mình hiểu rồi. Bài không sai mà chỉ do mình không để ý là mình đã chuyển chuổi thanh chuổi hoa nên tìm không ra :

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

  1. Sửa máy tính, cài đặt windows, phần mềm tại nhà nhanh nhất, rẻ nhất, hiệu quả nhất …
    Gửi bởi hopluccc 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: 08-07-2013, 02:07 PM
  2. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  3. Bài tập C++ NHập mảng một chiều gồm n phần tử kết thúc nhập khi nhập một chữ cái
    Gửi bởi thienthanoze trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 09-07-2012, 10:10 PM
  4. Bài tập C++ Viết phương trình nhập vào 1 chuỗi số.Hãy nhập vào 1 số.Đếm xem có bao nhiêu chữ số bạn vừa nhập
    Gửi bởi namtuocdn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-10-2011, 10:39 AM
  5. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh 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: 09-07-2011, 03:35 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