User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 10 của 10

Chủ đề: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

  1. #1
    svBK's Newbie
    Tham gia ngày
    Nov 2011
    Bài gửi
    7

    Mặc định [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    PHP Code:
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    int main(){
         
    struct hocsinh
        
    {
              
    char hoten[30];
              
        };
        
    int i,n,j,vt=0,k,t;
        
    int demcach[10];
        
    char s1[]="";
        do{
            
    printf("\nNhap n: ");
            
    scanf("%d",&n);
            if(
    n<1||n>10printf("\nMoi nhap lai");
          }while(
    n<1||n>10);
          
    struct hocsinh ten[n],daoten[n],gan[10];  
          for(
    i=0;i<n;i++){
                          
    printf("\nNhap ten hoc sinh thu %d:   -",i+1);
                          
    fflush(stdin); gets(ten[i].hoten);
                           }
                          
      for(
    i=0;i<n;i++){
                           
    strcpy(daoten[i].hoten,ten[i].hoten); 
                           
    strrev(daoten[i].hoten);//dao lai cac tu trong ten
                           
    for(j=0;j<strlen(daoten[i].hoten);j++){
                                                              if(
    daoten[i].hoten[j]==' '){ 
                                                              
                                                                                       
    demcach[++vt]=j;
                                                              }
                           
    demcach[0]=0;
                           for(
    j=0;j<vt;j++){//duyt o dau cach thu j
                           
    t=0;
                           for(
    k=demcach[j];k<demcach[j+1];k++){//chay tu ki tu k den ki tu co dau cach
                                                         
    gan[j].hoten[t++]=daoten[i].hoten[k];
                                                                }
                                                         
    gan[j].hoten[t]='\0';
                                             }
                           
    t=0;
                           for(
    k=demcach[vt];k<strlen(daoten[i].hoten);k++){
                                                                            
    gan[vt+1].hoten[t++]=daoten[i].hoten[k];
                                                                            }
                                                                            
    gan[vt+1].hoten[t]='\0';
                                                                            
    strcpy(daoten[i].hoten,s1);
                           for(
    j=0;j<vt+1;j++){
                                                
    strrev(gan[j].hoten);
                                                
    strcat(daoten[i].hoten,gan[j].hoten);
                                                }
                           
                             
    printf("%s"daoten[i].hoten);                
                                                  
                           } 
            
                             
                             }
        
    getch();

    Lần sửa cuối bởi khanhoatink4; 28-11-2011 lúc 08:52 AM Lý do: đề nghị bỏ vào thẻ PHP

  2. #2
    Khánh Hòa
    Tham gia ngày
    Apr 2010
    Bài gửi
    159

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    Khi post code lên bạn nhớ bỏ vào thẻ [php] nhé. Nhìn chương trình khó đọc quá, bạn nêu thuật toán lên đi, mọi người xem xét. chứ ngồi tìm lỗi thì khó lắm và mất time

  3. #3
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    Một điều rất quan trọng là chủ topic cần đưa ra đề bài rõ ràng vì sắp xếp theo họ tên ở đây còn khá mơ hồ vì tên nước ngoài và tên Việt Nam có thứ tự họ tên trái ngược nhau.

    Có lẽ ở đây bạn muốn sắp xếp họ tên theo kiểu tên Việt Nam, tức là sẽ sắp xếp theo tên trước rồi mới xét đến họ và tên đệm?
    Contact me:
    Email: sangnd [at] svBK.vn
    Personal website: My Blog | Chat với người lạ
    Facebook Page của Bách Khoa Forum: http://www.facebook.com/svbk.vn

  4. #4
    Điều hành viên Avatar của iexplore
    Tham gia ngày
    Sep 2010
    Bài gửi
    208

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    code của bạn rối quá, có mỗi chuỗi hoten[30] mà cũng cho vào struct rắc rối.
    nếu là tên tiếng Anh thì họ trước tên sau nên chỉ cần dùng hàm strcmp() để sắp xếp lại theo thứ tự abc
    còn nếu tên là tiếng Việt thì cần phải chuyển sang tên dạng tiếng Anh, ví dụ "Phan Van Khanh" thành "Khanh Van Phan", rồi sau đó sắp xếp nổi bọt dùng hàm so sánh chuỗi strcmp();

  5. #5
    svBK's Newbie
    Tham gia ngày
    Nov 2011
    Bài gửi
    7

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    mình muốn đảo thứ tự lại rồi mới dùng strcmp để so sánh.... Họ Văn Tên thành Tên văn Họ rồi mới so sánh ấy

  6. #6
    svBK's Newbie
    Tham gia ngày
    Nov 2011
    Bài gửi
    7

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    Quote Nguyên văn bởi iexplore Xem bài viết
    code của bạn rối quá, có mỗi chuỗi hoten[30] mà cũng cho vào struct rắc rối.
    nếu là tên tiếng Anh thì họ trước tên sau nên chỉ cần dùng hàm strcmp() để sắp xếp lại theo thứ tự abc
    còn nếu tên là tiếng Việt thì cần phải chuyển sang tên dạng tiếng Anh, ví dụ "Phan Van Khanh" thành "Khanh Van Phan", rồi sau đó sắp xếp nổi bọt dùng hàm so sánh chuỗi strcmp();
    khống chính xác lắm nếu so sánh như thế thì Trương Hoàng Linh đứng sau Nguyễn thị Nhật Linh ah

  7. #7
    .:: Grumpy svBKer ::. Avatar của 1973
    Tham gia ngày
    Mar 2010
    Bài gửi
    3.793

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    Quote Nguyên văn bởi boonba Xem bài viết
    khống chính xác lắm nếu so sánh như thế thì Trương Hoàng Linh đứng sau Nguyễn thị Nhật Linh ah
    Chính xác là phải sắp xếp như vậy bạn à

  8. #8
    Điều hành viên Avatar của iexplore
    Tham gia ngày
    Sep 2010
    Bài gửi
    208

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    37.c.zipCode tham khảo bài 37 trong bài tập tin đại cương của thầy Nguyễn Hồng Phương, chương trình làm nhiều việc trong đó có cả sắp xếp họ tên, bạn tham khảo hàm xepTen() và daoXau() nhé:
    nếu khó đọc thì xem trong tệp đính kèm nhé
    37.c // in Dev-C++
    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    int n;
    struct {

       
    char hoten[30], lop[10];

       
    int d;
    hs[100], tg;

    void nhap();
    void ktHo();
    void locDiem(float);
    void xepDiem();
    void xepTen();
    void daoXau(char s[]);
    int main()
    {

       
    float x;

       
    nhap();

       
    ktHo();

       
    printf("\nNhap mot so thuc: "); 

       

       
    scanf("%f", &x);

       
    locDiem(x);

       

        
    xepDiem();

       
    xepTen();

       
    getch();

    }



    void nhap()
    {

       
    int i;

       
    printf("Nhap so luong sinh vien n = ");

       
    scanf("%d", &n);

       for (
    i=0i<ni++)

       {

          
    printf("-------------------------\n");

          
    printf("Nhap thong tin sinh vien thu %d\n"i);

          
    printf("Ho va ten: ");

          
    fflush(stdin); 

          
    fgets(hs[i].hoten30stdin);

          
    printf("Lop: "); 

          
    fgets(hs[i].lop10stdin);

          
    hs[i].11;

          while (
    hs[i].d<|| hs[i].d>10)

          {

             
    printf("Diem thi tin dai cuong: "); 

             
    scanf("%d", &hs[i].d);

             if (
    hs[i].d<|| hs[i].d>10)

                
    printf("Co loi! Hay nhap lai diem thi. \n");

          }

       }

          
    printf("---------------------------------------\n");

    }


    void ktHo()
    {

       
    char ho[6], t[6];

       
    int ij;

       
    fflush(stdin);

       
    printf("\nNhap mot ho: "); 

       
    gets(ho);

       
    printf("Nhung nguoi co ho ' %s 'la: \n"ho);

       for (
    i=0i<ni++)

       {

          if (
    strncmp(hohs[i].hotenstrlen(ho))==0)

             
    printf("%s\n"hs[i].hoten);

       }

       
    printf("---------------------------------------");

    }



    void locDiem(float x)
    {

       
    int i;

       
    printf("\nNhung nguoi co diem nho hon %.2f la: \n"x);

       for (
    i=0i<ni++)

          if (
    hs[i].d<x)

             
    printf("%s\n"hs[i].hoten);

       
    printf("---------------------------------------\n");

    }



    void xepDiem()
    {

       
    int ij;

       
    printf("\nSap xep sinh vien theo chieu giam dan cua diem thi Tin dai cuong: \n");

       for (
    j=n-1j>0j--)

          for (
    i=0i<ji++)

             if (
    hs[i].d<hs[i+1].d)

             {

                
    tg hs[i];

                
    hs[i] = hs[i+1];

                
    hs[i+1] = tg;

             }

       for (
    i=0i<ni++)

          
    printf("%s\n"hs[i].hoten);

       
    printf("---------------------------------------\n");

    }



    void daoXau(char s[])

    {

        
    /*Chuong trinh dao nguoc xau:

        Vi du:

            Toi ten la Khanh -> Khanh la ten Toi

        */

        
    char s1[50]=" "t[50], s2[50];

        
    int ij=0k=0a[10], m;

        
    strcat(s," ");

        
    strcat(s1,s);// s = " Toi ten la Khanh "

        
    for (i=strlen(s1)-1i>=0i--)

           if (
    s1[i]==' ')

           {

                
    a[k] = i;

                
    k++;

          }

        
    // k = so dau cach trong xau

        // Dao nguoc xau

        
    for (i=0i<k-1i++)

        {

            for (
    m=a[i+1]+1m<=a[i]; m++) 

            {    

                
    t[j]=s1[m];

                
    j++;

            }

        }

       
    strncpy(s2tstrlen(s));

       
    strcpy(ss2);

    }



    void xepTen()

    {

       
    int ij;

       
    char str1[30], str2[30];

       for (
    i=n-1i>0i--)

          for (
    j=0j<ij++)

          {

             
    strcpy(str1hs[j].hoten);

             
    strcpy(str2hs[j+1].hoten);

             
    daoXau(str1);

             
    daoXau(str2);

             if (
    strcmp(str1str2)>0)

             {

                
    tg hs[j];

                
    hs[j] = hs[j+1];

                
    hs[j+1] = tg;

             }

          }

       
    printf("Danh sach sinh vien voi ho ten sap xep theo bang chu cai: \n");

       for (
    i=0i<ni++)

          
    printf("%s\n"hs[i].hoten);

       
    printf("---------------------------------------\n");


    Lần sửa cuối bởi iexplore; 01-12-2011 lúc 07:52 PM

  9. Tớ cảm ơn iexplore đã chia sẻ.


  10. #9
    svBK's Newbie
    Tham gia ngày
    Nov 2011
    Bài gửi
    7

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    cái này chuẩn đấy... thank cậu

  11. #10
    svBK's Newbie
    Tham gia ngày
    Nov 2011
    Bài gửi
    7

    Mặc định Re: [BaiTap C] nhap hoi ten va xap sep theo alphabe... bị lỗi code, mong mọi người kiểm tra giúp..

    Quote Nguyên văn bởi 1973 Xem bài viết
    Chính xác là phải sắp xếp như vậy bạn à
    Sai rồi cậu ah.. tớ học 12 năm khi nào cũng tên mấy trên Phạm Thục Linh Với Nguyễn Thùy Linh .. Vì Hoàng trên Thục Với Thùy

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Chủ đề tương tự

  1. cần mua code chữ kí điện tử DSS
    Gửi bởi xinbat007 trong mục Thư viện mã nguồn
    Trả lời: 3
    Bài cuối: 02-11-2011, 07:38 PM
  2. Nhờ các pro chỉ giúp e đoạn code+ mạch này ạ!
    Gửi bởi chienlc1105 trong mục Kỹ thuật điện tử
    Trả lời: 0
    Bài cuối: 04-10-2011, 05:09 PM
  3. Hướng dẫn các chức năng chính của Source Code C2C (Code To Coder)
    Gửi bởi hoaianvn trong mục Thư viện mã nguồn
    Trả lời: 1
    Bài cuối: 23-10-2009, 02:13 PM
  4. Lam sao sua lai nick dang nhap
    Gửi bởi king46bk trong mục Hỏi đáp và góp ý xây dựng svBK
    Trả lời: 7
    Bài cuối: 08-05-2007, 10:31 PM
  5. Anh yêu em theo mong ước của cô gái khác
    Gửi bởi Hoa_Ly_Tim trong mục Tâm sự & Tư vấn
    Trả lời: 4
    Bài cuối: 30-04-2004, 04:57 PM

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube