Trang 1 trên tổng số 5 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 47 kết quả

Đề tài: Tìm số lớn nhất tạo ra từ các chữ số của 2 số đã cho

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định Tìm số lớn nhất tạo ra từ các chữ số của 2 số đã cho

    Cho 2 số nguyên dương A, B. Hãy tạo số C từ các chữ số của A và B (giữ nguyên trật tự) sao cho giá trị của C là lớn nhất

    giữ nguyên trật tự ví dụ :
    2635 và 3521
    thì trật tự trong 2635 là 2->6->3->5
    3521 là 3->5->2->1
    sô tìm đc là 35263521

    Yêu cầu :
    + Code chạy đúng : 5 điểm

    + Code ngắn gọn, mạch lạch, trình bày sáng sủa : 1 điểm

    + Cấu trúc dữ liệu đơn giản, logic : 1 điểm

    + ít biến local :ít 5 biến local thì 1 điểm, 6 biến local thì 0.5 điểm, nhiều hơn ko được điểm
    Chú ý : (không tính đến các tham số hình thức trong tiêu đề các hàm)

    + Điểm kĩ năng : tối đa 2 điểm, sẽ đánh giá nhận xét trực tiếp

    Tìm ra số bằng đệ quy : 4 điểm (nếu max thì vẫn là 10 điểm, chỉ tính điểm nếu phương thức tìm ra số cần tìm là đệ quy, các phương thức khác ko tính)
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Cám ơn tất cả các bạn đã quan tâm đến topic này và trả lời bài viết của mình .
    Cám ơn các bạn rất nhiều
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Tớ thì cứ strcmp để compare rồi strcat lại .
    Đã được chỉnh sửa lần cuối bởi tauit_dnmd : 10-08-2010 lúc 03:11 AM.

  4. #4
    Ngày gia nhập
    10 2009
    Nơi ở
    ThăngLong.delay(1000);
    Bài viết
    313

    Bắt buộc phải đệ quy à các bác, code này ko đệ quy thì dc mấy
    PHP Code:
    #include<iostream>
    using namespace std;
    int main()
    {
        
    char a[20]="2635"b[20]="3521",c[40];
        
    int i=0,j=0,n=0;
    //    cin.get(a,20);
    //    cin.sync();
    //    cin.get(b,20);
        
    while (a[i] && b[j])
        {
            if (
    a[i] >= b[j])
                
    c[n++]=a[i++];
            else
                
    c[n++]=b[j++];
        }
        while (
    a[i])
            
    c[n++]=a[i++];
        while (
    b[j])
            
    c[n++]=b[j++];
        
    c[n]=NULL;
        
    cout <<<<endl;
        return 
    0;


  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    Tớ thì cứ strcmp để compare rồi strcat lại .
    ko phải đâu td à, mình phải trộn số thôi, nếu ko thì strcmp và strcat làm chi,
    mình cout liên tiếp mà ko cách ra là được mà

    Trích dẫn Nguyên bản được gửi bởi vietduc Xem bài viết
    Bắt buộc phải đệ quy à các bác, code này ko đệ quy thì dc mấy
    PHP Code:
    #include<iostream>
    using namespace std;
    int main()
    {
        
    char a[20]="2635"b[20]="3521",c[40];
        
    int i=0,j=0,n=0;
    //    cin.get(a,20);
    //    cin.sync();
    //    cin.get(b,20);
        
    while (a[i] && b[j])
        {
            if (
    a[i] >= b[j])
                
    c[n++]=a[i++];
            else
                
    c[n++]=b[j++];
        }
        while (
    a[i])
            
    c[n++]=a[i++];
        while (
    b[j])
            
    c[n++]=b[j++];
        
    c[n]=NULL;
        
    cout <<<<endl;
        return 
    0;

    code chạy đúng : 4 điểm
    ( trừ 1 điểm vì kiểu dữ liệu ban đầu là số, ko phải chuỗi , thiếu 1 bước)

    + Code ngắn gọn, mạch lạch, trình bày sáng sủa : 1 điểm


    + Cấu trúc dữ liệu đơn giản, logic : 1 điểm

    + ít biến local :0 điểm


    + Điểm kĩ năng : đạt 1 điểm bao gồm
    _ có ý tưởng trộn đúng yêu cầu, tốt 0.25 điểm
    _ đoạn code đã nghĩ đến sự an toàn , tức là sau khi hết vòng lặp while chính sử dụng đến 2 vòng lặp while con, kĩ năng này xuất hiện trong trộn run, tốt 0.25
    _code dạng NUI , chủ yếu quan tâm đến giải thuật , tốt 0.25
    _ Kĩ năng dùng ++ và 3 biến index tốt, biết ghép null vào cuối chuỗi,kĩ năng dùng biểu thức logic,tốt0.25

    Ko được phần 1 điểm còn lại vì
    _ Chưa tận dụng được thế mạnh của bài cho (-0.5 điểm)
    _ Code còn hơi dài, áp dụng hơi dập khuân kĩ năng trong trộn run, mà chưa nghĩ đến đặc điểm riêng của chuỗi, nên code trộn còn hơi dài (-0.5 điểm)

    Total : 7 điểm
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định Tìm số lớn nhất tạo ra từ các chữ số của 2 số đã cho

    quên mất

    PHP Code:
    ít biến local :0 điểm 
    Vì cố tình thay đổi để bài, nên dù có 6 biến nên vẫn ko được chấp nhận

    P/S : mình chấm hơi kĩ, 7 điểm này là điểm adv chứ ko phải điểm normal
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  7. #7
    Ngày gia nhập
    10 2009
    Nơi ở
    ThăngLong.delay(1000);
    Bài viết
    313

    em viết thành như thế này nhìn có vẻ gọn hơn, không biết đúng ý ban giám khảo không
    PHP Code:
    while (a[i]&&(c[n++]=a[i++]));
    while (
    b[j]&&(c[n++]=b[j++])); 

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi vietduc Xem bài viết
    em viết thành như thế này nhìn có vẻ gọn hơn, không biết đúng ý ban giám khảo không
    PHP Code:
    while (a[i]&&(c[n++]=a[i++]));
    while (
    b[j]&&(c[n++]=b[j++])); 
    đặc biệt ko chấp nhận toán tử gán trong biểu thức điểu kiện,

    gợi í nhé :
    dù có viết như thế thì vẫn là 3 vòng lặp while mà
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

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

    PHP Code:
    // ----------------------------------------------------------------------------
    // Program Name    : maxnum.c
    // Creation Date: 2010.08.10
    // Last Modified: 2010.08.10
    // Copyright (c)2010 by Phuc Nguyen <vietechno@yahoo.co.uk>
    // Desc                    : Find Max number 
    // Compile      : 
    // ----------------------------------------------------------------------------
    //    Author                    Date                    Desc
    //    ---------------    -------------    ---------------------------------------------
    //    Phuc Nguyen            2010.08.10        Create New
    // ----------------------------------------------------------------------------
    #include <stdio.h>

    // --------------------------------------------------------- 
    //  Main Entry Point
    // --------------------------------------------------------- 
    int main(int argc,char *argv[]) {
        
    // --------------------------------------------------------- 
      //  Check Valid Argument
      // --------------------------------------------------------- 
        
    if(argc != 3) {
            
    printf("Usage: %s <num1> <num2>\n"argv[0]); // edited
            
    return 0;
        }
        
        
    // --------------------------------------------------------- 
      //  To-do : Should Check Valid number here using isdigit()
      // --------------------------------------------------------- 
        
        
    char *ptr = (char *)malloc(sizeof(char)*(strlen(argv[1]) + strlen(argv[2]) + 1));
        if(
    ptr == NULL) {
            
    printf("malloc failed\n");
            return -
    1;
        }
        
        
    memset(ptr0x00sizeof(char)*(strlen(argv[1]) + strlen(argv[2]) + 1));
        
        
    int i 0;
        
    int j 0;
        
        while(
    argv[1][i] != '\0' && argv[2][j] != '\0') {
            
            if(
    argv[1][i] >= argv[2][j]) {
                *(
    ptr j) = argv[1][i];
                
    i++;
            } else {
                *(
    ptr j) = argv[2][j];
                
    j++;
            }
        }
        
        if(
    argv[2][j] != '\0') {
            
    strcat(ptr jargv[2] + j);
        }
        
        if(
    argv[1][i] != '\0') {
            
    strcat(ptr jargv[1] + i);
        }
        
        
    printf("Result : %s\n"ptr);
        
    free(ptr);
        return 
    0;

    Đã được chỉnh sửa lần cuối bởi vietechno : 10-08-2010 lúc 01:35 PM.

  10. #10
    Ngày gia nhập
    09 2009
    Nơi ở
    Hoa sơn tuyệt đỉnh
    Bài viết
    407

    Trích dẫn Nguyên bản được gửi bởi vietduc Xem bài viết
    Bắt buộc phải đệ quy à các bác, code này ko đệ quy thì dc mấy
    PHP Code:
    #include<iostream>
    using namespace std;
    int main()
    {
        
    char a[20]="2635"b[20]="3521",c[40];
        
    int i=0,j=0,n=0;
    //    cin.get(a,20);
    //    cin.sync();
    //    cin.get(b,20);
        
    while (a[i] && b[j])
        {
            if (
    a[i] >= b[j])
                
    c[n++]=a[i++];
            else
                
    c[n++]=b[j++];
        }
        while (
    a[i])
            
    c[n++]=a[i++];
        while (
    b[j])
            
    c[n++]=b[j++];
        
    c[n]=NULL;
        
    cout <<<<endl;
        return 
    0;

    test "2635" và "2721" đáp án là "27263521" phải hem?

    my houses
    my school
    tỐnG lÊ cHâN mAnG kỶ nIệM bUồN cHo AnH...

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

  1. Sửa máy tính, cài đặt windows, phần mềm tại nhà nhanh nhất, rẻ nhất, hiệu quả nhất …
    Gửi bởi hopluccc trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 08-07-2013, 02:07 PM
  2. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  3. Bài tập C++ NHập mảng một chiều gồm n phần tử kết thúc nhập khi nhập một chữ cái
    Gửi bởi thienthanoze trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 09-07-2012, 10:10 PM
  4. Bài tập C++ Viết phương trình nhập vào 1 chuỗi số.Hãy nhập vào 1 số.Đếm xem có bao nhiêu chữ số bạn vừa nhập
    Gửi bởi namtuocdn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-10-2011, 10:39 AM
  5. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-07-2011, 03:35 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