Hej, I princip handlar det om att skriva talet (eg. talet - 1) i basen 26. Det är inte omöjligt att det finns en färdig funktion för detta, men du kommer då att få tecknen 0 - 9 och A - P (om jag räknar rätt) i strängen. Sedan får du själv loopa genom strängen och byta ut siffrorna 0 - 9 mot bokstäverna A - J och byta bokstäverna A - P mot K - Z. Fast den klarar inte basen 26. I princip är lösningen: Tack Niklas! Ah, ok. Det hänger ju ihop med att A räknas som 0 och B som 1, osv. Ja, det skulle man kunna göra. Jag får se hur det blir. Rekursivt, kanske:Räkna med bokstäver
Jag skulle behöva hjälp med att skriva en funktion som tar en siffra som argument och returnerar siffran i bokstäver. Ungefär såhär:
<info>
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
10 J
11 K
12 L
13 M
14 N
15 O
16 P
17 Q
18 R
19 S
20 T
21 U
22 V
23 W
24 X
25 Y
26 Z
27 AA
28 AB
29 AC
30-42 AD-AZ
ZA
ZB
ZC
ZD-ZZ
AAA
AAB
AAC
AAD-AAZ
osv...
</info>
Någon som kan hjälpa till med tankegången?Sv: Räkna med bokstäver
Edit:
Funktionen finns: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemConvertClassToStringTopic19.aspSv:Räkna med bokstäver
"toBase
The base of the return value, which must be 2, 8, 10, or 16."Sv: Räkna med bokstäver
tal=123;
base=26;
int temp;
string s;
while(tal>0){
temp = tal % base;
tal=(tal-temp)/base;
s=integerToChar('a'+temp) + s;
}
Eftersom jag inte är någon stjärna på C# så får du göra så integerToChar representerar rätt grej.
Koden helt otestad, kan vara fel lite varstans.Sv:Räkna med bokstäver
Det fungerar nästan så som jag vill ha det.
Såhär blir utskriften:
<info>
A-Z
BA-BZ
CA-CZ osv.
</info>
Men AA-AZ kommer inte med. Fast det kanske är bättre att det går från A-Z till BA-BZ direkt!?
Såhär ser funktionen ut:
<code>
public string GetAlpha(int number)
{
int temp = 0;
string s = "";
if(number == 1)
{
return "A";
}
else
{
number--;
while(number > 0)
{
temp = number % 26;
number=(number - temp) / 26;
s=(char)(65 + temp) + s;
}
}
return s;
}
</code>Sv: Räkna med bokstäver
Exakt vilken lösning man bör göra beror ju på tillämpning, men en variant är att att padda med A till en given längd. (B blir AAAB, t.ex.).Sv:Räkna med bokstäver
Jag tackar än en gång och sätter inlägget till Löst.Sv: Räkna med bokstäver
public string GetAlpha(int number)
{
number--;
char c = (char)((int)'A' + number % 26);
if(number / 26 == 0)
return c;
else
return GetAlpha(number/26) + c;
}