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

Đề tài: Đếm số chữ số và tính tổng các chữ số trong 1 số nguyên"

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

    Mặc định Đếm số chữ số và tính tổng các chữ số trong 1 số nguyên"

    Đếm số chữ số và tính tổng các chữ số trong 1 số nguyên
    Ví dụ:
    Nhap mot so nguyen: 152_
    So nguyen vua nhap co 3 chu so
    Tong cac chu so: 8

    cám ơn các anh chị nhiều e cần gấp

  2. #2
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Dễ thôi bạn.
    Code đây nè, thử xem có được không nha!

    PHP Code:
    #include <conio.h>
    #include <stdio.h>
    #include <string.h>
    int ctoi(char a)
    {
        
    char *p="0123456789";int temp=0;
        for(
    int i=0;i<strlen(p);i++)
            if(
    a==p[i])
            {
                
    temp=i;break;
            }
        return 
    temp;
    }
    int dem_so(char *a)
    {
        
    int count=0;
        for(
    int i=0;i<strlen(a);i++)
            if(
    a[i]>47&&a[i]<58)  count++;
        return 
    count;
    }
    main()
    {
        
    char *a;int tong =0;
        
    printf("\nNhap vao 1 so nguyen bat ky : ");
        
    gets(a);
        
    printf("So tren co : %d chu so ",dem_so(a));
        for(
    int i=0;i<strlen(a);i++)
            
    tong+=ctoi(a[i]);
        
    printf("\nTong cua %d chu so la : %d ",dem_so(a),tong);
        
    getch();


  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Nếu sử dụng chuỗi như vậy thì quá đơn giản, cũng không cần sử lý phức tạp như trên.

    - Nếu bạn xét cả nhập kí tự != số thì bạn chỉ cần chuẩn hóa lại chuỗi một chút, rùi chỉ việc tính tổng và độ dài.

    Cái bạn sun_lee quan tâm, hẳn là sử dụng một kiểu số thuần túy:

    Demo code:
    C Code:
    1. int count = 1, sum=0;
    2. while (number < 10)
    3. {
    4.     sum += number %10;
    5.     number /= 10;
    6.     count ++;
    7. }
    8. sum += number;

  4. #4
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    1) Việc chuẩn hóa chuỗi lại "1 tí" không ngắn như vậy đâu anh ạ. Lại phải loại bỏ các phần tử khác chữ số nữa, rồi lại đi tính tổng----> em giải quyết bằng cách : cái nào khác số thì giá trị của nó bằng 0. Xong.

    2)Cái vòng lặp while của anh hình như không đúng(ko biết có phải không, em còn kém lắm nên không chắc...)
    Code:
    int count = 1, sum=0;
    while (number < 10)
    {
        sum += number %10;
        number /= 10;
        count ++;
    }
    sum += number;
    Khi number<10 thì cần gì phải làm cái chuyện number%10 ? Còn nếu như number>=10 thì sao? Vòng lặp không chạy?

    3)Cứ cho như thuật toán của anh là đúng thì nó cũng chỉ đúng trong 1 giới hạn nào đó, còn nếu như 1 số quá lớn thì sao?

    Đó là em nghĩ thế thôi, không biết có hợp lý không.

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Uh, code trên không để ý nên nhầm. sửa điều kiện vòng while thôi, cậu phát hiện ra là giỏi rùi, mình code hướng vậy thôi.

    Có một cách khác với chuỗi, nhanh hơn hoặc chậm hơn nhưng cũng đáng để tham khảo:
    C Code:
    1. #include <stdio.h>
    2. #include <string.h>
    3. #include <stdlib.h>
    4. #include <ctype.h>
    5. /*
    6. */
    7. char* Result(char *s, int *sum)
    8. {
    9.     *sum = 0;
    10.     int n=strlen(s);
    11.     char *tmp = (char*) malloc ((n+1)*sizeof(char));
    12.     int i=0,j=0;
    13.     while (i<n)
    14.     {
    15.         if (isdigit(s[i]))
    16.         {
    17.             tmp[j++] = s[i];
    18.             *sum += tmp[j-1] - 48;
    19.         }
    20.         i++;
    21.     }
    22.     *sum += tmp[j-1] - 48;
    23.     tmp[j] = '\0';
    24.     return tmp;
    25. }
    26.  
    27. int main()
    28. {
    29.     int t;
    30.     char s[100]="123 456 789 000 204kdg";
    31.     char *st = Result(s,&t);
    32.     printf(" - string: %s\n",st);
    33.     printf(" - Length of sting is: %d\n", strlen(st));
    34.     printf(" - Sum: %d",t);
    35.     return 0;
    36. }

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

    Mặc định Đếm số chữ số và tính tổng các chữ số trong 1 số nguyên"

    em thank`s các anh chị nhiều

  7. #7
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Mình muốn chia sẻ cách làm của mình. Chuơng trình của mình không có giới hạn gì cả, kể cả số âm. Bạn muốn nhập số lớn cỡ nào thì tùy thích, cho đến khi chán không muốn nhập thì nhấn enter để kết thúc
    Chúc vui
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. main()
    5. {
    6.       char c;
    7.       int sum=0,count=0;//Khoi tao tong, bien dem bang 0
    8.       int am=0;      
    9.       printf("Nhap mot so nguyen: ");
    10.       while(1)
    11.       {
    12.       c=getche();//Doc cac ki tu nhan duoc
    13.       if(c==13)   //Neu la ki tu enter ket thuc    
    14.            {
    15.            printf("\nSo nguyen vua nhap co %d chu so\nTong cac chu so: %d",count,sum);
    16.            break;
    17.             }
    18.       else if(c=='-')//Xet xem co phai so nguyen am khong
    19.           if(!am)
    20.               {am=1;continue;}
    21.           else
    22.           {
    23.           printf("\nNhap co loi.");
    24.           break;
    25.           }
    26.        else if((c<'0')||(c>'9'))//Neu khong phai chu so
    27.           {
    28.           printf("\nNhap co loi.");
    29.           break;
    30.           }    
    31.       sum+=(c&0x0F);//Chuyen ki tu ASCII sang so vaf cong vao tong
    32.                      // co the thay bang sum+=(c-48);
    33.       ++count;
    34.       }
    35.       getch();
    36. }

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

    Quả là có nhiều nhân tài thật !

  9. #9
    Ngày gia nhập
    02 2009
    Bài viết
    0

    don gian nhat la doan ma sau
    C Code:
    1. cout<<"Nhap vao 1 so:";
    2. int n;
    3. cin>>n;
    4. int tong=0;
    5. while(n>0)
    6. {
    7.       tong +=n%10;
    8.       num++;
    9.       n=n/10;
    10. }
    11. cout<<"So chu so la "<<num<<endl;
    12. cout<<"Tong cac so la "<<tong<<endl;

    * Vui lòng viết TV có dấu, bọc code vào tag code khi post bài trên diễn đàn
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 25-02-2009 lúc 07:59 PM.

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

  1. Trả lời: 5
    Bài viết cuối: 03-04-2012, 07:08 PM
  2. Nguyên nhân gây lỗi "Parameter is not valid" sau khi chạy chương trình 1 lúc?
    Gửi bởi thaibeo17 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 05-05-2011, 12:50 AM
  3. Lỗi "Chức năng... cần phải có một nguyên mẫu" trong C
    Gửi bởi luckyfor trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 08-01-2011, 06:48 PM
  4. Lỗi hàm "Kiểm tra phần tử trong mảng có là số nguyên tố hay không"
    Gửi bởi detective009 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 24-12-2010, 11:17 PM
  5. Lập trình C chuyển bài toán "tổng số nguyên tố" sang "xuất nhập file"
    Gửi bởi long221091 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 23-04-2010, 11:11 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