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

Đề tài: [Hỏi] Bài tập Kiểu dữ liệu nâng cao và sắp xếp

  1. #1
    Ngày gia nhập
    09 2008
    Nơi ở
    HÀ NỘI APTECH
    Bài viết
    4

    Wink [Hỏi] Bài tập Kiểu dữ liệu nâng cao và sắp xếp

    Mình có 1 Bài tập Kiểu dữ liệu nâng cao và sắp xếp :

    Xây dựng Menu cho các chương trình sau :
    1. Nhập số nguyên N ( đk 0<N<20 ) cái này thì dễ ^^ .
    2. Nhập thông tin học viên với họ tên và điểm thi ^^.
    3. hiển thị danh sách học viên ^^.
    4. Sắp xếp điểm thi từ cao xuống thấp ^^.

    Em làm như sau :
    C Code:
    1. // Xay Dung Menu:
    2. #include<conio.h>
    3. #include<stdio.h>
    4. #include<stdlib.h>
    5. struct hocvien
    6. {
    7.     char hoten[20];
    8.     int diem[10];
    9. }hv[10];
    10. void menu(void);
    11. void nhap(int *N);
    12. void nhaphv(int N,struct hocvien hv[10]);
    13. void danhsach(int N,struct hocvien hv[10]);
    14. void sapxep(int N, struct hocvien hv[10]);
    15. void main()
    16. {
    17.     int N,chon;
    18.     clrscr();
    19.     do{
    20.         menu();
    21.     printf("\t Lua chon Menu 1-2-3-4 :");
    22.     scanf("%d",&chon);
    23.     switch(chon)
    24.     {
    25.         case 1:
    26.             nhap(&N);
    27.             break;
    28.         case 2:
    29.             nhaphv(N, hv);
    30.             break;
    31.         case 3:
    32.             danhsach(N, hv);
    33.             break;
    34.         case 4:
    35.             sapxep(N, hv);
    36.             break;
    37.         default:
    38.             exit(0);
    39.     }
    40.     }   while(chon!=5);
    41.     getch();
    42. }
    43. void menu(void)
    44. {
    45.     printf("\n 1. Nhap N ( 0<N<20 ) ");
    46.     printf("\n 2. Nhap 10 hoc vien ");
    47.     printf("\n 3. Danh sach hoc vien ");
    48.     printf("\n 4. Sap xem diem thi cao -> thap");
    49. }
    50. void nhap(int *N)
    51.     {
    52.     printf(" Nhap so nguyen N (dieu kien 0<N<20) :");
    53.     scanf("%d",N);
    54.     while(*N>=20||*N<=0)
    55.     {
    56.         printf("Nhap sai -> Nhap lai N:");
    57.         scanf("%d",N);
    58.     }
    59. }
    60. void nhaphv(int N, struct hocvien hv[10])
    61. {
    62.     int i;
    63.     for(i=0;i<N;i++)
    64.     {
    65.         printf(" Hoc Vien %d",hv[i]);
    66.         scanf("%s",hv[i].hoten);
    67.         printf(" Diem thi ");
    68.         scanf("%d",&hv[i].diem);
    69.     }
    70. }
    71. void danhsach(int N, struct hocvien hv[10])
    72. {
    73.     int i;
    74.     for(i=0;i<N;i++)
    75.     {
    76.         printf(" Danh sach ho ten hoc vien:%d",hv[i].hoten);
    77.         printf(" Danh sach diem thi:%d",hv[i].diem);
    78.     }
    79. }
    80. void sapxep(int N,struct hocvien hv[10])
    81. {
    82.     int i,j;
    83.         for(i=0;i<N;i++);
    84.         {
    85.             for(j<N-1;j>i;j--)
    86.             {
    87.                 printf(" Sap xep cao -> thap :%d\t\n",j);
    88.             }
    89.         }
    90. }

    Hộ em phần menu 3 và 4 ! nhì nhằng quá !
    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
         char dola;
         dola='$';
         printf(" Em chỉ thích cái này: %c", dola);
         getch();
    }
    Press Anykey to kill ADMINISTRATOR of this Computer.

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

    Chào bạn. Bài của bạn không ổn từ trên xuống dưới, bạn tự xem lại từng phần đi đã

    Code:
    struct hocvien
    {
        char hoten[20];
        int diem[10];
    }hv[10];
    - Bạn định nhập cho mỗi người bao nhiêu điểm mà khai báo mảng điểm, mình thấy ở hàm nhaphv hình như mỗi người chỉ có một điểm thì phải. Như vậy là có mâu thuẫn rồi.

    - Mảng Struct của bạn chỉ khai báo 10 phần tử, sao điều kiện nhập N là tử 0->20 như vậy thì dùng sao được, hay ở đây N không phải số phần tử. Nếu N là số phần tử thì cho luôn vào hàm nhaphv tách ra làm gì như vậy.

    - Phần in bạn nên xuống dòng cho rõ dàng 1 chút.

    Code:
    void sapxep(int N,struct hocvien hv[10])
    {
        int i,j;
        struct hocvien temp;
            for(i=0;i<N-1;i++);
                for(j=i+1;j<N;j++)
                        if (hv[i].diem<hv[j].diem)
                        {
                                temp=hv[i];
                                hv[i]=hv[j];
                                hv[j]=temp;
                        }
    }
    Bạn thử sửa xem sao đã nhé!

  3. #3
    Ngày gia nhập
    09 2008
    Nơi ở
    HÀ NỘI APTECH
    Bài viết
    4

    cảm ơn đã giúp ! sẽ sửa sẽ sửa
    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
         char dola;
         dola='$';
         printf(" Em chỉ thích cái này: %c", dola);
         getch();
    }
    Press Anykey to kill ADMINISTRATOR of this Computer.

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