Buchstabenfolge als ASCII ausgeben

Myth

Grünschnabel
Hiho,


und wieder einmal habe ich ein kleines Problem.Es geht um die Verarbeitung und Ausgabe von Buchstaben.

Ich möchte den Namen von einer Person einlesen und jeden einzelnen Buchstaben minus der Länge seines Namens rechen.Die Länge des Namens wird in einer Schleife nach jedem Durchgang minus 1 berechnet.

Bsp:

Name: dll (dll besteht aus drei Buchstaben,dem zufolge Länge=3)

d-3=97 (d steht im ASCII Code an der 100 sten Stelle;100-3=97)
l-2=107
l-1=108

Der berechnete Code wäre also: ajk

Dieser Code muss natürlich gespeichert werden.Ich habe eine CString Variable namens key angelegt.Speichert er mir mit diesem Source ajk in key?:

FRAGE:Ist der Source richitg?BITTE UM HILFE

CString name=0;
CString key=0;
double Test=0;

for(int i=0;i<name.GetLength();i++){
double x;
char temp,temp2;

if(Test==0){
x=name.GetLength();
Test=1;
}

temp=name-x;
temp2=(char)temp;

x=x-1;

key=key+temp2;


}
 
Wird vermutlich nicht kompilieren. Frage, wieso testest du deinen kleinen Schnipsel nicht einfach?

So, dann:

double? Als bool-Ersatz? Benutze ein bool oder meinetwegen BOOL für Test.
Benutze ein int für x, hier auch kein double!

temp=name-x;
temp2=(char)temp

wird auch nicht funktionieren. Benutze name.GetAt um das Zeichen an der Position zu bekommen.

Hast du bedacht, dass du bei extralangen Eingaben evtl. Werte UNTER 0 rausbekommst? Falls das nicht passiert, hast du auf jeden Fall bei jeder zweiten Eingabe Ergebnisse, die nicht nur aus Buchstaben bestehen (Stell dir als Beispieltext abc vor; a - 3 = 94, 94 ist kein Buchstabe).
 
Ich hab's

Hi,


danke für deinen Post.Ich war auf Arbeit und daher konnte ich es nicht selber debuggen.Der Tipp mit dem BOOL und dem int war brilliant.
Ich habe das name.GetAt nicht verwendet,da es auch so funktioniert hat.Das a-3 ein Zeichen ist und bei dieser Routine Zeichen herauskommen ist mir bewusst(da es nur ein Teil von etwas größerem ist).Hier ist der Source.Danke nochmal-jetzt funktioniert es so wie es soll.

Code:
BOOL Test= 0;
	for(int i=0;i<name.GetLength();i++){
	int x;
	char temp;

	if(Test==0){
	x=name.GetLength();
	Test=1;
	}

	
	temp=name[i]-x;
    

	x=x-1;

	key=key+temp;


	}
 
Oder kürzer:

Code:
CString s; //enthält Namen

for (int i = 0; i < s.GetLength(); i++) s[i] = s[i] - (s.GetLength() - i);
 
Zurück