Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Đảo tên lên trước họ trong xâu họ tên?

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

    Mặc định Đảo tên lên trước họ trong xâu họ tên?

    Tình hình là mình muốn đảo tên lên trước họ và tên đệm trong một xâu tên người, nhưng không tài nào chạy được? mong các Pro chỉ giáo. Em đã từng lập 1 topic nhưng ko biết bị xóa đâu mất tiêu...hix. Mục tiêu là đưa chuỗi ví dụ như "Pham Thi Minh Thu" chuyển thành xâu "Thu Pham Thi Minh". Giả sử xâu tên đưa vào đã được chuẩn hóa như ví dụ. Cảm ơn các Pro nhiều ạ!

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    char chuoi[50];
    
    char chuyendoi(char s[50])
      {
      	int n;
      	char tam[10], ten[50]; 
      	
        tam[0]='\0';
      	n = strlen(s) - 1;
      	while (s[n] !=' ')
      	  {
      	  	strcat(tam, s[n]);
      	  	n = n -1;
      	  }
        s[n] = '\0'; 
        ten[0]='\0';
        strcat(ten, strrev(tam));
        strcat(ten, " ");
        strcat(ten, s);
        s[0]='\0';
        strcat(s, ten);
        return s;
      }
    
    void main()
      {
         printf("Nhap vao xau ban dau: ");
         gets(chuoi);
         printf("\n %s", chuyendoi(chuoi));
       }

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

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4.  
    5. char chuoi[50];
    6.  
    7. char *chuyendoi(char s[50])
    8.   {
    9.     int i = 0, n;
    10.     char tam[10], ten[50];
    11.    
    12.     n = strlen(s) - 1;
    13.     while (s[n] != ' ')
    14.     {
    15.         tam[i++] = s[n];
    16.         n--;
    17.     }
    18.  
    19.     tam[i++] = '\0';
    20.     s[n] = '\0';
    21.  
    22.     strcpy(ten, strrev(tam));
    23.     strcat(ten, " ");
    24.     strcat(ten, s);
    25.    
    26.     strcpy(s, ten);
    27.  
    28.     return s;
    29. }
    30.  
    31. void main()
    32. {
    33.      printf("Nhap vao xau ban dau: ");
    34.      gets(chuoi);
    35.      printf("\n %s", chuyendoi(chuoi));
    36.      getch();
    37. }
    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.

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

    Mình vốn trâu bò nên thử 1 cách không dùng các hàm trong string.h:

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. char buf[100];
    5. char *hoten = &buf[20];
    6.  
    7. //  cách này yêu cầu phải có vùng đệm trước <hoten>. Đó là lý do đặt họ tên ở vị trí 20 của buf
    8. char* chuyendoi(char* hoten)
    9. {
    10.     char *tenho = hoten;
    11.     char *eostr;
    12.     for (eostr = hoten; *eostr; ++eostr);   //  tìm vị trí cuối chuỗi
    13.  
    14.     //  Tìm khoảng trống cuối cùng, đồng thời copy về vùng đệm trước <hoten>
    15.     *--tenho = ' ';
    16.     while (eostr > hoten && ' ' != *--eostr)
    17.         *--tenho = *eostr;
    18.  
    19.     if (' ' != *eostr) return hoten;    //  Họ tên không có dấu cách????
    20.     *eostr = 0;                         //  Đánh dấu kết thúc chuỗi
    21.     return tenho;
    22. }
    23.  
    24. int main()
    25. {
    26.     printf("Nhap vao xau ban dau: ");
    27.     gets(hoten);
    28.     printf("\n %s", chuyendoi(hoten));
    29.     return 0;
    30. }

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

    Trích dẫn Nguyên bản được gửi bởi tuansaker3291 Xem bài viết
    Tình hình là mình muốn đảo tên lên trước họ và tên đệm trong một xâu tên người, nhưng không tài nào chạy được? mong các Pro chỉ giáo. Em đã từng lập 1 topic nhưng ko biết bị xóa đâu mất tiêu...hix. Mục tiêu là đưa chuỗi ví dụ như "Pham Thi Minh Thu" chuyển thành xâu "Thu Pham Thi Minh". Giả sử xâu tên đưa vào đã được chuẩn hóa như ví dụ. Cảm ơn các Pro nhiều ạ!

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    char chuoi[50];
    
    char chuyendoi(char s[50])
      {
      	int n;
      	char tam[10], ten[50]; 
      	
        tam[0]='\0';
      	n = strlen(s) - 1;
      	while (s[n] !=' ')
      	  {
      	  	strcat(tam, s[n]);
      	  	n = n -1;
      	  }
        s[n] = '\0'; 
        ten[0]='\0';
        strcat(ten, strrev(tam));
        strcat(ten, " ");
        strcat(ten, s);
        s[0]='\0';
        strcat(s, ten);
        return s;
      }
    
    void main()
      {
         printf("Nhap vao xau ban dau: ");
         gets(chuoi);
         printf("\n %s", chuyendoi(chuoi));
       }
    trước tiên bận cho tôi hỏi định dang tên như thế nào?
    có người 1 tên gồm 2 từ(Ví dụ Tuấn Anh, thu hường....) trong khi đại đa số chúng ta chỉ có tên gồm 1 từ như tôi(Thắng)...
    Đó mới chính là mấu chốt, cột mốc của vấn đề
    Thân MD5

    Tôi thấy nhiều bạn không đọc kỹ vấn đè cứ nhảy code luôn.
    đúng là đặc chưng của những người vội vàng, hấp tấp.Hiếu thắng. Do đó mà khó trưởng thành
    Đã được chỉnh sửa lần cuối bởi aydada : 28-09-2011 lúc 01:07 PM.

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

    Trích dẫn Nguyên bản được gửi bởi sha1 Xem bài viết
    Tôi thấy nhiều bạn không đọc kỹ vấn đè cứ nhảy code luôn.
    đúng là đặc chưng của những người vội vàng, hấp tấp.Hiếu thắng. Do đó mà khó trưởng thành
    1. Đừng post 2 bài liền nhau (dùng chức năng sửa để cho thêm vào)
    2. Đặc trưng chứ không phải đặc chưng
    3. Bạn phán cứ như thánh, chỉ dựa vào 1 đoạn code đóng góp mà moi ra được bao nhiêu tật xấu của người post
    4. Có vẻ bạn mới là người không đọc kỹ đề bài, khi chính chủ topic đã đưa ra 1 ví dụ liên quan đến tên kép và cách xử lý kèm theo là đảo mỗi từ cuối cùng lên đầu thôi.
    5. Muốn phân biệt từ nào thuộc về tên từ nào thuộc về họ thì chắc phải có 1 từ điển họ tên tiếng Việt chứ không thì vô vọng

  6. #6
    Ngày gia nhập
    08 2011
    Bài viết
    36

    Mặc định Đảo tên lên trước họ trong xâu họ tên?

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4.  
    5. char chuoi[50];
    6.  
    7. char *chuyendoi(char s[50])
    8.   {
    9.     int i = 0, n;
    10.     char tam[10], ten[50];
    11.    
    12.     n = strlen(s) - 1;
    13.     while (s[n] != ' ')
    14.     {
    15.         tam[i++] = s[n];
    16.         n--;
    17.     }
    18.  
    19.     tam[i++] = '\0';
    20.     s[n] = '\0';
    21.  
    22.     strcpy(ten, strrev(tam));
    23.     strcat(ten, " ");
    24.     strcat(ten, s);
    25.    
    26.     strcpy(s, ten);
    27.  
    28.     return s;
    29. }
    30.  
    31. void main()
    32. {
    33.      printf("Nhap vao xau ban dau: ");
    34.      gets(chuoi);
    35.      printf("\n %s", chuyendoi(chuoi));
    36.      getch();
    37. }
    Chân thành cảm ơn rất nhiều, mình đã sai lầm khi truy xuất cả xâu ký tự mà ko để ý là nó phải truy xuất từng ký tự trong xâu. Tiếc là ko hiểu sao mình ko thấy nút cảm ơn đâu. hix.

    p/s: bác nào vừa bảo em vội vàng hấp tấp ý nhỉ...hi. em đã ví dụ rất kỹ và đã viết giải thuật rất chi tiết trước khi code, bác nhận xét thế thì Pro quá ^^ Dù sao cũng cảm ơn các đóng góp của bác

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

    Trích dẫn Nguyên bản được gửi bởi tuansaker3291 Xem bài viết
    Chân thành cảm ơn rất nhiều, mình đã sai lầm khi truy xuất cả xâu ký tự mà ko để ý là nó phải truy xuất từng ký tự trong xâu. Tiếc là ko hiểu sao mình ko thấy nút cảm ơn đâu. hix.

    p/s: bác nào vừa bảo em vội vàng hấp tấp ý nhỉ...hi. em đã ví dụ rất kỹ và đã viết giải thuật rất chi tiết trước khi code, bác nhận xét thế thì Pro quá ^^ Dù sao cũng cảm ơn các đóng góp của bác
    Chính tôi đây bạn ạ.
    Tôi chí muốn giới thiệu mọi người về cách thức làm việc khoa học thôi, chứ không có ý dạy khôn ai cả.
    Bạn chỉ đưa ra được 1 ví dụ mà bắt người ta phải tổng quát hóa thành một quy luật tổng quát liệu như vậy có coi là hâp tấp, vội vàng, thiếu suy sét trước khi viết bài không?
    Thân MD5-SHA1

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

    Mặc định dùng istringstream

    Đú với fbchicken cho vui
    Có thể code như sau,nó xử lý khoảng trắng luôn :

    C Code:
    1.  
    2. // lttq
    3. //
    4. #include <iostream>
    5. #include <sstream>
    6. #include <string>
    7. #include <vector>
    8.  
    9. using namespace std;
    10.  
    11. int main()
    12. {
    13.     string cau;
    14.  
    15.     cout << "Nhap cau: ";
    16.     getline(cin, cau);
    17.  
    18.     istringstream bar(cau); // loi dung istringstream de dua cac phan nhap lieu roi rac vao bar
    19.    
    20.     vector<string> tu;
    21.     string foo;
    22.  
    23.     while (bar >> foo) tu.push_back(foo); // lay tung phan nhap lieu roi rac
    24.  
    25.     vector<string>::const_iterator dem;    
    26.     dem = tu.end() - 1; // lay tu cuoi cung
    27.     cout << *dem << " ";
    28.     for (dem = tu.begin();dem < tu.end()-1; ++dem)
    29.         cout<< *dem << " "; // xuat tu dau tien den tu gan cuoi
    30.    
    31.    
    32.     system("PAUSE");
    33.     return 0;
    34. }
    Nghe Metal và dịch thơ
    lttqstudy.wordpress.com

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

    Question vấn đề hiển thị chữ

    cho em hỏi, em cũng thử viết code đảo tên ra trước, nhưng có vài chữ hiển thị ký tự đặc biệt như dấu $ ở đầu, vài chữ thì có khoảng trắng, gõ dài hơn thì có ký tự khác
    Ví dụ: 'nguyen tan tai' -> ' tai nguyen tan'
    'nguyen dang khoi' -> '$khoi nguyen dang'

    đây là code của em:
    Code:
    #include "string.h"
    #include "conio.h"
    #include "iostream.h"
    int main()
    {
    	char fullname[50],fixed[50],temp[10];
    	int n,i;
    	cout<<"Nhap ten: "; cin.getline(fullname,50);
    	n=strlen(fullname)-1;
    	i=0;
    	while(fullname[n]!=' ')
    	{
    		temp[i]=fullname[n];
    		i++; n--;
    	}
    	temp[i+1]='\0';
    	fullname[n]='\0';
    	strcat(fixed,strrev(temp));
    	strcat(fixed," ");
    	strcat(fixed,fullname);
    	cout<<fixed;
    }

  10. #10
    Ngày gia nhập
    07 2011
    Bài viết
    59

    Trích dẫn Nguyên bản được gửi bởi lttq Xem bài viết
    Đú với fbchicken cho vui
    Có thể code như sau,nó xử lý khoảng trắng luôn :

    C Code:
    1.  
    2. // lttq
    3. //
    4. #include <iostream>
    5. #include <sstream>
    6. #include <string>
    7. #include <vector>
    8.  
    9. using namespace std;
    10.  
    11. int main()
    12. {
    13.     string cau;
    14.  
    15.     cout << "Nhap cau: ";
    16.     getline(cin, cau);
    17.  
    18.     istringstream bar(cau); // loi dung istringstream de dua cac phan nhap lieu roi rac vao bar
    19.    
    20.     vector<string> tu;
    21.     string foo;
    22.  
    23.     while (bar >> foo) tu.push_back(foo); // lay tung phan nhap lieu roi rac
    24.  
    25.     vector<string>::const_iterator dem;    
    26.     dem = tu.end() - 1; // lay tu cuoi cung
    27.     cout << *dem << " ";
    28.     for (dem = tu.begin();dem < tu.end()-1; ++dem)
    29.         cout<< *dem << " "; // xuat tu dau tien den tu gan cuoi
    30.    
    31.    
    32.     system("PAUSE");
    33.     return 0;
    34. }
    code này dùng thư viện lạ quá, chưa dùng mấy thư viện đó lần nào. Cfree lại báo không tìm thấy thư viện nên bó tay

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

  1. Hiển thị tên đăng nhập lên thanh status trong C#
    Gửi bởi vgc0001 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 12
    Bài viết cuối: 01-10-2016, 11:22 AM
  2. Cơ sở làm huy hiệu, bảng tên nhân viên, bảng tên mica, bảng tên ăn mòn, bảng tên thay tên
    Gửi bởi tranngocson186 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 25-05-2013, 08:37 AM
  3. Bài tập C Nhập một danh sách tên sau đó in ra tên họ, đếm xem có bao nhiêu tên họ Lý , Trần..()
    Gửi bởi trangbui trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 01-01-2013, 06:39 PM
  4. Database Cách nối tên bảng với tên biến trên procedure trong SQL
    Gửi bởi haucanpop6590 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 13-12-2012, 11:32 AM
  5. hiện tên các folder trong 1 đường dẫn định sẵn lên combobox
    Gửi bởi roy_k trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 16-05-2012, 03:51 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