S
soso
Jungspund
Hallo nochmal!
Wir haben leider noch ein Problem... nur eine andere Aufgabe^^:
Aber auch hier gibt es einen segmentation fault...
Das Programm soll bei einer Zeichenkette A mit A-B-A und B mit B-A-B ersetzten und + und - sollen bleiben... die next_iteration funktion soll mit einer anfangszeichkette z (bestehend aus A) mehrmals durchgeführt werden können...
Wir bitten um Hilfe!! mal wieder...
ciao
Wir haben leider noch ein Problem... nur eine andere Aufgabe^^:
Aber auch hier gibt es einen segmentation fault...
Das Programm soll bei einer Zeichenkette A mit A-B-A und B mit B-A-B ersetzten und + und - sollen bleiben... die next_iteration funktion soll mit einer anfangszeichkette z (bestehend aus A) mehrmals durchgeführt werden können...
PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Berechnet aus einer Zeichenkette die nächste Iteration, indem auf
* jedes Zeichen der gegebenen Zeichenkette, wenn möglich, eine
* Umformungsregel angewendet wird. Für das Ergebnis wird mit malloc()
* Speicher alloziert.
*/
char *next_iteration(char *str)
{
int i, lae;
char *str3;
str3 = malloc(5 * strlen(str) + 1);
for (i = 0; i <= strlen(str); i++)
{
lae = strlen(str3);
switch(str[i])
{
case 'A':
{
str3[lae] = 'B';
str3[lae+1] = '-';
str3[lae+2] = 'A';
str3[lae+3] = '-';
str3[lae+4] = 'B';
}
break;
case 'B':
{
str3[lae] = 'A';
str3[lae+1] = '+';
str3[lae+2] = 'B';
str3[lae+3] = '+';
str3[lae+4] = 'A';
}
break;
case '-':
str3[lae] = '-';
break;
case '+':
str3[lae] = '+';
break;
}
}
return str3;
}
/* main-Funktion. Benutzt den ersten Kommandozeilenparameter als Anzahl
* der zu berechnenden Iterationen und berechnet die Zeichenkette nach
* so vielen Iterationen, ausgehend von der Zeichenkette "z".
*/
int main(int argc, char *argv[])
{
int i, x;
char *p, *s;
char *z;
if (argc == 0) return 0;
x = atoi(argv[0]);
z[0] = 'A';
z = malloc(sizeof (z[0]));
p = next_iteration(z);
if (i > 1)
for (i = 2; i <= x; i++)
{
s = next_iteration(p);
free (p);
p = s;
}
printf("%s",z);
}
Wir bitten um Hilfe!! mal wieder...
ciao