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

Đề tài: Bỏ dấu "/" và "-" trong hàm char

  1. #1
    Ngày gia nhập
    08 2011
    Nơi ở
    Thái Nguyên
    Bài viết
    11

    Mặc định Bỏ dấu "/" và "-" trong hàm char

    Trong kiểu char cho nhập ngày tháng như này : 17/9/2011 hoặc 17-9-2011

    em muốn lấy toàn bộ các chữ số và bỏ đi các dấu gạch chéo hoặc dấu sổ ngang thì dùng lệnh gì và cấu trúc như nào ạ ? , các bro chỉ giáo dùm

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Trích dẫn Nguyên bản được gửi bởi Tung93tn Xem bài viết
    Trong kiểu char cho nhập ngày tháng như này : 17/9/2011 hoặc 17-9-2011

    em muốn lấy toàn bộ các chữ số và bỏ đi các dấu gạch chéo hoặc dấu sổ ngang thì dùng lệnh gì và cấu trúc như nào ạ ? , các bro chỉ giáo dùm
    Muốn bỏ nó thì bạn chỉ cần tìm thấy nó. Còn muốn tìm thấy nó thì bạn dựa vào bảng mã ASCII:
    "/" =>47, "-" =>45

  3. #3
    Ngày gia nhập
    08 2011
    Nơi ở
    Thái Nguyên
    Bài viết
    11

    Trích dẫn Nguyên bản được gửi bởi vitbau1412 Xem bài viết
    Muốn bỏ nó thì bạn chỉ cần tìm thấy nó. Còn muốn tìm thấy nó thì bạn dựa vào bảng mã ASCII:
    "/" =>47, "-" =>45
    điều này chưa rõ cho lắm , vì nếu tìm thấy nó một lần ta có thể dùng strrchr để tìm nó , nhưng vấn đề là lấy chuỗi đó ra và chỉ lấy các chữ số còn các ký tự và chữ thì bỏ lại

  4. #4
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Trích dẫn Nguyên bản được gửi bởi Tung93tn Xem bài viết
    điều này chưa rõ cho lắm , vì nếu tìm thấy nó một lần ta có thể dùng strrchr để tìm nó , nhưng vấn đề là lấy chuỗi đó ra và chỉ lấy các chữ số còn các ký tự và chữ thì bỏ lại
    Bạn thử làm cách này xem, lấy được ngày tháng và chuyển nó từ char sang int luôn đó:
    C Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include <string.h>
    4. int TinhNgay(char a[] , int &i ,int s)
    5. {
    6.     int yy=0;
    7.     for (;(a[i]!=45)&&(a[i]!=47)&&(i<=s-1);i++)
    8.         yy=yy*10 + a[i]-48;
    9.     i++;
    10.     return yy;
    11. }
    12. void main()
    13. {
    14.     char a[12];
    15.     int s, i, dd, mm, yy;
    16.     printf("Nhap ngay thang: ");
    17.     gets(a);
    18.     s=strlen(a);
    19.     i=0;
    20.     dd=TinhNgay(a,i,s);
    21.     mm=TinhNgay(a,i,s);
    22.     yy=TinhNgay(a,i,s);
    23.     printf("Ngay %d, Thang %d, Nam %d\n",dd,mm,yy);
    24. }

  5. #5
    Ngày gia nhập
    08 2011
    Nơi ở
    Thái Nguyên
    Bài viết
    11

    C Code:
    1. for (l = 9; l >= 0; l-- )
    2.         {
    3.             if ( strcmp( ((donhang + i)->date + l), sosanh ) > 0 )
    4.             {
    5.                 *((donhang + i)->ss + l) = *((donhang + i)->date + l);
    6.             }
    7.             printf("%c", *((donhang + i)->date + l));
    8.         }

    Với đoạn code trên làm thế nào để nó hiểu rằng nếu gặp dấu "/" ( gạch chéo ) thì bỏ qua và chạy tiếp vậy các bro ?

    Cụ thể hơn là biến sosanh phải để giá trị nào thì nó hiểu là dấu "/".

    Nếu em gán thẳng

    C Code:
    1. char sosanh = '/'

    thì nó toàn báo lỗi là ko thể so sánh kiểu int với kiểu char trong khi rõ dàng khai báo là kiểu char

  6. #6
    Ngày gia nhập
    11 2010
    Nơi ở
    Black Hole
    Bài viết
    824

    Mặc định Bỏ dấu "/" và "-" trong hàm char

    Trích dẫn Nguyên bản được gửi bởi vitbau1412 Xem bài viết
    Bạn thử làm cách này xem, lấy được ngày tháng và chuyển nó từ char sang int luôn đó:
    C Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include <string.h>
    4. int TinhNgay(char a[] , int &i ,int s)
    5. {
    6.     int yy=0;
    7.     for (;(a[i]!=45)&&(a[i]!=47)&&(i<=s-1);i++)
    8.         yy=yy*10 + a[i]-48;
    9.     i++;
    10.     return yy;
    11. }
    12. void main()
    13. {
    14.     char a[12];
    15.     int s, i, dd, mm, yy;
    16.     printf("Nhap ngay thang: ");
    17.     gets(a);
    18.     s=strlen(a);
    19.     i=0;
    20.     dd=TinhNgay(a,i,s);
    21.     mm=TinhNgay(a,i,s);
    22.     yy=TinhNgay(a,i,s);
    23.     printf("Ngay %d, Thang %d, Nam %d\n",dd,mm,yy);
    24. }
    Code ok rồi. Thủ thuậ tốt.
    Mình đặt thêm 1 trường hợp, nếu ngày tháng kiểu : 12:5:2013 thì sao ? Vì việc chia cách ngày tháng ko nhất thiết phải '-' hay '/' .
    Vì vậy chỉ cần sửa condition trong for lại tí nữa là hoàn hảo.
    Come as guest...... stay as family......... because we're smiling together.

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

  1. nghĩa của 3 từ "principals", "artifacts", "securables" là như thế nào?
    Gửi bởi ntbao trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 2
    Bài viết cuối: 02-09-2017, 06:36 PM
  2. Trả lời: 1
    Bài viết cuối: 01-12-2011, 07:32 PM
  3. Bài tập C lỗi "syntax error" trong file định dạng lại kiểu dữ liệu "types.h"
    Gửi bởi grandthorn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 10-09-2011, 07:29 AM
  4. Phân biệt "Công nghệ", "Ngôn ngữ", "Công cụ" trong thế giới lập trình
    Gửi bởi nhuan07 trong diễn đàn Thắc mắc chung
    Trả lời: 2
    Bài viết cuối: 09-06-2011, 08:45 AM
  5. Problems : " recover tree " with input as " preorder" and "inorder"
    Gửi bởi HoangManhHa1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 13-04-2011, 10:19 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