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

Đề tài: danh sách liên kết - Kiểm tra chương trình bị sai ở đâu giúp mình với.

  1. #1
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    Mặc định danh sách liên kết - Kiểm tra chương trình bị sai ở đâu giúp mình với.

    đây là code của mình

    C Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "dos.h"
    4. #include "alloc.h"
    5. #include "string.h"
    6. #include "stdlib.h"
    7.  
    8.  
    9. struct thongtin
    10.     {
    11.         char hoten[30];
    12.         char masv[30];
    13.         char diachi[30];
    14.         float dcb;
    15.         float dcn;
    16.         float dtb;
    17.     };
    18.  
    19. struct sv
    20.     {
    21.         struct thongtin infor;
    22.         sv *next;
    23.     };
    24.  
    25. struct listsv
    26.     {
    27.         sv *head;
    28.         sv *tail;
    29.     };
    30. listsv q;
    31.  
    32. void nhapds(sv *p);
    33. void inds(sv *p);
    34. void chendau(sv *p);
    35.  
    36.  
    37.  
    38. void nhapds(sv *p)
    39.     {
    40.         char hoten[30];
    41.         char masv[30];
    42.         char diachi[30];
    43.         float dcb;
    44.         float dcn;
    45.         while(1)
    46.             {
    47.                 printf("Nhap vao ho ten sinh vien: ");
    48.                 gets(hoten);
    49.                 if(hoten[0]==0)break;
    50.                 if(q.head==NULL)
    51.                     {
    52.                         q.head=(sv*)malloc(sizeof(sv));
    53.                         q.head=p;
    54.                     }
    55.                 else
    56.                     {
    57.                         p->next=(sv*)malloc(sizeof(sv));
    58.                         p=p->next;
    59.                     }
    60.                 strcpy(p->infor.hoten,hoten);
    61.                 printf("Nhap vao masv: ");
    62.                 gets(masv);
    63.                 strcpy(p->infor.masv,masv);
    64.                 printf("Nhap vao que quan sinh vien: ");
    65.                 gets(diachi);
    66.                 strlwr(diachi);
    67.                 strcpy(p->infor.diachi,diachi);
    68.                 printf("Nhap vao dien can ban cua sinh vien: ");
    69.                 scanf("%f%*c",&dcb);
    70.                 p->infor.dcb=dcb;
    71.                 printf("Nhap vao diem chuyen nghanh cua sinh vien: ");
    72.                 scanf("%f%*c",&dcn);
    73.                 p->infor.dcn=dcn;
    74.  
    75.                 p->infor.dtb=float(dcn)+dcb;
    76.                 q.tail=p;
    77.                 p->next=NULL;
    78.             }
    79.         p=q.head;
    80.         free(p);
    81.  
    82.     }
    83.  
    84. void inds(sv *p)
    85.     {
    86.         printf("Danh Sach Ban Vua Nhap La: \n");
    87.         p=q.head;
    88.         while(p!=NULL)
    89.             {
    90.                 printf("%10s%10s%10s       %.2f          %.2f     %.2f\n",p->infor.hoten,p->infor.masv,p->infor.diachi,p->infor.dcb,p->infor.dcn,p->infor.dtb);
    91.                 p=p->next;
    92.             }
    93.                 free(p);
    94.     }
    95.  
    96. void chendau(sv *p)
    97.     {
    98.         if(q.head==NULL)    q.head=p;
    99.         else
    100.             {
    101.                 p->next=q.head;
    102.                 q.head=p;
    103.             }
    104.         inds(p);
    105.     }
    106.  
    107. void main(void)
    108.     {
    109.         clrscr();
    110.         sv *p;
    111.         char hoten[30];
    112.         char masv[30];
    113.         char diachi[30];
    114.         float dcb,dcn;
    115.         nhapds(p);
    116.         inds(p);
    117.  
    118.  
    119.         p=(sv*)malloc(sizeof(sv));
    120.         printf("Nhap vao ho ten sv can chen: ");
    121.         fflush(stdin);
    122.         gets(hoten);
    123.         strcpy(p->infor.hoten,hoten);
    124.         printf("Nhap ma vao ma sv can chen: ");
    125.         fflush(stdin);
    126.         gets(masv);
    127.         strcpy(p->infor.masv,masv);
    128.         printf("Nhap vao que quan cua sv can chen: ");
    129.         fflush(stdin);
    130.         gets(diachi);
    131.         strcpy(p->infor.diachi,diachi);
    132.         printf("Nhap vao diem can ban cua sinh vien can chen: ");
    133.         scanf("%f%*c",dcb);
    134.         p->infor.dcb=dcb;
    135.         printf("Nhap vao diem chuyen nganh cua sinh vien can chen: ");
    136.         scanf("%f%*c",dcn);
    137.         p->infor.dcn=dcn;
    138.                 chendau(p);
    139.                 free(p);
    140.         getch();
    141.  
    142.     }
    mình ko biết ctrinh trên sai ở chỗ nào mà khi mình gọi hàm chendau rồi cho chạy thì nó ko in ra đúng KQ như mình mog muốn nhờ mọi ng chỉ dùm

  2. #2
    Ngày gia nhập
    03 2008
    Bài viết
    8

    Bài của bạn chạy trên TC thì không lỗi.Còn chạy trên VC++ thì lỗi.
    VC++ là C for win 32 bit.
    TC là C for DOS 16 bit.
    Còn giải thích mình cũng không biết tại sao nó lại không chạy được
    mình cũng gặp 1 vài lần như thế
    Đặc biệt là sử dung con trỏ
    ....!!!!!!

  3. #3
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    mình dùng BC mà chạy nó bị lỗi hoài mọi người giúp mình chẽk lỗi này với ~,,,~

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Lỗi chỗ này :
    Code:
    sv *p;
    con trỏ p chưa được cấp phát gì cả.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    đánh giá sơ bộ:

    bạn chưa phân biệt được đâu là list, đâu là nút , đâu là thông tin à ?

    PHP Code:
    void nhapds(sv *p
    nhập danh sách nhưng đối tượng truyền vào lại là 1 nút :| như thế có phản logic ko???

    danh sách của bạn ở đây là gì ?
    danh sách của bạn ở đây là q ( 1 biến thực)
    và có kiểu dữ liệu là listsv

    vậy nếu hợp logic thì hàm nhập danh sách phải là

    PHP Code:
    nhapds(listsv *); 
    hoặc
    PHP Code:
    nhapds(listsv &) 
    mới đúng logic chứ

    tên hàm là nhập danh sách, nhưng đối tượng truyền vào lại là nút.... mình ko khẳng địng nó là sai, nhưng nó ko được khoa học lắm ......

    ví dụ 1 đoạn code sau nha

    PHP Code:
    struct bdata   //bookdata
        
    {
            
    char ten[30];
            
    char ma[20];
            
    float gia;
        };
    struct sach  //node
        
    {
            
    bdata info;
            
    sach *next;
        };
    struct blist  //book list
        
    {
            
    sach *head;
            
    sach *tail;
        };

    blist x;

    void nhap(blist &ds=x);
    void hienthi(blist &ds=x);
    void timkiem(char *s,blist &ds=x);
    void xoabo(char *s,blist &ds=x);
    void xapxep(blist &ds=x); 
    bạn thấy ko
    ví dụ hàm nhập
    đói tượng nhập ở đây là gì ? là 1 danh sách

    hiển thị . Ta hiển thị với danh sách.

    giả sử trong bài tôi có 3 danh sách khác nhau
    PHP Code:
    blist ds1,ds2,ds3
    thì tôi sẽ gọi :
    PHP Code:
    nhap(ds1);
    hienthi(ds1);
    nhap(ds2);
    hienthu(ds2);
    nhap(ds3);
    hienthi(ds3); 

    xắp xếp và tìm kiếm cũng vậy, đối tượng mà ta làm việc là danh sách, ko phải là nút, như thế đối truyền vào có dạng danh sách *. như thế sẽ hợp logic hơn..........


    chỉ là đánh giá và góp ý sơ bộ, có gì sai mong được các bạn sửa dùm mình
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  6. #6
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    Mặc định danh sách liên kết - Kiểm tra chương trình bị sai ở đâu giúp mình với.

    ở dưới sau khi khai báo thông tin cho link list mình có khai báo 1 biến listsv q; mình đã khai báo nó là biến toàn cục rồi nên mình nghĩ ko cần khai báo trg hàm nữa .Còn con trỏ p mình khai báo trong các hàm kia mình cho vào mỗi hàm để nhìn các hàm nó ko bị nhàm quá thôi chứ khai báo nó ở trg thân mỗi hàm cũng ko khác nhau là mấy

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

    Trích dẫn Nguyên bản được gửi bởi quicksilver89 Xem bài viết
    ở dưới sau khi khai báo thông tin cho link list mình có khai báo 1 biến listsv q; mình đã khai báo nó là biến toàn cục rồi nên mình nghĩ ko cần khai báo trg hàm nữa .Còn con trỏ p mình khai báo trong các hàm kia mình cho vào mỗi hàm để nhìn các hàm nó ko bị nhàm quá thôi chứ khai báo nó ở trg thân mỗi hàm cũng ko khác nhau là mấy


    điều quan trọng là tính tổng quát của hàm hiểu ko???

    ví dụ trong bài tôi có 2 danh sách là:

    PHP Code:
    listsv q,x
    thế bạn sẽ nhập x như thế nào ?

    hàm nhapds của bạn lúc này có nhập được cho x ko hay chỉ nhập được cho q thôi ???




    tái bút :
    1. trông avatar như của fami vậy......
    2. nếu mà hàm của bạn chỉ làm việc với q thì cần gì phải thêm tham biến sach *p ?
    cứ làm void nhapds(void) là xong
    3. if (bạn==fami) printf("lần sau đề cái tiêu đề hợp lí hơn nhé fami , anh sửa lại tiêu đề cho em rồi đó");
    Đã được chỉnh sửa lần cuối bởi langman : 25-03-2009 lúc 11:31 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  8. #8
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    ~,~ thì hôm trc e nói với a rồi mà e để con trỏ p vào cho nó đẹp hàm mà nhưng hqua e ngồi chép code ra giấy nộp thì e sửa lại phần khai báo các hàm như a rồi e bỏ caí biến listsv q ở đầu đi e khai báo nó ở trg mỗi hàm là listsv &q ~,~ ngồi chép đến 2h sag chưa xog

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

  1. Mảng trên C [giúp] danh sách liên kết đơn !!!
    Gửi bởi nhan_lnhth trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 09-05-2013, 07:41 PM
  2. cần giúp đỡ về danh sách liên kết
    Gửi bởi quyenbnhm trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 13-11-2012, 05:03 PM
  3. Đảo ngược danh sách liên kết. Giúp mình sửa lỗi?
    Gửi bởi athang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 18
    Bài viết cuối: 09-05-2011, 04:41 PM
  4. Bài tập C++ Danh sách liên kết để lưu trữ danh sách phim. Sửa giúp mình?
    Gửi bởi amidamaru trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 03-09-2010, 04:14 PM
  5. Giúp mình bài danh sách liên kết đơn về đa thức!
    Gửi bởi thantai2000 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: 05-08-2009, 08:02 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