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

Đề tài: Viết chương trình sắp xếp một danh sách tên học sinh theo vần a pha b

  1. #1
    Ngày gia nhập
    01 2011
    Bài viết
    5

    Mặc định Viết chương trình sắp xếp một danh sách tên học sinh theo vần a pha b

    Viết chương trình sắp xếp một danh sách tên học sinh. In ra màn hình danh sách tên đã được sắp xếp theo thứ tự từ A-Z.
    - Nhập mình tên và in ra kết quả.
    - Nhập cả họ và tên và in ra kết quả.
    Em xin chân thành cảm ơn!

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

    Ôi , code vừa xong, mệt. Xem bài mình nhé, Thank mình một cái, 11h53 rồi:
    Dưới là code, có file đi kèm đó:
    C++ Code:
    1. #include<conio.h>
    2. #include<stdio.h>
    3. #include<malloc.h>
    4. #include<string.h>
    5. struct sv{
    6.     char ten[20];
    7.     int diem;
    8.     struct sv*next;
    9. }*p,*pdau,*pcuoi,*q,*tg;
    10. // Goi ham:
    11.    
    12. void sapxep();
    13.  
    14. int main()
    15. {
    16.     pdau=NULL;
    17.     char stop;
    18.      do{
    19.             p=(struct sv*)malloc(sizeof(struct sv));
    20.             printf("\nNhap ten:");fflush(stdin);gets(p->ten);
    21.             printf("\nNhap diem:");scanf("%i",&(p->diem));
    22.            
    23.             if(pdau==NULL){
    24.                 pdau=p;
    25.                 pcuoi=p;
    26.             }
    27.            
    28.             else{
    29.                 pcuoi->next=p;
    30.                 pcuoi=p;
    31.             }
    32.            
    33.              printf("\nAn enter tiep va esc de dung:\n");
    34.              
    35.             stop=getch();
    36.            
    37.     }while(stop!=27);
    38.    
    39.     p->next=NULL;// danh dau ket thuc.
    40. //Sap xep:
    41.        
    42.     sapxep();
    43. // Ghi ket qua:
    44.    
    45.     int i=0;
    46.     p=pdau;
    47.     printf("____________________________________________________________________\n");
    48.     printf("|stt     |    ten                                |           diem   |\n");
    49.     printf("|________|_______________________________________|__________________|\n");
    50.    
    51.     while(p!=NULL){
    52.        i++;
    53.        printf("|%-8i|",i); printf("\t\t%-25s|",p->ten);printf("\t%-8i    |\n",p->diem);
    54.        printf("|________|_______________________________________|__________________|\n");
    55.        p=p->next;
    56.     }  
    57.    
    58.     getch();
    59.    
    60. }
    61. //Ham sap xep theo kieu noi bot, ngoai ra dung quicksoft nhanh  hon nhieu:
    62. void sapxep()
    63. {
    64.     int diemtg;
    65.     p=pdau;
    66.     while(p!=NULL){
    67.         q=p->next;
    68.         while(q!=NULL){
    69.             tg=(struct sv*)malloc( sizeof(struct sv));
    70.             if(int(q->ten[0])<int(p->ten[0])){
    71.                  strcpy(tg->ten,p->ten);
    72.                  strcpy(p->ten,q->ten);
    73.                  strcpy(q->ten,tg->ten);
    74.                  
    75.                  diemtg=p->diem;
    76.                  p->diem=q->diem;
    77.                  q->diem=diemtg;
    78.             }
    79.            
    80.             q=q->next;
    81.         }
    82.         p=p->next;
    83.     }
    84.    
    85.     return;
    86. }
    Đã được chỉnh sửa lần cuối bởi langman : 21-03-2011 lúc 12:07 AM.

  3. #3
    Ngày gia nhập
    02 2011
    Nơi ở
    hà nội
    Bài viết
    131

    Trích dẫn Nguyên bản được gửi bởi autorun12 Xem bài viết
    Ôi , code vừa xong, mệt. Xem bài mình nhé, Thank mình một cái, 11h53 rồi:
    Dưới là code, có file đi kèm đó:
    chưa có ai tks kìa^^!~ vậy mình tks bạn
    mà cho mình hỏi giữa "->" và "." khác nhau ở điểm nào
    bài này cũng có thể so sánh trực tiếp đc bằng so sánh ko phân biệt in hoa và in thường ^^!~
    đúng ko nhỉ???
    Chia tay bình minh

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

    ok, cái dấu -> và cái dấu ". " mình chưa rõ phần này nhưng mình thấy thầy giáo làm vậy thì làm theo, nếu muốn biết thì bạn cứ thay đổi hết dấu -> thành dấu ". ".
    Cái nữa là: bài của mình nó sẽ sắp xếp theo giá trị của kí tự trong bảng mã ASCII nên nếu cùng 1 chữ cái thì chữ thường đứng trước.

  5. #5
    Ngày gia nhập
    03 2011
    Nơi ở
    Hà Nội
    Bài viết
    85

    dấu"->"để dùng cho biến con trỏ còn "."dùng với biến thường thôi theo mình hiểu là vậy

  6. #6
    Ngày gia nhập
    10 2010
    Nơi ở
    Hà Nội
    Bài viết
    73

    Mặc định Viết chương trình sắp xếp một danh sách tên học sinh theo vần a pha b

    dòng 70 t nghĩ nên sửa thế này thì sẽ sắp xếp luôn theo dạng từ điển
    C Code:
    1.  if(strcmp(q->ten,p->ten)<0)
    còn ở trên mới sắp xếp theo kí tự đầu thui ^^!
    Thất bại lớn nhất của đời người là tự đại
    Khiếm khuyết lớn nhất của đời người là kém hiểu biết


    => em có chỗ nào chưa đúng mong các bác chỉ bảo thêm <=

  7. #7
    Ngày gia nhập
    03 2011
    Nơi ở
    Hà Nội
    Bài viết
    85

    bài của mình nè mọi người xem thử thế nào nhé:

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. typedef struct
    5. {
    6.  char ten[30];
    7.   int nam;
    8.   char que[30];
    9. }hocsinh;
    10. void nhap(hocsinh ds[],int n);
    11. void hien(hocsinh ds[],int n);
    12. void tach(char s[],ten[]);
    13. void sapxep(hocsinh ds[],int n,char ten[]);
    14. void nhap(hocsinh ds[],int n)
    15. {
    16.  int i;
    17.  for(i=0;i<n;i++)
    18.    {
    19.      fflush(stdin);
    20.      printf("\n ten hoc sinh:");
    21.      gets(ds[i].ten);
    22.      fflush(stdin);
    23.      printf("\n nam sinh:");scanf("%d",&ds[i].nam);
    24.       fflush(stdin);
    25.      printf("\n que quan:");gets(ds[i].que);
    26.     }
    27.  
    28. }
    29. void hien(hocsinh ds[],int n)
    30. {
    31.  int i;
    32.  printf("\n %-5s%-30s%-15s%-20s","stt","ho ten","nam sinh","que quan");
    33.  for(i=0;i<n;i++)
    34.   printf("\n%-5d%-30s%-15d%-20s",i+1,ds[i].ten,ds[i].nam,ds[i].que);
    35. }
    36. void tach(char s[],char ten[])
    37. {
    38.  int i;
    39.  i=strlen(s)-1;
    40.  while(s[i]!=' ')  i--;
    41.    strcpy(ten,&s[i+1]);
    42. }
    43. void sapxep(hocsinh ds[],int n,char ten[])
    44. {
    45.  int i,j;
    46.  hocsinh tg[20];
    47.  char s[20];
    48.  for(i=0;i<n;i++)
    49.     tach(ds[i].ten,s);
    50.  for(i=0;i<n-1;i++)
    51.    for(j=i+1;j<n;j++)
    52.      if(strcmp(ten[i],ten[j])>0)
    53.         {
    54.           tg=ds[i];
    55.           ds[i]=ds[j];
    56.           ds[j]=tg;  
    57.          }
    58. }
    59. void main()
    60. {
    61.  hocsinh ds[100];
    62.  int n;
    63.  char ten[20];
    64.  clrscr();
    65.   printf("\n nhap n=");
    66.   scanf("%d",&n);
    67.   nhap(ds,n);
    68.   hien(ds,n);
    69.   tach(s,ten);
    70.   sapxep(ds,n,ten);
    71.   getch();
    72. }
    Đã được chỉnh sửa lần cuối bởi fithou91192 : 11-04-2011 lúc 04:25 AM.

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

    Cam on" hinh_nd" nhe. Đúng là mình chưa nghĩ đến TH họ trùng nhau rồi tên đệm trùng nhau... Nếu thêm đoạn đó của bạn vào thì chắc ok rồi.

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

  1. Kỹ thuật C Cho 1 danh sách tên học sinh được nhập vào in ra theo thứ tự alphabet
    Gửi bởi vietcodemaster 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: 10-04-2014, 08:04 PM
  2. Bài tập C nhập vào tên sinh viên gồm.và sắp xếp tên sinh viên tăng dần theo danh sách đả nhập
    Gửi bởi nghiapro2589 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 26-05-2013, 08:23 AM
  3. Sắp xếp danh sách sinh vien tăng dần theo họ tên
    Gửi bởi teotoni trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 14
    Bài viết cuối: 27-04-2011, 10:06 PM
  4. Sắp xếp danh sách sinh viên theo họ và tên
    Gửi bởi neo.one trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-04-2011, 10:56 PM
  5. Xuất danh sách tăng dần theo Tên Sinh Viên
    Gửi bởi binhkokomiA18 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 24-12-2008, 02:09 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