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

Đề tài: Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?

  1. #1
    Ngày gia nhập
    03 2010
    Nơi ở
    TP.Ho Chi Minh
    Bài viết
    6

    Unhappy Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?

    Ai có thể xem hộ mình xem lỗi là ở chỗ nào dc ko ah, mình ko biết làm sao để nhập dc nhiều sv
    C Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. #define max 10
    5. struct sinhvien
    6. {
    7.     int ma;
    8.     char ten[15];
    9.     float diem;
    10.     char xeploai[15];
    11. };
    12. struct node
    13. {
    14.     node *pnext;
    15.     sinhvien data;
    16. };
    17. struct stack
    18. {
    19.     node *top;
    20. };
    21.  
    22. void Init(stack &s)
    23. {
    24.     s.top = NULL;
    25. }
    26. int isEmpty(stack s)
    27. {
    28.     if (s.top==NULL)
    29.     return 1;
    30.     else return 0;
    31. }
    32. // chua xet bo nho stack day
    33. /*
    34. int isFull(stack s)
    35. {
    36.     if (s.top == NULL)
    37.     return 1;
    38.     else return 0;
    39. }
    40. */
    41. void Push(stack &s,sinhvien sv)
    42. {
    43.     node *p = new node;
    44.     if (p==NULL)   
    45.     {
    46.         cout<<"Khong du bo nho";return;
    47.     }
    48.     cout<<"Nhap thong tin"<<endl;
    49.     cout<<"Ten:";fflush(stdin);
    50.     gets(sv.ten);
    51.     cout<<"Ma:";cin>>sv.ma;
    52.     cout<<"Diem:";cin>>sv.diem;
    53.     // truyen du lieu vao bien p
    54.         p->data.ma =sv.ma;
    55.         for (int i=0;i<15;i++) 
    56.         p->data.ten[i]= sv.ten[i];
    57.         p->data.diem = sv.diem;
    58.     p->pnext = NULL;
    59.     if (s.top ==NULL)
    60.         {
    61.         s.top = p;
    62.         }
    63.         else
    64.             {
    65.             p->pnext = s.top;
    66.             s.top = p;
    67.             }
    68. }
    69. void Pop(stack &s)
    70. {
    71.     for (node *p = s.top;p!=NULL;s.top= s.top ->pnext)
    72.     {
    73.                
    74.         cout<<"Thong tin sinh vien :"<<endl;
    75.         cout<<"-----"<<endl;
    76.         cout<<"Ten:"<<s.top->data.ten<<endl;
    77.         cout<<"Ma:"<<s.top->data.ma<<endl;
    78.         cout<<"Diem:"<<s.top->data.diem<<endl;
    79.         cout<<"-----"<<endl;
    80.     }
    81. }
    82.  
    83. void Del(stack &s)
    84. {
    85.     sinhvien sv;
    86.     node *p = s.top;
    87.     p = p->pnext;
    88.     s.top = s.top->pnext;
    89. //  sv = p->data;
    90.     delete p;  
    91. }
    92. int main()
    93. {
    94.     stack s;
    95.     Init(s);
    96.     int chon;
    97.     sinhvien sv;
    98.     //cout<<s.top<<endl;
    99.     do
    100.     {
    101.         cout<<"===menu==="<<endl;
    102.         cout<<"1.Them 1 sinh vien moi"<<endl;
    103.         cout<<"2.Xoa 1 sv o dau danh sach"<<endl;
    104.         cout<<"3.Xep loai cho sinh vien"<<endl;
    105.         cout<<"4.Xuat danh sach"<<endl;
    106.         cout<<"5.Thoat"<<endl;
    107.         cout<<"Chon?";cin>>chon;
    108.         switch(chon)
    109.         {
    110.             case 1:
    111.                     //truyendulieu(s,sv);
    112.                     Push(s,sv);
    113.                     break;
    114.             case 2:
    115.              break;
    116.             case 3: break;
    117.             case 4: Pop(s);break;
    118.            
    119.         }
    120.     }while(chon!=5);
    121. }

  2. #2
    Ngày gia nhập
    01 2010
    Nơi ở
    DH-CNTT
    Bài viết
    66

    Mặc định ---------------------------

    C Code:
    1. // CViet_Stack.cpp : Defines the entry point for the console application.
    2. //
    3. #include "stdafx.h"
    4. #include<stdio.h>
    5. #include<iostream>
    6. #include<conio.h>
    7. #include<string.h>
    8. #define max 10
    9. struct sinhvien
    10. {
    11.     int ma;
    12.     char ten[15];
    13.     float diem;
    14.     char xeploai[15];
    15. };
    16. struct node
    17. {
    18.     node *pnext;
    19.     sinhvien data;
    20. };
    21. struct stack
    22. {
    23.     node *top;
    24. };
    25.  
    26. void Init(stack &s)
    27. {
    28.     s.top = NULL;
    29. }
    30. int isEmpty(stack s)
    31. {
    32.     if (s.top==NULL)
    33.     return 1;
    34.     else return 0;
    35. }
    36. // chua xet bo nho stack day
    37. /*
    38. int isFull(stack s)
    39. {
    40.     if (s.top == NULL)
    41.     return 1;
    42.     else return 0;
    43. }
    44. */
    45. void Push(stack &s)
    46. {
    47.     sinhvien sv;
    48.     node *p = new node;
    49.     if (p==NULL)  
    50.     {
    51.         printf("Khong du bo nho");return;
    52.     }
    53.     printf("Nhap thong tin");
    54.     printf("Ten:");fflush(stdin);
    55.     gets(sv.ten);
    56.     printf("Ma:");scanf("%d",&sv.ma);
    57.     printf("Diem:");scanf("%f",&sv.diem);
    58.     // truyen du lieu vao bien p
    59.         p->data =sv;
    60.      
    61.     p->pnext = NULL;
    62.     if (s.top ==NULL)
    63.         {
    64.         s.top = p;
    65.         }
    66.         else
    67.             {
    68.             p->pnext = s.top;
    69.             s.top = p;
    70.             }
    71. }
    72. void Pop(stack &s)
    73. {
    74.     for (node *p = s.top;p!=NULL;s.top= s.top ->pnext)
    75.     {
    76.                
    77.         printf("Thong tin sinh vien :\n");
    78.         printf("-----");
    79.         printf("Ten:%s",s.top->data.ten);
    80.         printf("Ma:%d",s.top->data.ma);
    81.         printf("Diem:%f",s.top->data.diem);
    82.         printf("-----");;
    83.     }
    84. }
    85.  
    86. void Del(stack &s)
    87. {
    88.     sinhvien sv;
    89.     node *p = s.top;
    90.     p = p->pnext;
    91.     s.top = s.top->pnext;
    92. //  sv = p->data;
    93.     delete p;  
    94. }
    95. int _tmain(int argc, _TCHAR* argv[])
    96. {
    97.     stack s;
    98.     Init(s);
    99.     int chon;
    100.     //sinhvien sv=NULL;
    101.    
    102.     //printf("s.top<<endl;
    103.     do
    104.     {
    105.         printf("===menu===");
    106.         printf("1.Them 1 sinh vien moi\n");
    107.         printf("2.Xoa 1 sv o dau danh sach\n");
    108.         printf("3.Xep loai cho sinh vien\n");
    109.         printf("4.Xuat danh sach\n");
    110.         printf("5.Thoat\n");
    111.         printf("Chon?");scanf("%d",&chon);
    112.         switch(chon)
    113.         {
    114.             case 1:
    115.                     //truyendulieu(s,sv);
    116.                     Push(s);
    117.                     break;
    118.             case 2:
    119.              break;
    120.             case 3: break;
    121.             case 4: Pop(s);break;
    122.            
    123.         }
    124.     }while(chon!=5);
    125.     return 0;
    126. }

  3. #3
    Ngày gia nhập
    03 2010
    Nơi ở
    TP.Ho Chi Minh
    Bài viết
    6

    Mình chưa hiểu ý bạn , mình chỉ thấy trong bài bạn chuyển qua ngôn ngữ C thôi, chưa biết nên sửa cái gi để có thể giải quyết dc vấn đề, bạn giúp mình chỉ ra chỗ sai của mình dc ko

  4. #4
    Ngày gia nhập
    03 2010
    Nơi ở
    Nơi nào đó trong vũ trụ
    Bài viết
    550

    @chủ topic:
    Bạn nên tổ chức theo dạng sau mới đúng là stack:
    - tổ chức thành các hàm độc lập:
    C Code:
    1. void CreatStack(Stack &p);
    2. void Push(Stack &p,SV x);
    3. void Pop(Stack &p,SV &x);
    4. void DestroyStack(Stack &p);
    5. int  isEmpty(Stack p);
    Và tổ chức hàm nhập thông tin về sinh viên riêng, không đưa nó vào trong hàm push như vậy.
    Hàm pop cũng nên chỉ làm nhiệm vụ pop, chứ không làm thêm nhiệm vụ hiển thị thông tin như trên, việc hiển thị bạn nên dùng 1 hàm khác.
    Gió thu lạnh lẽo hắt hiu lòng!

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

  1. Bài tập C Quản Lý Sinh Viên Bằng Danh sách liên kết
    Gửi bởi thienshaman trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-04-2013, 07:52 AM
  2. Sử dụng danh sách liên kết để tạo chương trình quản lý sinh viên. Xin được giúp đỡ?
    Gửi bởi hieuboo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 12-05-2012, 10:50 AM
  3. Chương trình quản lí sinh viên viết trong visual c++ 2010. Lỗi không chạy khi in danh sách sinh viên theo năm
    Gửi bởi hikaru1015 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 03-06-2011, 09:31 AM
  4. Kỹ thuật C Quản lí Sinh Viên Bằng Danh Sách liên kết trong lập trình C
    Gửi bởi kitti trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 01-04-2011, 09:17 PM
  5. [VC++ ] Danh sáchh liên kết - BT quản lí điểm sinh viên.
    Gửi bởi vuongngocnam trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 14-04-2010, 11:28 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