Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Bài toán về vị trí từ trong từ điển.

Đã tạo 10:51 07-04-2017 492 lượt xem 3 bình luận

Hí hí, chào mọi người.

Em có 1 bài toán mà e vẫn chưa tìm được cách giải quyết, mong m.n giúp ạ.

Đề bài: Cho biết vị trí của 1 từ , sau đó hiển thị ra từ đó , vị trí được sắp xếp theo A-Z giống trong từ điển.
VD: 1 là A, 2 là B, 26 là Z, 27 là AA, 28 là AB, 29 là AC, giống thứ tự cột trong excel ý.
Em làm rồi mà lạ ở chỗ nó chỉ chạy đúng từ 1-> 701, nghĩa là 2 chữ cái, từ 3 chữ cái trở lên là bắt đầu sai.....

Thuật toán của em:

void daychu(long long number)
{


    long long k;
    k=number;

    while(k>26)
    {
        k=k/26;

    }

    switch(k)
    {
        case 1: cout<<"A"; break;
        case 2:cout<<"B";break;
        case 3:cout<<"C";break;
        case 4:cout<<"D";break;
        case 5:cout<<"E";break;
        case 6:cout<<"F";break;
        case 7:cout<<"G";break;
        case 8:cout<<"H";break;
        case 9:cout<<"I";break;
        case 10:cout<<"J";break;
        case 11:cout<<"K";break;
        case 12:cout<<"L";break;
        case 13:cout<<"M";break;
        case 14:cout<<"N";break;
        case 15:cout<<"O";break;
        case 16:cout<<"P";break;
        case 17:cout<<"Q";break;
        case 18:cout<<"R";break;
        case 19:cout<<"S";break;
        case 20:cout<<"T";break;
        case 21:cout<<"U";break;
        case 22:cout<<"V";break;
        case 23:cout<<"W";break;
        case 24:cout<<"X";break;
        case 25:cout<<"Y";break;
        case 26:cout<<"Z";break;
        }
        if(number<=26) exit(0);
       daychu(number-(k*26));
}

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
K9 SuperAdmin đã bình luận 00:08 08-04-2017

hoặc

#include <bits/stdc++.h>
	using namespace std;
	int main()
	{
		char st[50];
		cout<<"Enter a string : ";
		fflush(stdin);
		cin>>st;
		int n = strlen(st);
		long long sum=0;
		for (int i=n; i>0; i--)
		{
			sum += pow(26,i-1) * ((int)(st[n-i] - 64));
		}
		cout<<sum;
	}

 

K9 SuperAdmin đã bình luận 21:15 07-04-2017
 #include <iostream>
#include <conio.h>
using namespace std;
int main()
{
char ch[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char chu[100]={' '};
unsigned int k;
int i=0;
cout<<"k = "; cin>>k;
if (k==26) cout<<'Z';
else
{
while (k != 0)
{
int temp=k%26;
chu[i]=ch[temp-1];
i++;
k=k/26;
}
for (int j=i-1; j>=0; j--) cout<<chu[j];
}
getch();
}

 

K9 SuperAdmin đã bình luận 19:21 07-04-2017

vẫn k hiểu cụ thể bài toán này là gì nhỉ. thấy có vẻ đề và cach làm ngược nhau @@

Câu hỏi mới nhất