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

Đề tài: bài tập ko biết sai ở đâu?

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

    Mặc định bài tập ko biết sai ở đâu?

    Đề bài cô cho như thế này các bác ạ:
    Định nghĩa một cấu trúc nhân viên gồm:
    - mã nhân viên
    - họ tên
    - Số người phụ thuộc
    Viết một chương trình gồm
    - Khai báo một mảng con trỏ có kiểu cấu trúc nhân viên và số nhân viên
    n
    - Một hàm input(a) nhập một sanh sách a gồm n nhân viên
    - Một hàm output(a) hiển thị danh sách nhân viên a
    - Một hàm sortAZ(a) sắp xếp nhân viên theo thứ tự tên A->Z
    - Một hàm sortChildren(a) sắp xếp nhân viên theo số người phụ thuộc giảm
    dần
    - Chương trình hiển thị danh sách nhân viên theo 2 cách sắp xếp trên
    Tên chương trình Lab12_staffstruct.c
    Gợi ý: sử dụng strcmp(s1,s2) để so sánh hai chuỗi, hàm trả về giá trị 0:nếu bằng nhau, <0
    nếu s1<s2 và ngược lại nếu s1>s2
    và bài em viết như sau:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<stdlib.h>
    #define max 100
    typedef struct{
    int manv, phu_thuoc;
    char ten[max];
    }nhanvien;
    void input(nhanvien *a,int n);
    void output(nhanvien *a,int n);
    void sortAZ(nhanvien *a,int n);
    void sortChildren(nhanvien *a,int n);

    int main()
    {
    int n;
    nhanvien *nv;
    printf("Nhap tong so nhan vien: ");
    scanf("%d", &n);
    nv=calloc(n,sizeof(nhanvien));
    input(nv,n);
    output(nv,n);
    getch();
    return 0;
    }

    void input(nhanvien *nv, int n)
    {
    int i;
    for(i=0;i<n;i++)
    {
    printf("Nhap nhan vien thu %d\n",i+1);
    printf("Ma nv: ");
    scanf("%d",&nv[i].manv);
    printf("Ten: ");
    fflush(stdin);
    gets(nv[i].ten);
    printf("So nguoi phu thuoc: ");
    scanf("%d",&nv[i].phu_thuoc);
    }
    }
    void output(nhanvien *nv,int n)
    {
    int i;
    sortChildren(nv,n);
    printf("\n\nDANH SACH SAP XEP NGUOI PHU THUOC Giam dan\n");
    printf("MaNV\tTEN\t\t\tPHU THUOC\n");
    for(i=0;i<n;i++)
    printf("%d\t%s\t\t\t%d\n",nv[i].manv,nv[i].ten,nv[i].phu_thuoc);
    sortAZ(nv,n);
    printf("\nDANH SACH SAP XEP THEO TEN A-->Z\n");
    printf("MaNV\tTEN\t\tPHU THUOC\n");
    for(i=0;i<n;i++)
    printf("%d\t%s\t\t%d\n",nv[i].manv, nv[i].ten, nv[i].phu_thuoc);


    }
    void sortAZ(nhanvien *nv,int n)
    {
    int i;
    nhanvien temp[max];
    for(i=0;i<n;i++)
    {
    if(strcmp(nv[i].ten,nv[i+1].ten)>0){
    temp[0]=nv[i];
    nv[i]=nv[i+1];
    nv[i+1]=temp[0];
    }
    }
    }
    void sortChildren(nhanvien *nv,int n)
    {
    int i;
    nhanvien temp[max];
    for(i=0;i<n;i++)
    {
    if(nv[i].phu_thuoc < nv[i+1].phu_thuoc){
    temp[0]=nv[i];
    nv[i]=nv[i+1];
    nv[i+1]=temp[0];
    }
    }
    }
    đến lúc compile nó ko báo lỗi nhưng lúc chạy lại có lỗi ở chỗ sắp xếp theo số người phụ thuộc, ai pro xin cho lời giải thích với

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    11

    Thuật toán sort của bạn có độ phức tạp là N nhanh nhất trong các thuật toán sort mà mh biết =))))

    for của bạn chạy từ 0 -> (N-1)

    khi i = N - 1 => nv[i+1] = nv[N-1+1] => fail

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

  1. Lỗi chương trình không nhận biến(không return được biến từ public sang main)
    Gửi bởi nang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 02-10-2011, 06:04 PM
  2. Thuộc tính khóa ngoài( tham chiếu) biến mất khi biến đổi từ file XML sang DataTable
    Gửi bởi itmanhieu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 17-08-2011, 08:02 PM
  3. làm sao để 2 biến Datetime trừ nhau ra biến float or double?
    Gửi bởi robocon1183 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 10-12-2009, 05: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