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

Đề tài: bài tập C về kiểu structure để quản lý đăng ký biển số, chạy không đúng?

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

    Mặc định bài tập C về kiểu structure để quản lý đăng ký biển số, chạy không đúng?

    em có bài tập này mà code mãi chương trình chạy vẫn sai.hixxx.....hu!!!.die mất....

    Giả sử một đơn vị cấp biển số xe máy còn 100 biển số(trong khoảng 29G1 – 9000 đến 29G1 –9999) để cấp. Xây dựng chương trình quản lý dữ liệu và cấp biển cho đơn vị này như sau:
    Cho phép chọn thực hiện một trong các công việc:
    1) In danh sách biển số chưa được cấp .
    2) Nhập thông tin biển số đăng kí mới .
    3) In thông tin các biển số đã đăng kí.
    4) Thoát.
    Trong đó:
    - Danh sách 100 biển số ban đầu (đôi một khác nhau) , mỗi biển có Kí hiệu: 29G1 (kiểu kí tự , độ dài 4), S ố : được sinh ngẫu nhiên trong khoảng 9000 đến 9999 (kiểu nguyên), lưu vào một mảng cấp phát động các phần tử kiểu bienso (là 1 kiểu cấu trúc cần tự định nghĩa) .
    - Luôn cập nhật danh sách biển số chưa được cấp xoá các biển đã được cấp khỏi danh sách).
    - Nhập thông tin biển số đăng kí mới bao gồm: Biển số(kiểu bienso –cấp phát ngẫu nhiên trong số biển chưa được cấp) ; Tên chủ xe( không chứa dấu cách, độ dài tối đa 25 –nhập từ bàn phím ); Nhãn hiệu (không chứa dấu cách, độ dài tối đa 15 – nhập từ bàn phím )và lưu vào một mảng cấp phát động các phần tử kiểu dangki (là một kiểu cấu trúc cần tự định nghĩa).
    - In thông tin các biển số đã đăng kí chính xác theo bảng sau:
    ------ ---------------------------------------------------------
    | STT | Bien so dang ki | Ten chu xe | Nhan hieu |
    ---------------------------------------------------------------
    | 1 | 29G1 - 9366 | Nguyen Van An | Honda |
    | ... | | | |
    ------------------------------------------------------------

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. #include<time.h>
    5.  
    6. typedef struct bien_so
    7. {
    8.         char *ki_hieu;
    9.         int so;
    10.         }bien_so;
    11.  
    12. typedef struct dang_ki
    13. {
    14.         bien_so x;
    15.         char chu_xe[25];
    16.         char nhan_hieu[15];
    17.         }dang_ki;
    18.  
    19. bien_so *tao_100_bien_so();
    20. int kiem_tra(bien_so *, int, int);
    21. void dang_ki_bien_so(dang_ki *, bien_so *, int *, int *);
    22. void xoa_bien_so(bien_so *, int *, int);
    23. void in_danh_sach_dk(dang_ki *, int);
    24. void in_bien_so(bien_so *, int);
    25.        
    26. int main()
    27. {
    28.     int menu, n1 = 100, n2 = 0, i;
    29.     bien_so *a;
    30.     dang_ki b[100];
    31.     char kh[5] = "29G1";
    32.     a = (bien_so *)malloc(100*sizeof(bien_so));
    33.     a = tao_100_bien_so();
    34.     for(i = 0; i < n1; i++)
    35.         (a + i)->ki_hieu = kh;
    36.     while(menu != 4){
    37.         printf("CHON:\n");
    38.         printf("1. In danh sach bien so chua duoc cap\n");
    39.         printf("2. Nhap thong tin bien so dang ki moi\n");
    40.         printf("3. In thong tin cac bien so da dang ki\n");
    41.         printf("4. Thoat\n");
    42.         scanf("%d", &menu);
    43.        
    44.     switch(menu){
    45.         case 1: in_bien_so(a, n1);break;
    46.         case 2: dang_ki_bien_so(b, a, &n1, &n2);break;
    47.         case 3: in_danh_sach_dk(b, n2);break;
    48.         }
    49.         }
    50.     return 0;
    51.     }
    52.        
    53. bien_so *tao_100_bien_so()
    54. {
    55.         bien_so *a;
    56.         a = (bien_so *)malloc(100*sizeof(bien_so));
    57.         int i = 0, j;
    58.         while(i < 100)
    59.         {
    60.               srand(time(0));
    61.               (a + i) -> so = rand()%1000 + 9000;
    62.               if(kiem_tra(a, (a + i) -> so, i) == 0)
    63.                              i++;
    64.         }
    65.         return a;
    66.         }
    67.  
    68. int kiem_tra(bien_so *x, int n, int vi_tri)
    69. {
    70.     int i;
    71.     for(i = 0; i < vi_tri; i++){
    72.           if((x + i) -> so == n)
    73.                 return 1;
    74.                 }
    75.     return 0;
    76.     }
    77.  
    78. void dang_ki_bien_so(dang_ki *a1, bien_so *a2, int *n1, int *n2)
    79. {
    80.      int i=0;
    81.      
    82.      (a1 + *n1) -> x = *(a2 + i);
    83.      xoa_bien_so(a2, n2, i);
    84.      printf("bien so: %d\n", (a1 + *n1) -> x);
    85.      printf("nhap ten chu xe: ");
    86.      scanf("%s", (a1 + *n1) -> chu_xe);
    87.      printf("nhap ten nhan hieu xe: ");
    88.      scanf("%s", (a1 + *n1) -> nhan_hieu);
    89.      *n1++;
    90.      }
    91.  
    92. void xoa_bien_so(bien_so *a, int *n, int vi_tri)
    93. {
    94.      int i;
    95.      for(i = vi_tri; i < *n - 1; i++)
    96.            *(a + i) = *(a + i + 1);
    97.      *n--;
    98.      }
    99.  
    100. void in_danh_sach_dk(dang_ki *a, int n)
    101. {
    102.     int i;
    103.     printf("------------------------------------------------------\n");
    104.     printf("| STT | Bien so dang ki |   Ten chu xe  | Nhan hieu  |\n");
    105.     for(i = 1; i < n; i++){
    106.         printf("------------------------------------------------------\n");
    107.         printf("|  %d  | %s-%d | %s | %s |\n", i+1, (a+i)->x.ki_hieu, (a+i)->x.so, (a+i)->chu_xe, (a+i)->nhan_hieu);
    108.         }
    109.     printf("------------------------------------------------------\n");
    110. }
    111.  
    112. void in_bien_so(bien_so *a, int n)
    113. {
    114.     int i;
    115.     printf("bien so chua cap la:\n");
    116.     for(i = 0; i < n; i++)
    117.         printf("%s-%d\t", (a+i)->ki_hieu, (a+i)->so);
    118. }

    chương trình chỉ chạy được phần 1.còn lại là chạy sai.em không biết phải sửa lại chỗ nào.mong mọi người giúp đỡ.thankssssssssss........

  2. #2
    Ngày gia nhập
    02 2012
    Nơi ở
    Xanhpetecbua-Nga
    Bài viết
    34

    anh có sửa chút,xóa mất vài thứ code của em
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. #include<time.h>
    5.  
    6. typedef struct bien_so
    7. {
    8.         char *ki_hieu;
    9.         int so;
    10.         }bien_so;
    11.  
    12. typedef struct dang_ki
    13. {
    14.         bien_so x;
    15.         char chu_xe[25];
    16.         char nhan_hieu[15];
    17.         }dang_ki;
    18.  
    19. bien_so *tao_100_bien_so();
    20. int kiem_tra(bien_so *, int, int);
    21. void dang_ki_bien_so(dang_ki *, bien_so *,/*int *, */int *);
    22. //void xoa_bien_so(bien_so *, int *, int); khong can ham e nhe
    23. void in_danh_sach_dk(dang_ki *, int);
    24. void in_bien_so(bien_so *, int);
    25.        
    26. int main()
    27. {
    28.     int menu, n1 = 100, n2 = 0, i;
    29.     bien_so *a;
    30.     dang_ki b[100];
    31.     char kh[5] = "29G1";
    32.     //a = (bien_so *)malloc(100*sizeof(bien_so)); khong dc cap phat o day vi co cau duoi roi a = tao_100_bien_so();
    33.     a = tao_100_bien_so();
    34.     for(i = 0; i < n1; i++)
    35.         (a + i)->ki_hieu = kh;
    36.     while(menu != 4){
    37.         printf("\nCHON:\n");
    38.         printf("1. In danh sach bien so chua duoc cap\n");
    39.         printf("2. Nhap thong tin bien so dang ki moi\n");
    40.         printf("3. In thong tin cac bien so da dang ki\n");
    41.         printf("4. Thoat\n");
    42.         scanf("%d", &menu);
    43.        
    44.     switch(menu){
    45.         case 1: in_bien_so(a, n2);break;//chuyen n2 vao e nhe
    46.         case 2: dang_ki_bien_so(b, a,/*&n1*/&n2);break;
    47.         case 3: in_danh_sach_dk(b, n2);break;
    48.         }
    49.         }
    50.     return 0;
    51.     }
    52.        
    53. bien_so *tao_100_bien_so()
    54. {
    55.         bien_so *a;
    56.         a = (bien_so *)malloc(100*sizeof(bien_so));// ta cap phat bo nho trong nay roi
    57.         int i = 0, j;
    58.         while(i < 100)
    59.         {
    60.               //srand(time(0));
    61.               (a + i) -> so = rand()%1000 + 9000;
    62.               if(kiem_tra(a, (a + i) -> so, i) == 0)
    63.                              i++;
    64.         }
    65.         return a;
    66.         }
    67.  
    68. int kiem_tra(bien_so *x, int n, int vi_tri)
    69. {
    70.     int i;
    71.     for(i = 0; i < vi_tri; i++){
    72.           if((x + i) -> so == n)
    73.                 return 1;
    74.                 }
    75.     return 0;
    76.     }
    77.  
    78. void dang_ki_bien_so(dang_ki *a1, bien_so *a2,/* int *n1*/int *n2)//khong can truyen n1 e nhe
    79. {
    80.      //int i=0; bo cai nay di
    81.      
    82.      (a1 + *n2) -> x = *(a2 + *n2);//n2 het nhe
    83.      //xoa_bien_so(a2, n2, i);
    84.      printf("bien so: %s-%d\n", (a1 + *n2) -> x.ki_hieu,(a1 + *n2) -> x.so);//anh viet them cho dep:D
    85.      printf("nhap ten chu xe: ");
    86.      scanf("%s", (a1 + *n2) -> chu_xe);
    87.      printf("nhap ten nhan hieu xe: ");
    88.      scanf("%s", (a1 + *n2) -> nhan_hieu);
    89.      (*n2)++;//cho nay phai dong ngoac vao vi thu tu uu tien phep tinh
    90.      }
    91.  
    92. /*void xoa_bien_so(bien_so *a, int *n, int vi_tri)
    93. {
    94.      int i;
    95.      for(i = vi_tri; i < *n - 1; i++)
    96.            *(a + i) = *(a + i + 1);
    97.      *n--;
    98.      }
    99. */
    100. void in_danh_sach_dk(dang_ki *a, int n)
    101. {
    102.     int i;
    103.     printf("------------------------------------------------------\n");
    104.     printf("| STT | Bien so dang ki |   Ten chu xe  | Nhan hieu  |\n");
    105.     for(i = 0; i < n; i++){//sao i=1 phai i=0 nhe
    106.         printf("------------------------------------------------------\n");
    107.         printf("|  %d  | %s-%d | %s | %s |\n", i+1, (a+i)->x.ki_hieu, (a+i)->x.so, (a+i)->chu_xe, (a+i)->nhan_hieu);
    108.         }
    109.     printf("------------------------------------------------------\n");
    110. }
    111.  
    112. void in_bien_so(bien_so *a, int n)
    113. {
    114.     int i;
    115.     printf("bien so chua cap la:\n");
    116.     for(i = n; i < 100; i++)
    117.         printf("%s-%d\t", (a+i)->ki_hieu, (a+i)->so);
    118. }

  3. #3
    Ngày gia nhập
    05 2011
    Bài viết
    4

    Thank nhé ! mình đang mày mò cái ni

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

  1. So sánh mã sách của struct trong C, lỗi chạy không đúng kết quả?
    Gửi bởi boymafia1993 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 14
    Bài viết cuối: 11-10-2012, 09:02 PM
  2. Các thuật toán sắp xếp và tìm kiếm cho Quản lí thư viện chạy không đúng kết quả?
    Gửi bởi dangquan045 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 28-09-2012, 07:02 PM
  3. Chương trình quản lý sinh viên ko chạy đúng?
    Gửi bởi hugo158 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 11-12-2010, 11:02 PM
  4. CT chạy đúng kết quả với BC 3.1 nhưng không đúng với BC 5.02
    Gửi bởi PGD trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 03-01-2010, 03:00 PM
  5. CTviết bằng đệ qui chạy không đúng kết quả
    Gửi bởi PGD trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 04-12-2009, 04:24 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