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

Đề tài: Bài tập chèn số vào mảng bị lỗi, nhờ các bạn sửa giúp mình

  1. #1
    Ngày gia nhập
    07 2012
    Bài viết
    1

    Mặc định Bài tập chèn số vào mảng bị lỗi, nhờ các bạn sửa giúp mình

    Mọi người check giúp mình lỗi này với. Đề bài là

    Yêu cầu:
    1. Nhập các số nguyên cho 1 mảng (kết thúc khi nhập vào số 0).
    2. Nhập 1 số nguyên n
    3. Xóa vị trí xuất hiện đầu tiên của n trong mảng.
    4. Thêm n vào sau số chẵn đầu tiên của mảng. Nếu mảng không có số chẵn thì thêm vào cuối cùng.
    5. Xóa tất cả các vị trí lặp của mảng. Phần tử nào xuất hiện nhiều lần thì chỉ giữ lại phần tử đầu tiên.

    Bài này mình làm đến ý thứ 4 thì bị lỗi. Mình làm được cho nó thêm n vào sau số chẵn rồi nhưng khi in ra nó lai in theo mảng của yêu cầu số 2 chứ không in theo mảng đầy đủ mình nhập. Giờ mình muốn
    khi in mảng ở yêu cầu số 4 thì nó sẽ không liên quan gì mảng ở yêu cầu số 3 thì phải làm thế nào?

    Đây là code của mình.
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include "myLib.h"
    
    main()
    {
        int arr[100], day, i = 0, n, size = 0, k, tam;
        do
        {
            printf("Nhap phan tu thu %d (Nhan 0 de ket thuc): ", i + 1);
            scanf("%d", &day);
            if(day > 0)
            {
                arr[i] = day;
                i++;
            }
            size++;
        }while(day != 0);
        /*Nhap n*/
        printf("\nNhap mot so nguyen n: ");
        scanf("%d", &n);
        //In ra mang truoc khi xoa va chen//
        printf("\nMang truoc khi xoa va chen:");
        for(i = 0; i < size - 1; i++)
            printf("%3d", arr[i]);
        //xoa vi tri dau tien cua n//
        if(n != 0)
            for(i = 0; i < size; i++)
            {
                if(arr[i] == n)
                {
                    for(k = i; k < size - 1; k++)
                        arr[k] = arr[k + 1];
                    size--;
                    break;
                }
            }
        //In ra day moi//
        printf("\nMang sau khi xoa vi tri dau tien cua %d: ", n);
        for(i = 0; i < size - 1; i++)
            printf("%3d", arr[i]);
        chenso(arr, &size, n);
        getch();
    }
    Còn đây là thư viện myLib.h của mình
    Code:
    #include <stdio.h>
    
    void chenso(int arr[], int *size, int n)
    {
        int j, tam;
        for(j = 0; j < *size; j++)
            if(arr[j]%2 == 0)
            {
                *size = *size + 1;
                for(tam = *size; tam > j; tam--)
                    arr[tam + 1] = arr[tam];
                arr[j + 1] = n;
                break;
            }
        printf("\nMang sau khi chen so n vao sau so chan dau tien: ");
        for(j = 0; j < *size - 1; j++)
            printf("%3d", arr[j]);
    }
    Còn đây là ảnh khi chạy của bài này:


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

    Trích dẫn Nguyên bản được gửi bởi trunganh2810 Xem bài viết
    Mọi người check giúp mình lỗi này với. Đề bài là

    Yêu cầu:
    1. Nhập các số nguyên cho 1 mảng (kết thúc khi nhập vào số 0).
    2. Nhập 1 số nguyên n
    3. Xóa vị trí xuất hiện đầu tiên của n trong mảng.
    4. Thêm n vào sau số chẵn đầu tiên của mảng. Nếu mảng không có số chẵn thì thêm vào cuối cùng.
    5. Xóa tất cả các vị trí lặp của mảng. Phần tử nào xuất hiện nhiều lần thì chỉ giữ lại phần tử đầu tiên.

    Bài này mình làm đến ý thứ 4 thì bị lỗi. Mình làm được cho nó thêm n vào sau số chẵn rồi nhưng khi in ra nó lai in theo mảng của yêu cầu số 2 chứ không in theo mảng đầy đủ mình nhập. Giờ mình muốn
    khi in mảng ở yêu cầu số 4 thì nó sẽ không liên quan gì mảng ở yêu cầu số 3 thì phải làm thế nào?

    Đây là code của mình.
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include "myLib.h"
    
    main()
    {
        int arr[100], day, i = 0, n, size = 0, k, tam;
        do
        {
            printf("Nhap phan tu thu %d (Nhan 0 de ket thuc): ", i + 1);
            scanf("%d", &day);
            if(day > 0)
            {
                arr[i] = day;
                i++;
            }
            size++;
        }while(day != 0);
        /*Nhap n*/
        printf("\nNhap mot so nguyen n: ");
        scanf("%d", &n);
        //In ra mang truoc khi xoa va chen//
        printf("\nMang truoc khi xoa va chen:");
        for(i = 0; i < size - 1; i++)
            printf("%3d", arr[i]);
        //xoa vi tri dau tien cua n//
        if(n != 0)
            for(i = 0; i < size; i++)
            {
                if(arr[i] == n)
                {
                    for(k = i; k < size - 1; k++)
                        arr[k] = arr[k + 1];
                    size--;
                    break;
                }
            }
        //In ra day moi//
        printf("\nMang sau khi xoa vi tri dau tien cua %d: ", n);
        for(i = 0; i < size - 1; i++)
            printf("%3d", arr[i]);
        chenso(arr, &size, n);
        getch();
    }
    Còn đây là thư viện myLib.h của mình
    Code:
    #include <stdio.h>
    
    void chenso(int arr[], int *size, int n)
    {
        int j, tam;
        for(j = 0; j < *size; j++)
            if(arr[j]%2 == 0)
            {
                *size = *size + 1;
                for(tam = *size; tam > j; tam--)
                    arr[tam + 1] = arr[tam];
                arr[j + 1] = n;
                break;
            }
        printf("\nMang sau khi chen so n vao sau so chan dau tien: ");
        for(j = 0; j < *size - 1; j++)
            printf("%3d", arr[j]);
    }
    Còn đây là ảnh khi chạy của bài này:

    zậy là phải trở về trạng thái ban đầu của mảng trước đó!!!
    khi bạn xóa, cái phần tử đầu tiên có giá trị là n, vậy thì bạn lưu lại cái vt mà bạn đã xóa đi
    sau thao tác đó xong thì bạn thêm n lại vào đúng ngay vt đó!!!
    rồi thực hiện câu 4!!!

  3. #3
    Ngày gia nhập
    07 2012
    Bài viết
    1

    Mặc định Bài tập chèn số vào mảng bị lỗi, nhờ các bạn sửa giúp mình

    Trích dẫn Nguyên bản được gửi bởi utkunglt Xem bài viết
    zậy là phải trở về trạng thái ban đầu của mảng trước đó!!!
    khi bạn xóa, cái phần tử đầu tiên có giá trị là n, vậy thì bạn lưu lại cái vt mà bạn đã xóa đi
    sau thao tác đó xong thì bạn thêm n lại vào đúng ngay vt đó!!!
    rồi thực hiện câu 4!!!
    Mình chưa hiểu lắm rõ, bạn check code giúp mình đựoc k?

  4. #4
    Ngày gia nhập
    02 2010
    Bài viết
    113

    Trích dẫn Nguyên bản được gửi bởi trunganh2810 Xem bài viết
    Mình chưa hiểu lắm rõ, bạn check code giúp mình đựoc k?
    mình ngu lắm hok bít code đâu!!!
    mảng của bạn:
    C Code:
    1. giá trị: 1 2 3 4 5
    2. vị trí:  0 1 2 3 4
    nhập n=5
    xóa phần tử có giá trị là 5 xuất hiện đầu tiên trong mảng thì vị trí lúc này là 4! lưu lại vị trí này!!!
    sau khi xóa thì chèn cái giá trị bạn vừa xóa. tức là 5 vào vị trí thứ 4 vào mảng(lúc này có phải ta được cái mảng như ban đầu hok?)
    út thấy cái này là dễ nhất!!!
    rồi thực hiện câu 4 của bạn!!!

  5. #5
    Ngày gia nhập
    07 2012
    Bài viết
    1

    Mặc định Bài tập chèn số vào mảng bị lỗi, nhờ các bạn sửa giúp mình Trả lời đề tài

    Lưu lại vị trí của nó rồi sau đó chèn lại vào vị trí cũ thì làm như thế nào nhỉ. Phần mảng mình cũng mới học nên có một số cái k được rõ lắm.

  6. #6
    Ngày gia nhập
    02 2010
    Bài viết
    113

    Mặc định Bài tập chèn số vào mảng bị lỗi, nhờ các bạn sửa giúp mình

    C++ Code:
    1. vt// là vt mà bạn vừa xóa giá trị n
    2. n// là giá trị mà bạn vừa xóa xong
    3. for(int i=n;i>=k+1;i--)
    4.        a[i]=a[i-1]; //dời các phần tử từ vt k lên 1,
    5. a[vt]=n;// gán lạ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