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

Đề tài: Cho em hỏi về vấn đề này

  1. #1
    Ngày gia nhập
    11 2006
    Nơi ở
    Tiền Giang
    Bài viết
    28

    Post Cho em hỏi về vấn đề này

    Mình có thuật toán sau :

    1. Lấy mã ASCII từng ký tự chuỗi Name cộng dồn lại với nhau --> Lưu vào một biến (ví dụ : default_value)

    2. Sau đó, lấy giá trị này * chiều dài chuỗi Name --> Lưu vào biến dafault_value

    3. Lấy ký số đầu tiên của default_value cộng với default_value tính ở bước 2) . Tất cả nhân cho 16
    Code của em viết như sau (viết bằng MFC Visual C++)

    Code:
    	char rea_UserName[70]={0};
    	char rea_RegCode[40]={0};
    	unsigned int a[40];
    
    	int LenName=0;
    	int i=0;
    	unsigned int default_value=0;
    	
    	LenName=GetDlgItemText(IDC_EdtName,rea_UserName,70);
    
    	if (LenName < 1 || LenName >64)
    	{
    		MessageBox("----------===== Your name at least 1 chart and not over 64 chart =====-------- ","Oh !! Please enter User name again !! ");
    	}
    
    	else
    	{
    		
    		//Bước 1 : Lay ma ASCII cua tung ky tu chuoi Name
    		while (i<LenName)
    		{
    			default_value = default_value + rea_UserName[i];
    			i++;
    		}
    		
    		//Bước 2 : Lay gia tri cuoi cung * voi chieu dai chuoi Name
    		default_value = default_value * LenName;
    		
    	       //Bước 3 : Lay ký số đầu tiên của default_value
                  
                   ....
    
    		wsprintf (rea_RegCode,"%d",default_value);
    
    		SetDlgItemText(IDC_EdtRegCode,rea_RegCode);
    	}
    Em đã làm được bước 3 theo cách sau :

    Code:
    		unsigned int Temp = default_value;
    		
    		int j=0;
    		while (save !=0)
    		{
    			a[j++]=save % 10;
    			save = save/10;
    		}
    
    		default_value = (default_value + a[j-1])*16;

    Nhưng cách này hơi ngược ngạo vì khi chia lấy phần dư lưu vào mảng số nguyên thì nó sẽ đảo ngược lại con số ban đầu. Ví dụ :

    default_value = 14364
    mảng a[] = 4 6 3 4 1

    vì thế muốn lấy ký số đầu tiên của default_value bây giờ chính là lấy phần tử cuối cùng của mảng a (a[j-1])

    Bây giờ mình muốn làm theo kiểu string tức là :

    Code:
    - Chuyển default_value thành dạng chuỗi 
    - Sau đó lấy phần tử đầu tiên của chuỗi này
    - Chuyển phần tử này thành số
    thì phải làm sao ?

    Mong các bạn giúp đỡ dùm mình !

  2. #2
    Ngày gia nhập
    06 2007
    Bài viết
    4

    UINT ui = 0;
    char szString[64];

    // Step 1
    for (int i = 0; szString[i] != 0; i++) {
    ui = ui + szString[i];
    }

    // Step 2
    ui = ui*strlen(szString);

    // Step 3
    char buff[80];
    itoa(ui, buff, 10);
    ui = ui + buff[0] - 48;
    default_value = ui*16;
    Đã được chỉnh sửa lần cuối bởi half_life : 11-06-2007 lúc 07:31 AM.
    Khi khỏe mạnh thì sẽ bận rộn rất nhiều công việc. Lúc đau ốm là thời gian suy ngẫm lại cuộc đời.

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