PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : array incrementieren...



Taktloss
09-05-2004, 13:43
Hi all,
ich brauche einen Algorithmus mit wessen hilfe ich ein ganzes array inkerementieren kann.
soll dann so aussehen:
a
b
c
....
aa
ab
ac
....
usw.
Ich habe versucht mir sowas selber zu schreiben, allerdings gestaltet sich die Sache ein wenig schwieriger :rolleyes:
Kennt da jemand einen fertigen algo oder ein GNU projekt wo man sie so einen algo "klauen" (mit verweis auf autor natürlich) klauen kann?
MfG. Takt

Lin728
09-05-2004, 14:01
Nein, kennen tu ich sowas nicht wirklich, aber sollte doch nicht so schwer sein..

Du willst also nichts anderes machen als aus a->b und aus z->aa stimmts?
Nun, das Problem dass du hast ist, dass du aus einem zeichen 2 machen wilst und das ganze somit eigentlich keine klassische Array Anwendung mehr ist. Wenn du bei ein-zeichen bleibst, ist das ganze ziemlich easy, andernfalls würde ich dir eine Liste empfehlen.

Für einzeichen-Programme, da hast du aber das Problem, dass er z in unsichbare Zeichen umwandelt.


int len, i;

for(i=0; i < len; i++)
{
array[i]++;
}


Für mehrzeichenumwandlung kann ich dir nur einen Ansatz liefern:

Du machst mal ein Array wo Pointer auf die einzelnen Zeichenketten drinnen stehen (welche einzeln inkrementiert werden sollen.
Du wanderst jetzt einfach dieses Array durch:



char * stringElements[20];

//array füllen... (unsauber!)
stringElements = (char*) malloc(10);
....
...

int len, i, strlen;

for(i=0; i < len; i++)
{
strlen = strlen(stringElements[i]);

//Es kommt auf das letzte Zeichen an, ob String verländert werden muss.

if(stringElements[i][strlen-1] != 'z')
{
stringElements[i][strlen-1]++;
}else
{
char* old_mem = stringElements[i];

stringElements[i] = (char*) malloc(strlen+1);
strcpy(alle zeichen vom oldmem in neuen reinkopieren);
stringElemenzs[i][strlen] = 'a'; //Neues Zeichen ist ein a -> auchtung wegen array-indizierung.

free(old_mem);

}

}


Lg