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ố 14 kết quả

Đề tài: Cho mình hỏi về cách xử lý số :(

  1. #1
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    Mặc định Cho mình hỏi về cách xử lý số :(

    Chẳng lẽ mình đang cần làm 1 câu điều kiện sao cho người dùng nhập số có đúng 7 số. nếu không đúng thì nó sẽ ra thông báo là bạn cần phải nhập đúng 7 chữ số. 7 chữ số đó được phép có số 0 đằng trước. Ví dụ như 0000078 vẫn được phép vì có 7 chữ số :(
    Giúp mình với..
    Nothing is impossible.

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

    tư tưởng thế này
    _ Cho người dùng nhập vào 1 chuỗi, có 1 biến đếm, 1 mảng lưu chuỗi số đó vào mảng, dùng vòng lặp kiểm tra mảng đó,
    nếu ((mảng[i] == 0 && dem!=0)||(mảng[i]!=0)) thì tăng biến dem them 1;
    dem quá 7 thì ... làm gì chắc bạn biết rồi :-"
    code ra gió bão

  3. #3
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    hic... sao mà rắc rối thê không biết :(( ai có đoạn code ko nhỉ :((
    Nothing is impossible.

  4. #4
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    Code:
    #include <stdio.h>
    #include <conio.h>
    #define LONG_LONG __int64
    #define LL_FORMAT "I64"
    main()
    {
    
          LONG_LONG M[12],a,i,n,sum,total,mul,wei;
          printf("UPC Validator\n");
     		printf("=============\n");
          for(;;)
          {
          printf("UPC (0 to quit): "); scanf("%I64d",&n); 
                  if (n!=0)
                  {
                // Gan cac gia tri vao mang.
                	a=n;
    					for (i=1;i<13;i++)
                		{
       		 				M[i]=a%10; a /= 10;
        					}
                // Phan Than Chuong Trinh
                	sum=0;
                   for (i=2;i<13;i++)
                   	{
                      if (i%2==0) sum=sum+M[i];
                      }
                   mul=sum*3;
                   wei=0;
                   for (i=3;i<12;i++)
                   	{
                      if (i%2==1) wei=wei+M[i];
                      }
                   total=mul+wei+M[1];
                   if (total%10==0) printf("This is a valid UPC.\n");
                   else printf("This is not a valid UPC.\n");
                   } else break;
    
          }
    printf("Have A Nice Day!");
    getch();
    }
    Mình có đoạn code như thế :( Với ví dụ là 067800001019 thì nó chính là số UPC nhưng nó có 12 chữ số. Đối với trường hợp ít hơn 12 chữ số thì nó sẽ thêm số 0 vào đằng trước thành 12 chữ số :( làm thế nào để khắc phục :( Giúp với!!!! Nếu nhập vào ít hơn hay nhiều hơn 12 chữ số thì sẽ báo là Need 12 digits. :(
    Đã được chỉnh sửa lần cuối bởi tantripy : 28-09-2008 lúc 02:40 PM.
    Nothing is impossible.

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

    Mèng ơi, cao siêu quá. Cái này chia 10^6 nếu lớn 0 thì nó có 7 chữ số.
    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.

  6. #6
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    Mặc định Cho mình hỏi về cách xử lý số :(

    Đâu ra hay thế :( làm sao mà chia cho 10^6 lớn hơn 0 thì có 7 chữ số được. Trong C thì 0000065 nó giống 65. Tuy nhiên bài toán của mình thì 0000065 nó đúng còn 65 thì sai :( Cũng giống như là thẻ ATM vậy :-< nó có 10 số mà :(
    Nothing is impossible.

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

    Nếu bạn muốn số 0 đằng trước vẫn tính thì cách của bạn 6220119 là tốt nhất. Đây là đoạn code minh họa ý tưởng đó :

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. void main()
    5. {
    6.     char c;
    7.     int i = 0;
    8.     __int64 num;
    9.  
    10.     do
    11.     {
    12.         printf("Nhap so co 12 chu so : ");
    13.         i = 0;
    14.         num = 0;
    15.         do
    16.         {
    17.             c = getche();
    18.  
    19.             if (c >= '0' && c <= '9')
    20.             {
    21.                 num *= 10;
    22.                 num += (c - '0');
    23.                 i++;
    24.             }
    25.             else if (c == 8)
    26.             {
    27.                 num /= 10;
    28.             }
    29.         }  
    30.         while (c != 13);
    31.  
    32.         if (i != 12)
    33.             printf("\nSo khong hop le. De nghi nhap lai.\n");
    34.     }
    35.     while (i != 12);
    36. }
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 28-09-2008 lúc 08:11 PM.
    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.

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

    Cách của mèo hay đó. không phải kiểm tra nhọc nhằn, đếm như của 6220119 đảm bảo là chạy nhanh hơn.
    nhưng còn thiếu: nếu mà zkday nhập vào 8 chữ số thì sao nhỉ; hì hì thì nó không đúng như ý muốn của chủ topic này .
    zkday xin bổ sung thêm.

    C++ Code:
    1. int nSo;
    2. if((nSo/10^6)*1.0 >0.0)  && (nSo/10^8)*1.0 < 0.0))
    3.       printf("ok nhập đúng rùi ");

    đại loại như vậy: còn hàm tính 10^x thì dùng hàm pow là được.
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 28-09-2008 lúc 08:16 PM.

  9. #9
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    Cảm ơn nhiều lắm Để mình test thử đã
    Nothing is impossible.

  10. #10
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    Nếu được thì làm dùm mình bài này luôn được ko. Có thể làm bài này ko cần dùng đến char được ko :(. Đề bài là kiểm tra số nhập vào có phải là số UPC hay ko? Cách kiểm tra số UPC là.
    Code:
      UPC  067800001019
                      |
     check digit is   9
     add 1st, 3rd, ..., 11th digits 
          0 7 0 0 1 1    =  9
     multiply by 3       = 27
     add 2nd, 4th, ..., 10th digits
           6 8 0 0 0     = 14
     add weighted sum    = 41
     add check digit        9
     total                 50
     divide by 10           5
     remainder              0
     Therefore this is a valid UPC
    Đã được chỉnh sửa lần cuối bởi tantripy : 28-09-2008 lúc 10:13 PM.
    Nothing is impossible.

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