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

Đề tài: Cần giúp gấp!!! MẢNG...

  1. #1
    No Avatar
    tuoanh_ftu Khách

    Angry Cần giúp gấp!!! MẢNG...

    ai giải thích giúp em đoạn code sau với: (cái đoạn tô xanh ấy ạ)
    <nhập vào 2 mảng, sku và unit, nếu sku giống nhau thì cộng unit tương ứng lại>

    Code:
     
     #include <stdio.h>
     #include <conio.h>
     #define max 200
    
     int main () {
     	int sku[max], code;
       int units[max], accountedFor[max];
       int i, j, nItems, total;
    
       printf("enter skus and units sold\n");
       nItems = 0;
       do {
       	printf("sku (0 to stop): ");
          scanf("%d", &sku[nItems]);
          if (sku[nItems] != 0) {
          	printf("Units sold: ");
             scanf("%d", &units[nItems]);
             nItems++;
          } else
          	break;
       } while (nItems < max);
    
       for (i = 0; i < nItems; i++)
       	accountedFor[i] = 0;
    
       printf("Sku \t Units sold\n");
    
       for (i = 0; i < nItems; i++) {
       	if (accountedFor[i] != 1) {
          	code = sku[i];
             total = 0;
             for (j = i; j < nItems; j++) {
             	if (code == sku[j]) {
                	total += units[j];
                   accountedFor[j] = 1;
                }
             }
             printf("%06d \t %010d\n", code, total);
          }
       }   getch();
     }
    (code xin của một bạn bên fu)
    Ai giải thích giúp e thuật toán, tư tưởng tổng quát liên quan đến bài trên thì hay quá thanks
    Đã được chỉnh sửa lần cuối bởi tuoanh_ftu : 22-11-2008 lúc 02:16 PM.

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

    nếu sku giống nhau thì cộng unit tương ứng lại.tớ không hiểu câu này lám cậu có thể nói rõ hơn không.có phải là hai phần tử trong mảng sku giống nhau thì cộng các giá trị cùng vị trí ở mảng units không

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

    Mặc định 1

    Code:
    for (i = 0; i < nItems; i++) {
       	if (accountedFor[i] != 1) {
          	code = sku[i];
             total = 0;
             for (j = i+1; j < nItems; j++) {
             	if (code == sku[j]) {
                	total += units[j];
                   accountedFor[j] = 1;
                }
             }
             printf("%06d \t %010d\n", code, total);
          }
       }   getch();
    theo như tớ hiểu thì là như vậy.j=i thay bằng j=i+1.
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 22-11-2008 lúc 05:47 PM.

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

    @tuoanh_ftu

    - Thứ nhất bạn nên đưa lên đây cả cái đầu bài.
    - Thứ hai code trình bày ẩu quá đọc đến đau mắt.

    Theo tôi hiểu, đoạn code của bạn thắc mắc nó tính in ra màn hình các giá trị khác nhau trong mảng sku[] và tổng các giá trị trong units[] ở vị trí tương ứng với các giá trị bằng giá trị của sku đang xét.

    Nói xong đọc lại cũng chẳng hiểu mình viết gì, vd như này, bạn cố gắng hiểu:

    sku (1;2;3;1;2;1)
    units(1;2;3;4;5;6)

    - giá trị 1 xuất hiện trong sku 3 lần với các vị trí tương ứng của nó trong units ta có total thu đc là 1+4+6
    - giá trị 2 xuất hiện trong sku 2 lần với các vị trí tương ứng của nó trong units ta có total thu đc là 2+5
    - giá trị 3 xuất hiện trong sku 1 lần với các vị trí tương ứng của nó trong units ta có total thu đc là 3

    * Mảng accountedFor[] chỉ đóng vài trò đánh dấu giá trị ở vị trí đó đã xét hay chưa, tránh lặp lại nhiều lần.

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

    ạc ạc rút cuộc đề bài hiểu như thế nào nhỉ?

  6. #6
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Mặc định Cần giúp gấp!!! MẢNG...

    Bài này tính tổng lượng hàng bán được của một sản phẩm thôi mà . Mảng sku lưu mã sản phẩm , mảng units lưu số lượng hàng bán ra của các sản phẩm . Mảng acountedFor dùng để đánh dấu xem đã xét sản phẩm thứ tự i chưa . Lúc đầu chưa xét nên gán tất cả bằng 0 .
    C Code:
    1. for (i = 0; i < nItems; i++) { // Xét nItems sản phẩm
    2.     if (accountedFor[i] != 1) { //Nếu sản phẩm thứ i chưa được xét
    3.          code = sku[i];//Lấy mã sản phẩm
    4.          total = 0;//Lúc đầu tổng = 0 chỗ này hình như không chính xác phải là total=units[i] chứ
    5.          for (j = i+1; j < nItems; j++) { //Xét xem có sản phẩm nào cùng mã với i không
    6.             if (code == sku[j]) { //Nếu hai sản phẩm là giống nhau (cùng mã ) --> cộng số lượng sản phẩm đã bán lại
    7.                   total += units[j];
    8.                   accountedFor[j] = 1;//Đánh dấu sản phẩm này đã xét rồi lần sau không xét tới nó nữa
    9.                }
    10.          }
    11.          printf("%06d \t %010d\n", code, total);
    12.       }
    13. }  
    14. getch();
    I'm superman

  7. #7
    No Avatar
    tuoanh_ftu Khách

    ok. thanks mọi người

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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