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

Đề tài: tính tong các số hạng của một dãy số,

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

    Mặc định tính tong các số hạng của một dãy số,

    xin giúp giùm e bt trên ak :Vd như: tính tong cac so hạng 23654 : 2+3+6+5+4=20.

  2. #2
    Ngày gia nhập
    02 2016
    Bài viết
    193

    Bạn cho biết, nếu bạn làm bằng tay thì làm cách nào tách được 1 số abcdef thành a b c d e f
    Sau khi bạn đã động não tìm được thuật toán rồi thì tôi sẽ giúp bạn phương pháp code.

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

    Đây nhé, coi thế này ok chưa
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Capture.PNG
Lần xem:	17
Size:		21.6 KB
ID:		51426

  4. #4
    Ngày gia nhập
    01 2017
    Bài viết
    0

    truoc tien cam on thanh vien nhiet tinh NguNhuheo rat nhieu,
    e xin dua ra thuat toan:
    4625 = 4000 + 600 + 20 + 5 (muon chì còn một con số thì mình chia theo don vị, vi dụ 400/100= 4).
    không biết e nghỉ vậy có đúng ko?
    Đã được chỉnh sửa lần cuối bởi quangdi : 13-01-2017 lúc 02:56 PM.

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

    Trích dẫn Nguyên bản được gửi bởi quangdi Xem bài viết
    truoc tien cam on thanh vien nhiet tinh NguNhuheo rat nhieu,
    e xin dua ra thuat toan:
    4625 = 400 + 600 + 20 + 5 (muon chì còn một con số thì mình chia theo don vị, vi dụ 400/100= 4).
    không biết e nghỉ vậy có đúng ko?
    Cái đó là bạn ghép con số lại, nhưng ghép cũng sai, phải là 4000 + 600 + 20 + 5 chứ
    muốn cắt từng chữ số của 1 số, ta lấy số đó chia cho 10 lấy số dư
    Ví dụ số 4625:
    4625 chia cho 10 , đc 462 dư 5
    lấy 462 chia 10 được 46 dư 2
    lấy 46 chia 10 được 4 dư 6
    lấy 4 chia 10 được 0 dư 4
    vậy là đã cắt số xong

  6. #6
    Ngày gia nhập
    01 2017
    Bài viết
    3

    Mặc định tính tong các số hạng của một dãy số,

    //Code C tham khao
    #include <stdio.h>

    main()
    {
    int n,s=0,n1;
    printf("Nhap so n can xu ly (n>0):");
    scanf("%d",&n);
    if(n<=0)
    printf("Sai dkien.Nhap lai\n");
    while (n>0)
    {
    n1=n%10;
    s+=n1;
    n/=10;
    }
    printf("Tong cac chu so cua n: %d \n",s);
    }

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

    Trích dẫn Nguyên bản được gửi bởi dragonteeth Xem bài viết
    //Code C tham khao
    #include <stdio.h>

    main()
    {
    int n,s=0,n1;
    printf("Nhap so n can xu ly (n>0):");
    scanf("%d",&n);
    if(n<=0)
    printf("Sai dkien.Nhap lai\n");
    while (n>0)
    {
    n1=n%10;
    s+=n1;
    n/=10;
    }
    printf("Tong cac chu so cua n: %d \n",s);
    }
    Chỗ này:
    Code:
    	if(n<=0)
    		printf("Sai dkien.Nhap lai\n");
    ko có vòng lặp thì lấy cái gì nhập lại ?

  8. #8
    Ngày gia nhập
    01 2017
    Bài viết
    3

    Cách 1: Thoát ra chạy lại
    Cách 2: Sửa lại ở chỗ này:
    -------
    int n,s=0,n1;
    back:printf("Nhap so n can xu ly (n>0):");
    scanf("%d",&n);
    if(n<=0)
    {printf("Sai dkien.Nhap lai\n");
    goto back;
    }
    while (n>0)
    ---------

    - - - Nội dung đã được cập nhật ngày 13-01-2017 lúc 01:58 PM - - -

    dsasddfsadfasdfasdfasdfasdfsadfsdfasdfsdf

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

    Trích dẫn Nguyên bản được gửi bởi quangdi Xem bài viết
    truoc tien cam on thanh vien nhiet tinh NguNhuheo rat nhieu,
    e xin dua ra thuat toan:
    4625 = 400 + 600 + 20 + 5 (muon chì còn một con số thì mình chia theo don vị, vi dụ 400/100= 4).
    không biết e nghỉ vậy có đúng ko?
    Cách này rất khó thực hiện. Điểm căn bản là làm sao biết số 4 nằm ở hàng nghìn, số 6 nằm ở hàng trăm, vân vân. Mắt nhìn thì biết nhưng máy tính làm cách nào?

    Có ít nhất là 2 thuật toán:

    1. thuật toán thứ nhất là làm đúng như mắt nhìn, đem dổi số thành chuỗi. Và cứ mỗi chữ số (char) thì là một số hạng. Thuật toán đơn giản, dễ hiểu nhưng tốn năng lượng máy.

    2. thuật toán thứ hai là lấy từ từ bằng cách chia số. Thuật toán này lại chia ra làm 2 cách:

    2.1. Cách lấy số hàng đơn vị:
    - chia số cho 10 lấy số dư. Như vậy số dư tức là chữ số hàng đơn vị
    - sau khi đã có số hàng đơn vị thì chuyển qua xét thương số. Số hạng hàng đơn vị của thương số chính là số hạng hàng chục của số ban đầu.
    - tiếp tục làm con toán chia 10 như trên thì sẽ lấy được số hạng hàng chục.
    - tiếp tục với thương số thì sẽ được các số hạng khác.
    Lưu ý là trong thuật toán này thì toán tử % chính là toán tử lấy số dư (xem các code trên). Tuy nhiên vì toán tử % được thực hiện bằng cách chia, nhân và trừ cho nên ngừoi ta cũng có thể tối ưu hóa code bằng cách tự làm con toán chia nhân trừ.

    2.2. cách chia mò:
    - Khởi đầu bằng cách chia cho mọt số rất lớn. Ví dụ 1.000.000.000
    - Cứ mỗi vòng lặp, tụt xuống 1 số không, tức là xuống 100.000.000
    - Cộng dồn thương số (kết quả của phép chia)
    - khi số chia tụt xuóng dưới 1 thì không phải chia nữa, dứt vòng lặp

  10. #10
    Ngày gia nhập
    01 2013
    Bài viết
    1,343

    Thực ra đổi ra chuỗi thì bài ko còn ý nghĩa thư viện nó làm rồi.

    2.2: làm vậy phải #ifdef rồi #else mới ra đúng. Nếu ghi rõ intxy_t (xy là 8,16,32 hay 64) thì ko sao, nhưng mà nó vẫn dở hơn, vì số nhỏ với số lớn nhiều bước ngang nhau (?!), trong khi đọc ngược thì số nhỏ đọc nhanh hơn.

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