VDC khuyen mai
Hiển thị kết quả từ 1 đến 8 / 8

Chủ đề: So sánh 2 ký tự

  1. #1
    Tham gia
    27-11-2009
    Bài viết
    17
    Like
    0
    Thanked 0 Times in 0 Posts

    So sánh 2 ký tự

    Có ai biết hàm so sánh 2 ký tự trong C hay C++ ko? Hình như ko có thì phải? Chỉ có hàm strcmp() là so sánh 2 chuỗi thôi?
    đề bài: Nhập 1 chuỗi ký tự từ bàn phím. Sắp xếp rồi in ra màn hình
    Do ko so sánh đc 2 ký tự nên m` so ánh bằng mã ascii. Nhg ko ổn lắm???

    #include<iostream.h>
    #include<conio.h>
    #include<ctype.h>

    void main()
    {
    //clrscr();
    char a[20];
    int n;
    char tg;
    cout<<"Nhap chuoi: ";cin>>a;
    for (int i=0;i<n-1;i++)
    for (int j=i+1;j<n;j++)
    {
    if (toascii(a[j])>toascii(a[i]))
    {
    char tg=a[i];
    a[i]=a[j];
    a[j]=tg;
    }
    }
    cout<<"chuoi sau sx la: "<<a;
    getch();
    }

    Mọi ng` xem phần sắp xếp cho m` nha Biết là sai rùi nhg ko biết sửa
    Quote Quote

  2. #2
    Tham gia
    30-04-2009
    Bài viết
    21
    Like
    0
    Thanked 0 Times in 0 Posts
    ban so sanh kieu bang chu cai A B C hay gi
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    void sx(char a[])
    {
    int n=strlen(a);
    for(int i=0;i<n;i++)
    for(int j=i+1;j<n;j++)
    if(a[i]>a[j])
    {
    int tam=a[i];
    a[i]=a[j] ;
    a[j]=tam;
    }
    }
    void main()
    {
    char a[100];
    gets(a);
    sx(a);
    puts(a);
    }
    ko biet co dung y ban ko

  3. #3
    Tham gia
    27-11-2009
    Bài viết
    17
    Like
    0
    Thanked 0 Times in 0 Posts
    Mình hiểu cách làm của bạn rồi! thanks!
    Đây là cách làm theo tương tử của C vì 1 ký tự trong C có thể vừa là char vừa là int (int thì sẽ là mã trong bảng ascii).
    Còn trong C++ chả chỉ là char thôi nên ko thể làm thế được? Thế nên ko ổn lắm thì phải? M` cũng chẳng biết thế nào????

  4. #4
    Tham gia
    26-11-2009
    Location
    Youtube
    Bài viết
    58
    Like
    4
    Thanked 3 Times in 2 Posts
    Quote Được gửi bởi j0y_key View Post
    Mình hiểu cách làm của bạn rồi! thanks!
    Đây là cách làm theo tương tử của C vì 1 ký tự trong C có thể vừa là char vừa là int (int thì sẽ là mã trong bảng ascii).
    Còn trong C++ chả chỉ là char thôi nên ko thể làm thế được? Thế nên ko ổn lắm thì phải? M` cũng chẳng biết thế nào????
    bạn ép kiểu char sang int.
    vd : char a ='A'
    cout << int(a); mã ASCII = 65.
    có thể hiểu đơn giản là thuật toán sắp xếp ở trên khi so sánh 2 chữ cái thì chuyển qua kiểu int để so sánh.

  5. #5
    Tham gia
    27-11-2009
    Bài viết
    17
    Like
    0
    Thanked 0 Times in 0 Posts
    um` thui cứ ép kiểu như vậy vậy. Khi nào tìm đc cách hợp lý hơn rùi tính :| Thanks nha

  6. #6
    Tham gia
    06-06-2008
    Bài viết
    102
    Like
    0
    Thanked 1 Time in 1 Post
    Có 2 cách:
    Thứ 1: bạn ép kiểu char -> int (ASCII) rồi so sánh
    Thứ 2: dùng strcpm(), hàm này so sánh 2 chuổi, nhưng bao hàm cả 2 kí tử
    vd strcmp(a[i],a[j]) trả về ==0, >0,<0 . Bạn dùng cái trả về để so sánh các ki tự trong chuổi a[] từ 0 -> n-1

  7. #7
    Tham gia
    27-11-2009
    Bài viết
    17
    Like
    0
    Thanked 0 Times in 0 Posts
    Nhưng hình như hàm strcmp() chỉ cho so sánh 2 chuối thôi thì phải?
    Cách 2 bạn nói giống như code ban đầu của m` đó. So sánh 2 ký tự nó báo lỗi?

  8. #8
    Tham gia
    30-04-2009
    Bài viết
    21
    Like
    0
    Thanked 0 Times in 0 Posts
    neu la char thi bạn nên xây dựng 1 hàm trả về giá trị kiểu int di
    A=1
    B=2 V....v vây đó dc ko ma C++ là viết =VS c++ ha

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •